最近UE4関連で作ったものメモ(2016.12)
同一 or 子クラスのオブジェクトプロパティ一括コピー
同一 or 子クラスのオブジェクトプロパティ一括コピーができた。配列等もコピーできる事は確認済み。もっと簡単な方法あるかな? #UE4 pic.twitter.com/Pl7ZCUGxkN
— ほげたつ (@HogeTatu) 2016年11月22日
Grayちゃんと会話
[UE4] Grayちゃんと会話 https://t.co/pbFJ5YjaLq
— ほげたつ (@HogeTatu) 2016年11月27日
Docomo雑談APIを使ってGrayちゃんと会話してみた。APIリクエストには開発中のNekoNekoOnlineプラグインを使用。 #UE4
コピーコストを気にしつつ、float配列に一様に加算するノード
CustomThunkを使うと黒魔術感が出てくるよね。コピーコストを気にしつつ、float配列に一様に加算するノード。 #UE4 pic.twitter.com/c0eAgvBdmF
— ほげたつ (@HogeTatu) 2016年12月7日
雪面の凹み
#東ゲ部 もくもく会で作ってたもの。先日WIPで上げてた雪面の凹み処理に、WorldPositionOffsetでの頂点移動とテッセレーションを対応させてみた。あと試しにハイトマップをそのままEmissiveに使ってみたら良い感じだった。 #UE4 pic.twitter.com/3Oyo5ZQN4Q
— ほげたつ (@HogeTatu) 2016年12月11日
MipMapプレビュー(元ネタはアンコウさんアドカレ記事)
アンコウさんのMipMap記事がとても良かったので、自分でもそれっぽいものを作ってみた。アンコウさんのと比べると制限があるけど、エンジン改造は無し。一括切り替え機能が付けられればプラグイン化しても良いかも。 #UE4 pic.twitter.com/p6PlF5Fepx
— ほげたつ (@HogeTatu) 2016年12月14日
とりあえず切り替え機能はこんな感じでいいかな pic.twitter.com/SQO8SWffU8
— ほげたつ (@HogeTatu) 2016年12月14日
GameplayDebugger をプロジェクト用にカスタマイズして利用する
こちらは「Unreal Engine 4 (UE4) Advent Calendar 2016」3日目の記事です。
Unreal Engine 4 (UE4) Advent Calendar 2016 - Qiita
GameplayDebugger が便利なのにあまり使われていなくて可哀想なので記事にします。
続きを読むWebApi プラグインの設計思想 & 実装Tips
こちらは「裏 Unreal Engine 4 (UE4) Advent Calendar 2016」1日目の記事です。
裏 Unreal Engine 4 (UE4) Advent Calendar 2016 - Qiita
今回は 裏 ということで趣向を変え、公開中の WebApi プラグイン をベースに、新たに作成中の NekoNekoOnline プラグイン について紹介させて頂きます。
=== 追記 ===
やはりSandboxとは別にした方が良さそうだったので、これまで通りWebApiプラグインとして独立させました。
設計思想は代わりませんので、置き換えて読んで頂ければと。
タイトルも変えてあります。
UE4でActor間のTick実行順序に依存関係を持たせる方法
登録されたActorやComponentのTickFunctionはキューに積まれた後に更新タイミンググループ(PrePhysics等)に分類されてGameThreadで順番にExecuteTaskされるのね。まぁこれはもう順序不定って考えた方がいいわ
— ほげたつ (@HogeTatu) 2016年6月13日
でした。でもグループのみの運用だと面倒だよねってActorの実装を眺めていたらTickの依存関係を作ることは標準機能でサポートされているようです。
続きを読むUE4でPawnをSpawnActorする際のController生成タイミングに注意
第5回UE4ぷちコン、お疲れ様でした。
前回に引き続き、自分も参加しました。
今回はこのぷちコン作品を作る際に少しハマった件について書きます。
PawnのBeginPlay内で自信のControllerを参照するのは危険
今回の作品ではUnityちゃんのAIにBehaviorTreeを使用していて、BeginPlayからStartAIを呼び、その中でRunBehaviorTreeを呼んでいます。
ところがこのように記述してレベル開始時に大量にSpawnした時、Spawn後にその場に立ち止まったままのUnityちゃんがいる ことに気が付きました。
こちらを調べてみたところ、どうも GetControllerの戻り値がNoneになっていることがある ようです。
考えてみると確かにPawnとControllerは別Actorであるため、生成順序に関しては保証されていない のでしょう。
今回は以下の様に失敗時に時間を置いてリトライする仕組みを用意して対応しています。
BeginPlay内にてGetControllerする際には生成タイミングに注意しましょう。
現場からは以上です。