妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

UE4.13

UE4 -> HTML5出力実験メモ

3DゲームのHTML5化(妹が前回のUE4ぷちコンに出したやつ) UE4.13で動いていたものが4.14や4.15だと動かない タイトル画面も出ない 4.13だと動いてるように見える でもWindows版よりかなり遅い ゲーム開始10秒ぐらいで必ずゲームが止まる ※止まった後もBGMは…

OpenAssetOrgのアセットで2Dゲームを作る⑨ キルゾーンによる矢の消滅

「撃った矢が画面外に飛び出した後もどこかをさまよってしまうので、キルゾーンを設置して消滅してもらうことにした。キルゾーンという言葉は軍隊からきてるらしいけど、ゲームエンジンではそこに入ったアクターを消滅させる、ゲーム世界の回りに設置する境…

OpenAssetOrgのアセットで2Dゲームを作る⑧ ProjectileMovementComponentの移動制限

「矢の形が変になってる問題は、途中で一時停止してみたところ、やっぱりY方向にずれていたことがわかった」妹「でもなんでズレるんだろ? キッチリまっすぐ飛んだやつは跳ね返っても、まっすぐに飛ぶと思うんだけど」「理屈としてはそうなんだけど、多分高…

OpenAssetOrgのアセットで2Dゲームを作る⑦ タイルマップへのあたり判定設置

「せっかく壁があるのに矢が貫通してしまうので、コリジョンを設置する。タイルセットにはコリジョンの作成機能があるので、それを使うのが一番簡単」docs.unrealengine.com「だいたいここに書いてある通りにやるだけでいい」「そのタイルを選択した状態で、…

OpenAssetOrgのアセットで2Dゲームを作る⑥ マウスカーソルに向けて矢を放つ

「シューティングというと、ショットの角度は固定で自機が動くパターンが多いけど、今回は自機は動かずに射撃の角度を変える方法で、マウス操作でも遊びやすいような感じにしようと思う」「最初にマウスカーソルの表示をしてから、クリックした時に自機がカ…

OpenAssetOrgのアセットで2Dゲームを作る⑤ 矢の作成と発射

「今年中にゲームの形にするつもりが、矢の発射までしかできなかった。仕方がないのでこれは元々矢を撃つゲームだったということに…・・・」妹「そんな馬鹿な」「矢の構造は3Dゲームの場合とあんまり変わらない。変な方向に回転しないように気をつける必要は…

OpenAssetOrgのアセットで2Dゲームを作る④ タイルセットで背景を作る

「そろそろ設定も飽きてきたので、見た目の部分を作っていく。どんなゲームを作るかは特に決めてなかったんだけど……」妹「決まってなかったの!?」「ミニゲームだから、なんでもいいといえば良かったわけで。画面にグーチョキパーのアイコン置いてジャンケ…

OpenAssetOrgのアセットで2Dゲームを作る③ ウィンドウサイズとフレームレート

「カメラの設定だけしてウィンドウの大きさを変えてなかったのでこれも設定。これがないとウィンドウの横に黒帯がでてしまう」妹「そんなの設定したことないけど……」「それはカメラのとこでアスペクト比(縦横の比率)を1.777から変えてなければキッチリ収ま…

OpenAssetOrgのアセットで2Dゲームを作る② 2D向きのカメラ設定

「UE4で2Dゲームを作ろうとする時に、ちょっとめんどくさいのがカメラの設定。標準の2Dテンプレートだとキャラクタにカメラがくっついてるけど、今回は1画面で完結するようにゲームを作りたい。そうすると独立したカメラの方が便利」「3Dの場合はZ軸は重力…

OpenAssetOrgのアセットで2Dゲームを作る① プロジェクトの作成

「使い方がわかったところでちょっとしたミニゲームを作ってみようと思う。今回はアセットをなるべく自作しない方針で」「まずがプロジェクトの初期設定。これはblankから作ってる」妹「2D Side Scrollerじゃなくて?」「じゃなくて。別にそれでもいいんだけ…

Paper2Dで画像を綺麗に表示する

「昨日ぼやけた感じになってた画像を綺麗にするわけだけど……」妹「あ、そういえばそんな話を機能別サンプルの中で見かけたことありますぞ」妹「これじゃない?」「あっほんとだ……これだ……」 「絵がぼける問題はテクスチャアセットの設定。個別のスプライトじ…

Paper2DのFlipBookを作成する

「ちょっと録画が上手く行かなかったけど、とりあえずFlipBookを使ってこういうアニメをさせる。たぶんこのブログではFlipBookまだ取り扱ってなかったはず」妹「アニメはSpriteStudioで動かしてたから」「パーツ単位のアニメの場合はそうなんだけど、コマ毎…

