読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

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

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

UE4のブループリントと構文木の図はよく似ている

「今日は遺伝的プログラミングについて調べてたんだけど、なんかすぐにブループリントで実装できるサンプルが見つからなかったので小休止」妹「こないだ動画を見たやつ?」「あれは遺伝的アルゴリズムで、遺伝的プログラミングというのはその強化版みたいな…

ブループリント製のマッチ箱脳(2)

「昨日の分に学習の仕組みと、あと現在のマッチ棒状況の表示機能を加えた。コレでニューラルネットワーク的なアレになったはず。今回はマッチ箱Aを整数型、マッチ箱B・C・Dを構造体として作った。ただ構造体は一部だけ書き換えるのが面倒くさいので、2つの整…

アクターじゃないクラスを生成する方法

「AIの仕組みをUE4のブループリントで実装してみようと思ったんだけど、その前段階としてちょっと困ったことがあったんで、今日はそれのやり方を調査してた」妹「困ったこと?」「なんというか、アクターをスポーンさせるのは普通に出来るし、やり方も色んな…

2つのIntegerを組み合わせて、より大きな整数を作る(表示編)

「疑似巨大整数システムは一応データ的にはそれっぽくなってたけど、それっぽく表示も出来るようにしてみた。9999万9999までの数字を2つつなげた仕様。+5000万1 と -1000 を計算させて、正常に変化してるのを確認した。3000億超えの数字だから、通常の32bitI…

2つのIntegerを組み合わせて、より大きな整数を作る(改良版)

「昨日のやつを色々試していたら、問題が起きる場合があったので修正した」妹「今日のは後半がブランチになってるね」「上の桁と下の桁の数字を比較して判定してたんだけど、先に上の桁を変えると、下の桁を計算する時には判定結果が変わっちゃってるんだよ…

2つのIntegerを組み合わせて、より大きな整数を作る

「2つのIntegerをくっつけて、より大きな変数を作り出す実験をしてみた。ただし1つの変数が0~9しかないから、数としてはあんまり増えてない。理屈の確認用」妹「-100から始まって、次が-9-9?」「これは仮の表示だから、上の桁が0以外の時は下の桁の符号を…

OpenAssetOrgのアセットで2Dゲームを作る(26) マウス押しっぱなしでの弾発射

「とりあえずUE4ぷちコン用のサプライズなネタも思いつかないことだし、とりあえず作ってたゲームの改良をしている」妹「矢の量を増やしたの?」「矢を増やしたというか、マウスクリックじゃなくて、マウスドラッグで発射するように変更した。押しっぱなしで…

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

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

GameModeとGameStateの、Baseとの違い

「GameModeと別にGameModeBaseが出来た問題を追いかけたんだけど、GameModeの方にはマルチプレイヤー対戦用の機能が入ってるらしい、ということしかわからなかった」妹「ソースコードとか言うのを調べてみては?」「調べた結果がそれなんだよ。なんというか…

どんなことがあってもY軸を固定するコンポーネント

「なんとなくコンポーネント作りたい欲が出てきたので、アクターにくっつけると、どんな時でも指定したY座標をキープするコンポーネントを作ってみた」妹「ヘンな欲……でもそれなんか意味あるの? 2Dゲーム用だとしても、物理とかだったら固定出来ると思うし…

クラスの継承とタグの扱い

「アクターに付けたタグの扱いについてちょっと勘違いしてて、クラスのデフォルトで設定したタグは、あくまでデフォルトで、配置した後に足したり消したり出来るから、個別に色々やっても大丈夫なことがわかった」「まず基本クラスにタグAとタグBの2つをつ…

GetAllActorOfClassからの絞り込み

「昨日のだとアクター全部を落下させる形になってしまうので、落下させるアクターと、させないアクターと区別する方法を考える」「一番簡単なやり方はこれ。Actorクラスじゃなくて、特定のクラスで絞り込む方法。一番ノードが少ないし、動作的にも多分速い。…

BlutilityはActorのカスタムイベントとして作る方が自由度高い

unrealengine.hatenablog.com妹「なんて読むの?」「ブルティリティ……かな。BlueprintUtilityを略した造語だと思うんだけど、とにかくエディタ上でブループリントが実行出来るというもの。詳しい手順は上記のブログがわかりやすい」妹「エディタ上で実行って…

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

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

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

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

UE4.14.0 preview1のTSetとTMap状況

「先日TMap型の変数が作れないという記事を書いたけど、あれが実は作れるということがわかって……」「実験的な機能だから、エディタ設定でここにチェックを入れないと駄目だということがわかった」妹「じゃあもう使えるの?」「作れるけど……使えない」妹「?…

4.14でのTMap型サポートはまだ限定的?

