Se ha denunciado esta presentación.
Se está descargando tu SlideShare. ×

第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?

Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio
Anuncio

Eche un vistazo a continuación

1 de 84 Anuncio

第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?

Descargar para leer sin conexión

「第1回UE4勉強会 in 大阪」
https://ue4study-osaka.connpass.com/event/60591/

「第1回UE4勉強会 in 大阪」
https://ue4study-osaka.connpass.com/event/60591/

Anuncio
Anuncio

Más Contenido Relacionado

Presentaciones para usted (20)

Más de com044 (20)

Anuncio

Más reciente (20)

第1回UE4勉強会 in 大阪 - エンジン改造ってどうなの?

  1. 1. 第1回UE4勉強会 in 大阪 エンジン改造ってどうなの?
  2. 2. 自己紹介 ● Twitter: com04 ● ゲームプログラマー ● 趣味でUE4エンジン改造してる ● 横浜×酒×UE4
  3. 3. 自己紹介 ● Meetup Osaka #2でエンジン改造LTした − UE4.14.0 Forward Shadingのエンジン改造でセ ルシェードやってみた ● https://www.slideshare.net/com044/ue4140-forwa rd-shading-69295343 ● 第7回UE4ぷちコンでエンジン改造して出した − 仮想アニメ『Grayちゃんの日常』 ● https://www.youtube.com/watch?v=ZBhdD-EanT4 ●
  4. 4. もくじ! ● エンジン改造って何が出来るの? ● エンジン改造は良いの?悪いの? ● エンジン改造って有用なの? ● それって本当にエンジン改造が必要? ● でもエンジン改造って難しいんでしょう? ● 改造する時って何を取っ掛かりにするの? ● マージする手順 ● まとめ
  5. 5.   エンジン改造って何が出来るの?
  6. 6. エンジン改造で出来ること ● 参考 − 大規模タイトルにおけるエフェクトマテリアル運用 (SQEX大阪: 林武尊様) #UE4DD ● https://www.slideshare.net/EpicGamesJapan/sqex -ue4dd − 106ページ辺りから
  7. 7. エンジン改造で出来ること ● 改造してみた
  8. 8. エンジン改造で出来ること ● マテリアル、マテリアルインスタンスに説明付 けた
  9. 9. エンジン改造で出来ること ● 列挙体に説明付けた
  10. 10. エンジン改造で出来ること ● マテリアルインスタンスのOverrideに Translucency Lighting Modeを追加した
  11. 11. エンジン改造で出来ること ● マテリアルのShadingModelに独自シェーディ ング追加した
  12. 12. エンジン改造で出来ること ● マテリアルのShadingModelに独自シェーディ ング追加した
  13. 13. エンジン改造で出来ること ● マテリアルのアウトプットピンを追加して シェーダーで使えるようにした
  14. 14. エンジン改造で出来ること ● Gバッファを追加した
  15. 15. エンジン改造したいこと ● 他に改造したい事 ● Forward ShadingでMulti Render Target ● PostProcessMaterialで縮小バッファ
  16. 16.   ● エンジン改造は良いの?悪いの?
  17. 17. エンジン改造の良い悪い ● メリット − 公式が対応していない痒い所に手が届く ● コメントが無い所に追加とか ● プロファイリングの細分化とか
  18. 18. エンジン改造の良い悪い ● メリット − シェーディングを自由にカスタマイズ出来る ● ShadingModelやシェーダーファイル自体の改造
  19. 19. エンジン改造の良い悪い ● メリット − バグを修正できる ● エンジンがバージョンアップされてなくても、GitHubに 上がってる修正コミットを適用できる ● マスター前でエンジンバージョン固定してる。けどバグが……と いった時に対処できる ● 公式のIssueページで不具合確認できる
  20. 20. エンジン改造の良い悪い ● デメリット − 下手に弄るとバグが入って大変 ● 公式エンジンと違い、実際に触ってデバッグする人は自 分達だけ ● UE4は大きいプロジェクトなので、ここ弄っても他に影 響ないか?を考えるのが大変 − 自分が書いたバグ?公式のバグ?
  21. 21. エンジン改造の良い悪い ● デメリット − マージが大変。改造箇所に大きな変更が入ると泣く ● ロジックが変わっていた時 − アクセス箇所が増えていたり(そっちにも対応が必要だった) − ソースコードはマージ出来たけど、実行時にうまく動作しない とか...
  22. 22. エンジン改造の良い悪い ● デメリット − アセットを改造すると、未改造エンジンにアセット をMigrate(移行)できない可能性がある ● 開くとクラッシュする ● 移行してもコンテントブラウザに表示されない ● その案件に特化すると次の案件に持っていけない。 ● 元に戻して出力するような作りを作らないといけない
  23. 23. エンジン改造の良い悪い ● デメリット − 改造するための情報が少ないので大抵自分で追いか けていく
  24. 24. ● エンジン改造って有用なの?
  25. 25. ● エンジン改造って有用? ● 大人数や長期間なら利便性の向上が有用 − コメントの追加機能が強い ● これ何のマテリアル?を調べるのに毎回エクセル開く? − (なんで公式でサポートしてないの……?)
  26. 26. ● エンジン改造って有用? ● 大人数や長期間なら利便性の向上が有用 − 触らせたくないクラスやパラメーターを隠蔽出来る ● 例えば、プロジェクト独自処理をベースクラスに入れた いので、UE4標準のクラスを公開しない等 ● AbstractやNotPlaceableキーワードでエディター側で封じれる 今回のプロジェクトで 配置されたら不味い! UCLASSにNotPlaceable 指定で置けなくなる!
  27. 27. ● エンジン改造って有用? ● 大人数や長期間なら利便性の向上が有用 − 触らせたくないクラスやパラメーターを隠蔽出来る ● マテリアルインスタンスのOverrideを隠蔽したい時 − ぼっちプログラマのメモ - マテリアルインスタンスのMaterial Property OverrideのOverrideフラグをロックするエディタ拡張について http://pafuhana1213.hatenablog.com/entry/2017/01/29/164203
  28. 28. ● エンジン改造って有用? ● 大人数や長期間なら利便性の向上が有用 − こういう機能があれば手順が減って作業速度を上げ れる。とか操作ミスでのバグが減るとか
  29. 29. ● エンジン改造って有用? ● 少人数や短期間なら……? − 下手するとエンジン改造する作業時間の方が長くな る ● エンジニア皆が皆、UE4のソースコードに詳しい訳では ない
  30. 30. ● エンジン改造って有用? ● 少人数や短期間なら……? − エンジンをバージョンアップする時のマージするコ スト ● 変更点がバージョンアップと衝突 ● 改造した箇所が使用されている場所が増えたりして、上 手く動作しない 最悪クラッシュする
  31. 31. ● エンジン改造って有用? ● 少人数や短期間なら……? − コメント無くても短期間や、自分が作ったアセット なら多少は覚えてられる(ハズ)
  32. 32. ● エンジン改造って有用? ● とは言え必要な場合も − シェーディングの改造 ● 独自のシェーディングをしたい場合。 − NPR等、PostProcessやUnlitでもでも出来るけど、実装したい 内容次第ではエンジンのシェーダーコードを弄る必要 ● UE4のレンダリングフローの不都合を解決したい場合 − PostProcessのこのタイミングでこの描画処理を入れたい!と か。
  33. 33. ● エンジン改造って有用? ● レンダリングフロー問題: LightShaft
  34. 34. ● エンジン改造って有用? ● レンダリングフロー問題: PostProcess輪郭線
  35. 35. ● エンジン改造って有用? ● レンダリングフロー問題: 混ざると輪郭線が上に
  36. 36. ● エンジン改造って有用? ● レンダリングフロー問題。下記の順で描画され る a)BasePass b)Light Shaft c)Post Process ←LightShaftより後になる!
  37. 37. ● エンジン改造って有用? ● とは言え必要な場合も − 処理負荷の最適化 ● 限界まで詰めないといけない場合等。 ● UE4は汎用的なエンジンなので、プロジェクトに合わせ て細かい所は削れるかも
  38. 38. ● エンジン改造って有用? ● メリットとデメリットを把握して、プロジェク トに合わせて考える必要がある。
  39. 39.     BPじゃ出来ない。C++が必要! →それって本当にエンジン改造が必要?
  40. 40. ● それエンジン改造が必要? ● エンジン改造した後はやっぱり保守するのが大 変。 − エンジンのバージョンアップで変更点が衝突するの がつらい ● →極力エンジンには手を入れないのが良い
  41. 41. ● それエンジン改造が必要? ● UE4のエンジン側の機能を使う、拡張するには 3通りの方法がある − C++プロジェクト − Plug-in − エンジン改造
  42. 42. ● それエンジン改造が必要? ● C++プロジェクト − BPに公開されていない関数やクラス等を使える ● AVolume等、BPで継承出来ないクラス − 作ったクラスや関数をBPに公開出来る − プロジェクト固有でC++の機能を使いたい場合に 使うと良い
  43. 43. ● それエンジン改造が必要? ● Plug-in − C++プロジェクトとほぼ同じ事も出来る − GUIを使ったエディター拡張が出来る − 新しい独自アセットを作ったりも出来る − 別のプロジェクトへも手軽に持っていける − Editor起動時のみ使用する、とか出来る − GUIを使ったツール、もしくは複数のプロジェクト で使いまわすような機能を作る場合に使用すると良 い
  44. 44. ● それエンジン改造が必要? ● エンジン改造 − Plug-inとほぼ同じ事も出来る − ほぼ全ての拡張が出来る − レンダリングフローも変更できる − C++プロジェクト、Plug-inで出来ない事はエンジ ン改造する
  45. 45. ● それエンジン改造が必要? 今のプロジェクトにしか使用しない? エンジン弄らずに実装できる? C++プロジェクト Plug-in GUIを使ったツール類? Plug-in エンジン改造 Yes Yes Yes No No No
  46. 46. ● それエンジン改造が必要? ● エンジンの中身をプロジェクト側にコピーして 改造するという手もある − エンジンのバージョンアップでマージ問題が出にく くなる − 株式会社ヒストリア様のAirtoneにてこの方法が用 いられた ● 少人数開発でもクオリティを諦めない - エンジニア視点 から見る少人数開発の極意 - − https://www.slideshare.net/historia_Inc/ss-752 13477 P.57あたり
  47. 47. それエンジン改造が必要?  割とPlug-inは優秀で出来ることが多い。  エンジンの実装コード(.cpp)への依存を下げ て、ヘッダーのみの参照にしておくとマージコ ストはまだマシ。
  48. 48.     でもエンジン改造って 難しいんでしょう?
  49. 49. 難しいんでしょう?  ソースコードをDLしてビルドするだけ!  これだけで自分だけのオリジナルUE4が使える!
  50. 50. エンジンをつくる  1. VisualStudioCommunity 2015をインス トールする  https://www.microsoft.com/ja-jp/dev/products /visual-studio-2015.aspx  ※インストール時のオプションでC++が選択されている 事を確認
  51. 51. エンジンをつくる  2. GitHubのアカウントを取る  https://github.com/
  52. 52. エンジンをつくる  3. Unreal EngineのアカウントにGitHubアカ ウントを登録する  https://www.unrealengine.com/dashboard/per sonal
  53. 53. エンジンをつくる  開発者情報→接続されたアカウント→GITHUB
  54. 54. エンジンをつくる  4. 登録出来たらUnreal EngineのGitHubが見 れるのでCloneする  https://github.com/EpicGames/UnrealEngine/t ree/master
  55. 55. エンジンをつくる  Cloneって何や!?  安心して下さいZipでも落としてこれます!簡単!
  56. 56. エンジンをつくる  5.解凍出来たら中にあるSetup.batを実行する  Unreal Engineさんがいい感じにセットアップして くれる
  57. 57. エンジンをつくる  6.処理が終わったらGenerateProjectFiles.bat を実行する  Unreal Engineさんがいい感じにプロジェクトファ イルを作ってくれる
  58. 58. エンジンをつくる  7.処理が終わったらUE4.slnを実行してVisual Studioを立ち上げる  下記の設定になっているのを確認して、    メニューバーから  「Build」→「Build Solution」  でビルド
  59. 59. エンジンをつくる  8.(大体1時間オーバー)ビルドが終わったら  ”Engine/Binaries/Win64/UE4Editor.exe” を実行
  60. 60. エンジンをつくる  これで自分だけのUE4!            ※初回起動は時間が掛かるので気長に待つ
  61. 61.     改造する時って何を取っ掛かりにするの?
  62. 62. 取っ掛かり-先人の足跡  先人の足跡を辿る  もんしょ先生 / もんしょの巣穴blog  http://monsho.blog63.fc2.com/blog-category-6.html  おかずさん / ぼっちプログラマのメモ  http://pafuhana1213.hatenablog.com/entry/2017/01/2 4/012231  わたし / UE4 Document@com04  http://com04.sakura.ne.jp/unreal/wiki/index. php?%A5%A8%A5%F3%A5%B8%A5%F3%B2%FE%C2%A4 
  63. 63. 取っ掛かり-open <ほげ>.h  エディターでActorやComponentを右クリック  →「Open <なんとか>.h」でVisual Studioでソー スコードが開ける
  64. 64. 取っ掛かり-検索  英語版UE4エディターの変数名やTooltipから Visual Studioで検索をする  下記なら「this component will be rendered」で 検索
  65. 65. 取っ掛かり-検索
  66. 66. 取っ掛かり-Widget Reflector  WidgetReflectorを使う
  67. 67. 取っ掛かり-Widget Reflector  ウィンドウが出るので「Pick Live Widget」を 押す
  68. 68. 取っ掛かり-Widget Reflector
  69. 69. 取っ掛かり-Widget Reflector  その状態でESCキーを押すと更新が止まるの で、書かれているクラスを調べる
  70. 70. 取っ掛かり-Break Point  Visual Studioでそれっぽい所にBreakPointを 仕掛けたり、Step inで追いかけていく
  71. 71.     マージする手順
  72. 72. マージ手順 a)ソースコードをマージする b)ビルドする c)プロジェクトを起動する d)再生する たった4工程!
  73. 73. マージ手順 a)ソースコードをマージする b)ビルドする c)プロジェクトを起動する d)再生する たった4工程! で綺麗に終わらない!
  74. 74. マージ手順 ● ソースコードをマージする – GitからCloneしていると、GitのTagを切り替えれ ばOK
  75. 75. マージ手順 ● ソースコードをマージする – もしくはデフォルトUE4と改造UE4の差分からPatchをつくる ● そのPatchを新しいバージョンのUE4に適用する
  76. 76. マージ手順 ● ビルドする – 出て来るエラーを修正する ● 消失したクラスや関数を修正 ● 変数のアクセス権変更等 – 今後変更予定の変数や関数はDEPRECATEDが記述 され、ビルドログにWarningが出るので気づいた段 階で対処しておく。
  77. 77. マージ手順 ● プロジェクトを起動する – ここでクラッシュする事も – 初回起動だとシェーダーのコンパイルが走る。シェー ダーでエラーが有るとクラッシュする。 – いきなり作成中のプロジェクトで試すのではなく、まず 軽量な新規Third Person Project等で試すのが良い ● シェーダーコンパイルも少ない。製作中のプロジェクトだと シェーダーコンパイル数が20,000とか軽く超える...
  78. 78. マージ手順 ● 再生する – ここでクラッシュする事も ● 実行時のロジックを確認する。 – 改造したエンジン機能が上手く動作しない場合も ● 改造しないといけない場所が変わってたり、増えたり ● 一番厄介...
  79. 79. マージ手順 a)ソースコードをマージする b)ビルドする c)プロジェクトを起動する d)再生する たった4工程!
  80. 80. マージ手順 a)ソースコードをマージする b)ビルドする c) Third Person Projectを起動する a) シェーダービルド走る。シェーダーエラーが合ったらクラッシュ d)Third Person Projectを再生する a) ロジックエラーが合ったらクラッシュ b) 改造箇所が正常に動くかチェック e)進行中のプロジェクトを起動する f) 進行中のプロジェクトを再生する
  81. 81.     まとめ
  82. 82. まとめよう  エンジン改造、そんなに難しくない  ただし、好き勝手改造すると後でバージョン アップのマージする人が大変。泣く。  改造による効率化と実装コストの天秤  Plug-in > C++プロジェクト > エンジン改造 の順で実装出来るか考える。  Plug-inは結構頑張れる。
  83. 83. まとめよう ● Twitterでエンジン改造推進してるかの様に見えるけ ど、やり過ぎは良くない。程々が大事。 ● 逆に改造を絶対にしない、というポリシーは動きづら くなる。改造でヒューマンミスを封じれる事も。程々 が大事。
  84. 84.     以上!

×