Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
UE4初心者がエディタ拡張をやってみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
mao
February 26, 2017
Technology
0
2.3k
UE4初心者がエディタ拡張をやってみた
Unreal Engine Sapporo Meetup! (2/25)
ショートセッション・LT 資料
https://atnd.org/events/85683
mao
February 26, 2017
Tweet
Share
More Decks by mao
See All by mao
たのしいUnsafeUtility
mao_test_h
0
2.7k
VRMSpringBoneをJobSystem&ECSで最適化してみた話
mao_test_h
0
720
ECS初学者に向けてのTips集
mao_test_h
0
430
OculusGoで大量のオブジェクトを動かしてみた
mao_test_h
1
1.3k
UnityWebGL Tips集
mao_test_h
0
1.2k
UE4+Tangoをいじってみた話
mao_test_h
0
590
Other Decks in Technology
See All in Technology
Claude Code Skills 勉強会 (DevelersIO向けに調整済み) / claude code skills for devio
masahirokawahara
0
320
DX Improvement at Scale
ntk1000
3
390
マルチプレーンGPUネットワークを実現するシャッフルアーキテクチャの整理と考察
markunet
2
170
AWS SES VDMで 将来の配信事故を防げた話
moyashi
0
200
Oracle Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
1.7k
Shifting from MCP to Skills / ベストプラクティスの変遷を辿る
yamanoku
4
700
S3はフラットである –AWS公式SDKにも存在した、 署名付きURLにおけるパストラバーサル脆弱性– / JAWS DAYS 2026
flatt_security
0
1.2k
IBM Bobを使って、PostgreSQLのToDoアプリをDb2へ変換してみよう/202603_Dojo_Bob
mayumihirano
1
270
管理者向けGitHub Enterpriseの運用Tips紹介: 人にもAIにも優しいプラットフォームづくり
yuriemori
0
170
EMからICへ、二周目人材としてAI全振りのプロダクト開発で見つけた武器
yug1224
5
480
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
340
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
8
7.1k
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
250
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.4k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
190
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
300
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.2k
Producing Creativity
orderedlist
PRO
348
40k
Exploring anti-patterns in Rails
aemeredith
2
280
Abbi's Birthday
coloredviolet
2
5.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Transcript
Unreal Engine Sapporo Meetup! (2017/02/25) ショートセッション・LT
どこからきたの?なわばりは? ・mao (@TEST_H_) ・ゲームプログラマーなフレンズ. ・仕事では主にUnityちほー等に生息している. ・UE4は業務関係なしに趣味で楽しんでいる。
注意点 ・LTなので諸々端折ってます。。。 ・内容的に大分プログラマ寄りになります。
その他 質疑応答やご指摘等につきましては後のMeetupタイムで お受けできればと思いますので、お気軽にお声がけ下さい。
目次 1. はじめに 2. BehaviorTreeのTaskに Tick Intervalを設定できるようにしてみた。 3. アウトプットログに サーバルちゃんを表示してみた。
4. UE4上で けものフレンズが見たい。見たい。
はじめに
環境構築について historia社のブログが参考になります。 [UE4] エンジンのソースコード取得とビルド手順のまとめ UE4.6改訂版 http://historia.co.jp/archives/1327 •必要なもの ・GitHubアカウント ・VisualStudio(個人なら無料版であるCommunityでもok) ・UnrealVS
※VisualStudioの拡張機能。 UE4を起動する際にプロジェクト(.uproject)を指定して起動する事が出来る 。 無くても行けなくはないが、確実にあった方が良い。
BehaviorTreeのTaskに Tick Intervalを設定できるようにしてみた。
BehaviorTreeのTaskには Tick Interval(Tickの呼び出し間隔)に 相応する設定が無かったので追加してみた。 ※実装されていないと言う事は、 裏を返せばそもそも使用される想定が無いので 実装されていないだけとも考えられるが...
実装箇所の特定 元からTaskカテゴリーにある ”IgnoreRestartSelf”の文字列で全検索。 →結果”BTTaskNode.h”辺りに変数を発見。
Editor上から値を調整出来る様に 一先ずは処理に必要な変数を追加。 その上でUE4上から値を変更出来る様にしたいので 変数にUPROPERTYを付ける。 →これでEditor上に表示される。 ※ドキュメントに情報が纏まっているので要参照。
後は実装 BTTaskNode.cppに Tick関連の処理があったので改造。 結果、制御出来るようになった。 →右のキャプチャはintervalを [0.016秒][1秒]に設定したTaskを 何個か同時に走らせてログ出力した物。
アウトプットログに サーバルちゃんを表示してみた。
※はめ込み画像ではありません。
エンジンコンテンツにサーバルちゃんを追加 •必要なこと ・エンジンソースのContent以下にサーバルちゃんを追加 “/Engine/Content”が該当するかと思われるので 一先ずは“/Engine/Content/Editor/Slate”以下に追加。 ・SlateStyleクラスの追加 historia社のブログが参考になります。 [UE4] プラグインによるエディタ拡張(4) 自作ツールに画像を利用する http://historia.co.jp/archives/476
※但し、こちらはPlugin想定で書かれているので 画像の参照先をエンジンコンテンツ以下にする必要がある点には注意。
実装箇所の特定 前章と同じくEditor上の固定の文字列で 全検索をかけるという手もあるが、 EditorのUIであれば ウィジェットリフレクタが大変便利
表示が小さくて分かり難いかもしれないが、 下記のキャプチャはアウトプットログにフォーカスを当てたもの。 構造だけでなくソースと行数が表示されるので実装箇所も特定できる。 ※イメージ的にはブラウザの開発ツールのElementsの挙動に近い。
とりあえずはSOutputLog.cppに実装すれば良いことがわかった。 SlateStyleクラスを実装した上でソース中で読み込み、 アウトプットログの右側にボックスを配置して表示。
Slate UI なお、あまり見慣れないであろう下記の書き方は UE4のUIプログラミングフレームワークであるSlateUIの記述。 こちらは公式ドキュメント及びhistoria社のブログが参考になります。 [UE4] プラグインによるエディタ拡張(3) SlateUIを使用してウィンドウを作成する http://historia.co.jp/archives/373
None
UE4上で けものフレンズが見たい。
と言う事で、アウトプットログ上で 動画再生出来る様にしてみたお話。
やったこと ・MediaPlayerEditorの動画再生を行っているUIを特定して Plugin側からエンジンコード側に力技で移植。 ・移植した動画再生エリアをアウトプットログに表示。
None
実装箇所の特定 ウィジェットリフレクタを用いて特定。 結果、”SMediaPlayerEditorViewer.cpp”から 呼び出している”SMediaPlayerEditorOutput”が それっぽかった。 →こちら”SCompoundWidget“と言うのを継承しており、 このままSNewする形で付けられそう。
依存の解決 ・アウトプットログのモジュール依存関係を解決。 OutputLog.Build.csにMediaPlayer関連を追加。 (※精査せずにMedia関連を突っ込んだので多分不要な物も混じっている筈...)
移植 SMediaPlayerEditorOutputはPlugin側で実装されており、 エンジンコード側から参照する方法が現時点では不明だったので、 一先ずはエンジンコード側に 同じ物を実装すると言う力技を用いることに。
MediaPlayerのインスタンス化 再生するにはUMediaPlayerのインスタンスが必要。 →Editor上からの場合はAssetRegistryを用いる事で MediaPlayerのAssetを取得出来そう。 一先ずは必要なAssetのPathを 直打ちする形でMediaPlayerのAssetを取得し、 UMediaPlayerをインスタンス化。 ※右のキャプチャでは普通に呼んでいる が、実際にはAssetの読み込み完了時の コールバック等で読み込んだりと、
ロードの動作を保証する必要がある。
UMediaPlayerのインスタンス化は出来たので さっきのサーバルちゃんの位置に表示してみる。
結果 出来た。 https://twitter.com/TEST_H_/status/833 692908322582528 ※再生動画には けものフレンズでは無く、 サンプル動画を用いております。 (けものフレンズの動画ファイルなんて無かった...)
まとめ ・C++の基礎的な知識は必要になるが、 エンジンコード自体は非常に綺麗に書かれているので 意外と読めた。 ・内部処理を追っていると何が何処にあるのか? と言った情報を目に出来るので、これはこれで勉強に。 →例えばBlueprintに関数を公開している箇所とか見えてくる ※嫌な所がブラックボックスになっていないので 足りない機能や欲しい機能は自力で何とか出来たりするかも。
まとめ ・本格的にやるならエンジンコードをフォークするなりして 独自に管理するなりした方が良いかもしれない。 (寧ろ、ここらの管理方法は自分も知りたい)