「4.14の機能紹介にこんなことが書いてあったんで、詳細パネルをつつき回してみたんだけど、どうもC++から作ったTMap型に、詳細パネルからデータを追加したり出来るだけで、肝心のTMap型自体を作るのはブループリントとエディタだけでは無理っぽい気配だった…

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

妹「カスタムイベントをバインドしようと思うと、ちらほら"デリゲート"って単語が出てくるんだけど、これは何なの?」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のプラットフォーム型ゲーム。ジャンプアクションというか。中身は全部ブ…

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

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

『とんび と あぶらあげ』マップの端に関する問題

「マップの端っこで風に吹き戻されるのは、あれでプレイエリアを制限してるの?」妹「あれ以上広げるとわけわかんなくなると思うんだよね。迷子になるし、油揚げの密度の問題もあるし」「テストプレイ用の初期バージョンだと遠くにいくと油揚げなくなってた…

アニメーションブループリント猫

「今日の進捗状況。アニメーションブループリントで、攻撃を始められるようになった。ただしやめる設定はしてないからやめてくれない」妹「アニメーションブループリント使うんだ。あれなんかよくわからないんだけど、普通のブループリントからアニメをさせ…

Lerp をさらにもっといい感じにする Ease

妹「数字をいい感じにしたいんだよ。上手く説明できないんだけど、とにかくいい感じに数字を変化させたいというか」「それはEase的な話かなあ……」[UE4] 動きに緩急をつけるEaseノードの紹介 | historia Inc - 株式会社ヒストリア「AとBをAlphaのピンをつなぐ…

小さい時ほど数字を大きくする・Larp と NormalizeToRange 応用編

妹「小さい時ほど大きくなるような数字が欲しいんだよ。こう、スピードが遅い時は大きい数字になって、速い時ほど小さい数字になるのがいいんだけど」「なんだかよくわからんけど、たぶん昨日の応用の話のような気がする」 「Lerp は、A と B の数字を入れ替…

謎ノード解説『Lerp』『NormalizeToRange』

妹「あとLerpもよくわかんないんだけど。昨日と同じ、ランドスケープマウンテンのサンプルなんだけど……」妹「なにがわからないかというと、まず読み方がわからない」「読み方……って言われてもこれ略語だから、どうなるんだろ? Linear interpolationを略して…

ランドスケープサンプルの、徐々に角度を変える仕組み

妹「ランドスケープのサンプルを見て飛び方の調査をしてるんだけど、よくわかんないノードがある。いっぱいある」「日本語のドキュメントがないやつかな」妹「日本語のがなかったり、日本語なんだけど意味がわからなかったりした。角度関係っぽいんだけど。R…

ConstructionScriptから別のアクターをスポーン出来ない

妹「……というわけで大きさを調べようとしたんだけど、ConstructionScriptからActorがスポーン出来なくて、スポーン出来ないとGetActorBoundsが使えないから大きさが測れないよ」「そういえばそうだったかも」togetter.com「ということで、ConstructioScript…

GetActorBoundsでアクターの大きさを調べる・その2

※6/14追記 妹にこれだと大きさじゃなくて半分の大きさを調べてるのでは? と言われて確認したらやっぱり半分だったので、そういう感じに訂正しました。妹「バウンディングボックスというのを調べればいい、調べられるということはわかったけど、結局大きさは…

GetActorBoundsでアクターの大きさを調べる

妹「アクターの大きさって調べられないのかな? 一番でっぱってる部分で計算した場合に、長さがどれくらいかという」「何に使うの?」妹「ブロックをキッチリ等間隔で並べる仕組みを、色んなのに使えるようにしたいんだけど、大きさがけっこうまちまちで。か…

2Dゲームに非破壊性メッシュを使う

妹「パンチしてブロックをぶっ壊す仕組みが出来たよ」「パンチ力すごい」妹「サンプルの設定をそのままにしたらこうなった。これをやるために、ブロックをSpriteじゃなくてポリゴンで作ろうとしてたんだけど、何故かペラペラのPlaneじゃ駄目で、しょうがない…

GameMode、GameInstanceなどの違いについて

妹「毎回悩むんだけど、主人公のパラメータってどこに置いとけばいいもんなのかな? HPとか、持ってるアイテムとか。別のレベルでも引き継いで使いたいんだけど。色んな説明読むとライフの保存場所に適してるとか書いてあるけど、他のとこにも適してるって書…

配列の範囲を超えた場合の見分け方

「配列って、範囲外からGETしようとすると初期値のnullとかになるんだけど、これ整数型の配列だったら見分けつかないよなあ……と思って実験してみたところ。やっぱり見分けはつかなかった。元々0が入ってる場合と、読み出しに失敗して0になった場合と区別出来…

コンソールコマンドを使ってデバッグする