ExtractSpritesで、スプライトシートからの切り出し方を細かく設定する

「昨日はスプライトを全部切り出したんだけど、やっぱり使う分だけの方が面倒がなくていいかも……と思い直したので、今回はピンポイントで必要な分だけ抜き出す」「全体をテクスチャとして読み込んで、ExtractSpritesというコマンドを選ぶところまでは同じ。…

OpenGameAssetのドット絵をUE4に読み込む

「今日は昨日紹介したサイトから絵をダウンロードしてきて、それをUE4にインポートするところまでやろうと思う」opengameart.org「今回選んだのは、このドット絵アセット。キャラクターと背景がセットになってて、そのキャラクターの方を入れてみる」「どの…

水のマテリアル研究⑭ IFノードを使った色の塗り分け

「ニュース見てたら、この水あんまり見かけない感じのマテリアルだなと思って見てたんだけど、よく考えたらニュースだから普通に海の映像撮ってただけということがあって……」妹「わかる。わたしも本物の木はコリジョンがよくできてるなあと感心している」「…

水のマテリアル研究⑬ 反射ではなくベースカラーで対処する案

「HTML5でもちゃんと表示できる水マテリアルの2つ目の案。そもそも反射しない水を作ろうと言うもの。波模様をそのままベースカラーに入れる」妹「白黒の模様に、色をつけてるの?」「最初は画像自体に色の付けようとして、加算レイヤで重ねようとしたんだけ…

水のマテリアル研究⑫ 反射しそうなところにベースカラーで色をつける

「反射してるとこって、光を反射してちょっと白っぽくなってるから、白くすればいいんじゃないかなあ……という考え方で作ったマテリアル。これはHTML5の表示。反射とは違うから、緑のブロックの近くが緑になったりはしてない。一律に白っぽくなる」妹「あー、…

水のマテリアル研究⑪ HTML5にすると金属が鏡面反射してない

「だいたい水の構造がわかったので、懸案事項の1つだった、HTML5だと水がなんか変だという問題に着手する」「やっぱり水の色が変。というか、メタリックの数値が効いてない感じがする」 「謎の要素とかがないようにシンプルに組んだけど駄目だった。パソコ…

水のマテリアル研究⑩ ノーマルマップの合成

「これまでの研究で、M_LakeWater_01マテリアルの構造はだいたい解明できたけど、もう1つちょっと変なのが残ってる」「2つのノーマルマップをAddノードで接続してる。これは2つの法線ベクトルの中間、足して2で割ったような角度になる。同じのを2つ足し…

水のマテリアル研究⑨ ノーマルマップの色が場面によって違う理由

「ノーマルマップの画像っていうのは、青みがかった灰色が初期値、つまり法線をいじってない状態になるんだけど、これがUE4で読み込むともっと濃い青の画像になる。その理由を図にするとこんなかんじになる」「要するに画像にマイナスの色というのがなくて、…

水のマテリアル研究⑧ 数字やテクスチャの調整はマテリアルインスタンスを作ると速い

「昨日のやつで、ノーマルマップがどんなのでも波に見えるんじゃないか? という疑問があったので、ちょっと試してみた。その結果、ただの十字状ノーマルマップだと水には見えないというのがわかった」妹「そりゃあそうなるでしょう……」「で、こういうのを試…

水のマテリアル研究⑦ 自分でノーマルマップを作る

「ではノーマルマップを自分で作ってみよう、って話になるんだけど、といってもRGBを法線のベクトルと考えてイラストを描く……なーんてことは、人類にはちょっと難しい」妹「とすると……ZBrushとかで水面を作るとかしないと駄目なのかなあ?」「それも含めて、…

水のマテリアル研究⑥ ノーマルマップで生成される波

「いよいよ一番むずかしそうな、ノーマルマップの部分に入っていく。ノードのほとんどがこのノーマルマップに関わってる」妹「ノーマルマップなってなんだっけ? なんか聞いたことあるような気はするんだけど」「ポリゴンの形を変えずに、光が反射する方向を…

水のマテリアル研究・番外編 Motion_4WayChaosで変な画像を表示する

「Motion_4WayChaosの動作は、別の画像に差し替えるともっとわかりやすくなるのでは? と思って、適当な矢印画像を作ってみたんだけど、あんまりわかりやすくはならなかったかも」妹「すけた矢印がたくさん動いてるってのはわかった」「本当は進行方向に合わ…

水のマテリアル研究⑤ Motion_4WayChaosというマテリアル関数の仕組み

