UE5 ツール制作のすゝめ

2.5K Views

January 07, 25

スライド概要

Unreal Engine Meetup in Osaka Vol.03にあたり京都コンピュータ学院 4回生 服部様が作成したスライドです。

https://indie-us-games.connpass.com/event/332960/

profile-image

株式会社Indie-us GamesのDocswell公式アカウントです。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

UE5 ツール制作のすゝめ

2.

おしながき ・自己紹介 ・Editor Utility Widget ってなんぞ ・C++でさらに便利に

3.

自己紹介 服部綜太(はっとり そうた) 京都コンピュータ学院 ゲーム学科の4回生。 ゲームプログラマとして勉強中 (2025年3月卒業予定)

4.

自己紹介 服部綜太(はっとり そうた) 京都コンピュータ学院 ゲーム学科の4回生。 ゲームプログラマとして勉強中 (2025年3月卒業予定) 作業ゲー愛好家。 先日CoocieClickerのプレイ時間が 20000時間を超えました。 クッキーは、いいぞ。

5.

お伝えしたいこと ツール制作の時間を惜しんではいけない ツール制作時間 < デバッグ所要時間 となることもしばしば… 制作人数が少ないほどツール制作の費用(時間)対効果は高くなる

6.

Editor Utility Widget とは (知らない方向け) 普段利用しているUser Widget と 同じ感覚でエディター用 ウィンドウを作成することが できるツール 専用の関数からアセットやレベル 上のアクター等にアクセスする こともでき、エディターの拡張が 簡単に行える

7.

Editor Utility Widget 利用例① シューティングゲーム制作のテスト用レベル テストしたい要素を細かく変更できるように したいが、詳細タブからでは分かりづらい上、 内容によってアクターを選択し直したりと 手間がかかる…

8.

Editor Utility Widget 利用例① EditorUtilityWidgetを利用することで、 必要な設定を一か所から変更可能 ウィンドウの配置やボタンレイアウトも 自由自在

9.

実装例① デザイナー部分 コンボボックスやチェックボックスなど、 使用しているパーツは通常のウィジェットと 同じ スクロールボックスにすることでウィンドウ の縮小にも対応

10.

実装例① チェックボックスから選択状況に応じた Bool値を取得し、設定内容を反映 インターフェースで汎用化したり タグで絞り込みしても◎

11.

実装例① GameModeやプレイヤーなど、 ビューポートにないアクターには Save Gameを使って間接的にアクセスする

12.

Editor Utility Widget 利用例② StringTableのID検索にも有用 MultiLineEditableTextを使用しているので このままコピペで使うことができる

13.

ステマ宣伝 カスタマイズ×弾幕×スコアアタック! 縦スクロールSTG「DANTALION」鋭意制作中! 詳細はコチラ

14.

ツール制作にC++を使うメリット BPに公開されていないクラスや関数が使える 学習コストは高いが、身に付ければ より汎用性の高いツールを作ることができる!

15.

C++ 利用例 ランタイム中にスクリーンショットを 撮影する一般的な方法 ただしこの方法ではUIを含めた 撮影はできない…

16.

C++ 実装例 FScreenShotRequestはC++からしか 利用できない構造体 撮影リクエスト時にUIを含めるかどうかを 設定できる(真ん中の引数)

17.

C++ 実装例 UIを含めた撮影に成功! 同じ名前で複数枚撮影すると上書きされて しまうので、タイムスタンプを名前に 入れるなどの工夫は必要

18.

C++応用編 ビルドしたゲームで値を変更できるように してみる BPでもJsonUtility等を使えば実現できるが、 今回はスプレッドシートから変更を行う

19.

C++応用編 HTTP通信を行うクラス UOnlineBlueprintCallProxyBaseクラスを 継承することで、通信処理を非同期で行う ことができる

20.

C++応用編 FEmptyOnlineDelegateクラスを メンバーにすることで、成功時や失敗時など に処理を分岐させることができる

21.

C++応用編 スプレッドシートから送られる文字列は 二重配列のJsonオブジェクトになっている ため、パーサークラスを作成 データの方向や構造に応じてパース方法も 変更できるように

22.

C++応用編 あとはブループリントに配置するだけ リロードできる仕組みを作れば ランタイム中やパッケージ後のデータでも 値の更新が行える

23.

プラグインにまとめる 完成品をプラグインにすることで、 他プロジェクトへの流用が 容易に行える 汎用的なツールであるほど その恩恵は絶大

24.

おわりに C++応用編の内容をプラグインにまとめてみました こちらからダウンロードできます↓ ご清聴ありがとうございました!