「今日のテーマは、デバッグにコンソールコマンドを使ってみようという話。例えばコリジョンが重なってるのか、重なってないのかというのを調べる時、コリジョンの位置や形状をゲーム中で確認したいことがある」妹「表示設定でコリジョン見えるようにはして…

SetCollisionResponseを実行すると、Overlapイベントはその場ですぐ発生する

「CollisionOverlapの発生タイミングを調べてみたところ、なんだか不思議な仕様がわかった。パンチの時に、手を振りかぶった時にSetCollisionResponseでコリジョンを有効にしてるんだけど、SetCollisionResponseの時点ですぐOverlapが起きてる。もちろんその…

PrintStringの表示を工夫する

妹「そういえば、パンチが2回当たる事件の調査ってしてたっけ?」「そんな話を聞いたことがあるような、ないような。調査はまだしてないかも」妹「こういう風にすると、なぜかパンチが同じ敵に2回当たってる、オーバーラップイベントが起きてるみたいなんだ…

LineTraceをBSPブラシにあててみる

妹「LineTraceで色々実験してたんだけど、これってBSPブラシにはちゃんと効かないのかな? 一応当たったってことはわかるんだけど、Actorの名前が出てこないから、何に当たったのかイマイチわからない」「そう言われても、BSPブラシはActorではないような気…

配列の中からランダムで1つ取り出す

「昨日の記事で出てきた、敵配列の中からランダムで1つ選ぶというやつ、あれって他の方法が速いんじゃないかと気になったので、今日はその動作速度を比較する実験をやった」SHUFFLEノードを使うパターン RandomIntegerInRangeノードを使うパターン 「実験に…

レトロゲームプロジェクトの研究(9) インベーダーゲームっぽいの編(AlienInvaders)

「毎度おなじみのレトロゲーム風プロジェクトの研究。昨日のデバッグ作業は実はこれの話だったという」妹「インベーダーゲームというのも、聞いたことしかないなあ。写真だけで動いてる見てないかも」「敵が左右に動いて、端までいったら前進して……と、全体…

ブループリントでエラーが起きた時にすぐ止める設定について

「とあるプロジェクトデータの中身を確認してたんだけど、どうもゲームが終わった後にこういうエラーが出てきて、同じようにクリアしてるのに、エラーの数が多かったり、全然なかったりする、という事態が起きた。このままだとデバッグするのは難しい」妹「…

昨今のビジュアルスクリプティング

www.youtube.com妹「これはブループリント? でもなにかが違うような気が……」「これはNottorusという、Unity用のプラグイン。UE4じゃない」https://www.assetstore.unity3d.com/en/#!/content/59656「こういう感じで、文字じゃなく絵的な感じでプログラムを…

JumpとLaunchCharacter

妹「というわけで、SmartLinkが機能したとして、まだジャンプの方向が定まってないという問題が残ってる。まあLaunchCharacterを使えば良さそうではあるんだけど……」「使っちゃ駄目なの?」妹「それはなんかヒキョーな気がする。こっちはジャンプ中の横移動…

AIMoveToで空中を進む場合とそうでない場合

妹「プレイヤーが近づくと追いかけてくるようなオバケを作ってたんだけど、プレイヤーが近くにいない時はそのへんをウロウロさせるようにしたんだよ。そうするとウロウロはするようになったんだけど、何故か高さが変わらない。FloatingPawnMovementなんだか…

ビヘイビアツリーのタスク強制終了の仕組み

妹「FinishExecuteが要るのはわかったけど、デコレーターを使うと中断出来るとも言ってたよね?」「出来るよ。例えばTimeLimitデコレーターを使うと、設定した時間が経つとタスクを強制終了させることが出来る」妹「そうするとさ、タスクの都合を無視して勝…

ビヘイビアツリーのタスクはFinishExecuteで終わるようにする

妹「先日作ってたオバケに追いかけられるゲームなんだけど、作ってた時にいくつか解決してない問題が出てきたんだよ」docs.unrealengine.com docs.unrealengine.com妹「まずはAIの動きなんだけど、とりあえずただ追尾するキャラクターっていうのを作っていた…

ブループリントエディタの設定

妹「兄のブループリント見てると、時々トゲのはえたやつがあるよね?」「それはブループリントエディタの設定を試してるやつだよ。線の向きに合わせて矢印が出るという」「メニューから、編集 > エディタの環境設定の順番でクリックして、コンテンツエディタ…

rerouteノードの仕組み

妹「ノードをつなぐ線を曲げる時とかに、丸いポイントを付けてるけど、これって曲げるだけじゃなくて、その丸いやつから複数のノードにつなげるよね?」「つなげるよ」妹「でもドキュメントにはそれ書いてなかったような……あ、今見たら書いてあった」docs.un…