「水マテリアルのノーマルとラフネスのところは、ノード数はそんなに多くなさそうに見えるんだけど、途中にMotion_4WayChaosというマテリアル関数が入ってて、この中身が結構ボリュームあるから複雑になってる。でも波がうにょうにょ動く部分なんで重要」「…

水のマテリアル研究④ ワールド座標を使ったマテリアル

「マテリアルの中にワールド座標(WorldPotision)っていうノードがあるんだけど、これが結構重要で、水のマテリアルを見ると、ラフネスとノーマルの複雑なやつの最初も全部これになっている」「これは”そのピクセルがワールド座標でいうとどのへんなのか?”を…

同じHitイベントが1フレームに2回発生する原因と対処法

「実は昨日の実験の最中に、ティックの発生タイミングとは別の問題に気付いてしまった。記事にしたかどうかは忘れたんだけど、妹が作ってたアクションゲームの試作で、1フレーム2回Hitイベントが起きるっていうバグがあったよね?」妹「あったよ。パンチした…

Tickイベントの実行順・ティックグループの謎

youtu.be ブループリントマニアックス from Masahiko Nakamura www.slideshare.net「先日紹介したアンリアルフェスの動画を見てたんだけど、まず気になったのがこのブループリントマニアックスのセッションで紹介されてた、ティックグループ。スライドの方で…

GooglePlayでの公開には、UE4.13.2以降のバージョンが必須に

libpng v1.0.66、v.1.2.56、v.1.4.19、v1.5.26 以降に移行の仕方について - UE4 AnswerHub「先日の4.13.2アップデートだけど、どうもあのバージョンを入れてないと、GooglePlayっていう、Androidスマートフォン用の公式サイトに登録出来ないようになったみた…

HTML5用の水マテリアル研究

「しばらく進んでなかったUnrealEngine4のゲームのHTML5出力計画だけど、ラーニングのとこにある"水面の表現"のとこにあるサンプルアセットをHTML5化して実験したところ、M_LakeWater_01_Instを使うといい感じに出来ることがわかった」妹「あれおかしいな。…

UE4.13.2のアップデート情報

forums.unrealengine.com Fixed! UE-37704 Crash opening packaged project on iOS Fixed! UE-37249 MallocPoisonProxy can result in a memory stomp for aligned allocations in Debug and Development Fixed! UE-36573 Need to update to libpng for Andr…

デリゲートとイベントディスパッチャーの仕組み

妹「カスタムイベントをバインドしようと思うと、ちらほら"デリゲート"って単語が出てくるんだけど、これは何なの?」docs.unrealengine.com「沢山の関数を登録して、それを後から呼び出して実行するやり方のこと。UE4のブループリントの場合は関数じゃなく…

コンポーネントとしてGameBehavierを追加する

youtu.be妹「この動画も気になるんだよ。GameBehavier? とかいうの。なんかクラスにくっつけるだけで破壊出来るようになったりしてるでしょ。こういうのがやりたいんだよ」「クラス側でやるとまずいの?」妹「敵はそれでやってたんだけど、例えば落ちてるア…

LinerDampingの動作確認

「昨日のLinerDampingがどういうことなのか気になったので、さらに追加テストを実施した」 「というかんじで、赤い方のLinerDampingを増やしておくと、やっぱり普通の重力落下も遅くなってる」妹「やっぱり物体の動くを遅くしたり、速くしたりする設定なのか…

Adding Hover Componentの動画で学習

妹「Component作るっぽい動画がいくつか見つけたんだけど、英語->日本語字幕ではさっぱりわからん。でも、やりたいことが出来そうな気配は漂ってた!」「漂ってたんだ。じゃあとりあえずこの動画から見ていくことに」docs.unrealengine.com妹「ホバーするコ…

ActorComponentのシンプルな活用法

妹「ActorComponentってのがよくわからないんだよ。2回ぐらい挑戦したみたんだけど、やっぱりよくわからん」「どういうことをやろうとしてるの?」妹「クラスの継承を使わずに同じことをする……みたいな? 多分コンポーネントを作れば出来ると思うんだけど」…

ThirdPerson Action Platformer プロジェクトの紹介

forums.unrealengine.com「英語フォーラムにプラットフォーム型のゲームプロジェクトを公開してる人がいたので、今日はその紹介」妹「プラットフォーム型っていっても、3Dなのか」「3Dのプラットフォーム型ゲーム。ジャンプアクションというか。中身は全部ブ…

HTML5用の水面調整

imoue.hatenablog.com の話の続き妹「ちょっと水面のマテリアルを別のに変えてみたんだけど、これでHTML5にするかどうなるだろ?」「今度は水っぽいね。砂っぽくはない」妹「でもちょっと光の反射がきついかなあ……」 Windows版で表示したもの「反射自体はあ…

UE4でSpriteStudioのロゴを表示する・その2

imoue.hatenablog.com「昨日のでだいたい出来てるんだけど、一応ロゴを表示してから、ゲーム用のレベルに移動というのを通してやってみる」「まずアニメーションの設定で、デフォルトだとinになっているから、これをinoutに変える。ロゴが出てきて、その後消…

UE4でSpriteStudioのロゴを表示する

「今日はSpriteStudioのIndie版を使う時の条件、最初にロゴの表示するやつの手順を確認をしようと思う。バージョンは、UE4.13.1、SpriteStudio5.7、SS5PlayerForUnrealEngine4 1.2.2」妹「ゲームを売り出す時に必要なんだっけ?」「無料でもゲーム作品を出す…

AlembicでBlender→UE4のインポートをちょっとだけ試してみた

「UE4.13からAlembicっていう、FBXとは別の新しい形式が使えるようになって、Blender2.78でも対応したみたいなんで、それを今日は試してた」妹「FBXって色々問題の起きる困ったやつだよね? ようやく別のに対応したんだ」「これがBlerderで適当に作ったメッ…

HTML5でのセーブデータの扱い・その2 他のゲームとの区別方法

「HTML5のセーブデータの扱いなんだけど、別のゲームとの区別はどうなってるんだろう、と思ってちょっと調べてみた」妹「他のゲームとの区別?」「例えば、妹のゲームと兄のゲームをHTML5パッケージ化して、同じホームページに置いたとする。妹のゲームで出…

HTML5でのセーブデータの扱い

妹「そういえばHTML5ってやつでちょっと気になってることがあって、あれってセーブデータってどうなってるのかな? インターネットで保存されるの?」「UE4に標準で入ってるセーブ機能を使った場合だと、プレイヤーのパソコンに保存される。そのどこかという…

ALT+ENTERでの画面拡大は、Set Input Mode UI Only状態では効かない

「そういえば、ブログには書いてなかったけど、ALT+Enterキーでの画面拡大が、何故か妹の作ったやつでは効かなかったという問題があったんだけど……」妹「あった。それで録画の時に大変苦労した」「あれはプロジェクト設定で、AltEnterTogglesScreenというと…

とんびとあぶらあげ HTML5化実験

「先日妹が作ったゲームをHTML5用にパッケージ化してみようと思って、一応成功はしたんだけど……なんかこんな感じになった」妹「今回は変数とかも全部英語にしてあるからバッチリ。……って、地面が砂になってるじゃないか!」「なんかこうなってた。多分水のマ…

UE4.13.1がリリース

forums.unrealengine.com「今回は修正が70箇所ぐらいある」妹「やたら多いね」「このブログで取り上げた問題とは関係ないとこみたいだけど、クラッシュするやつとか、4.12.5のプロジェクトを4.13で読みこんだ時の不具合とか、色々あるらしい」妹「日本語のや…

サウンドキュー機能を使って音の有効活用をする

docs.unrealengine.com妹「さいきんサウンドキューというやつの使い方がわかってきて、これで音作りがだいぶ楽になったんだよ」「なんかむずかしそうで使ったことない……」妹「わたしが使えるのも、そんなにイロイロではないけど」妹「まずループするやつ。音…

UE4.11以降でHTML5パッケージ化に失敗する場合の対処法

「昨日なぜかHTML5のパッケージ化が上手くいかなくて、プロジェクトの設定をどうやってもこういうエラーが出てた。調べてみると、4.13だけじゃなく、4.11と4.12もそうだった。4.10は平気だった」>> UATHelper: パッケージ化 (HTML5): Program.Main: ERROR: A…

「Retriggerable Delay」で、もう1回ボタンを押したらDelayの待ち時間をリセット

妹「だいぶ前に兄に聞いた時は、そういうノードはないんじゃない? って言われたんだけど、実はあったというやつ」妹「何をしようとしてたかというと、ボタンを押したらブレーキフラグを立てて、一定時間立つとそのフラグが解除される。その一定時間待つのに…

数字の足りない桁をゼロで埋める方法「Right」

妹「こういう感じで、時間とか表示する時に、数字がひと桁だったら0を入れて表示したいことって、よくあるんだけど……」妹「今回は色々考えた結果、文字列を加工したらいいのでは? と思って、そういうブループリントを組んだんだけど、もっと良い方法あるん…