株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • 【UnrealEngine4】のソースコード管理方法について

【UnrealEngine4】のソースコード管理方法について

2017/11/14

Tag: ,

開発の澤田です。今回はUnrealEngine4(以下UE4)のGitによるソースコード管理方法を紹介したいと思います。
マテリアルやバッファの拡張等々、UE4をカスタマイズしていると、バージョンアップによって変更したところががっつり変わっていたり、公式で機能として実装されたりと、バージョンごとに取捨選択やマージコストが必要になってきます。規模によっても色々変わってくると思うので、今回紹介する方法がベストな方法とは限らないですが、一つの例として紹介させていただきます。

depth01

基本構造

基本的な考えた方としては、まず公式リリースバージョン(例:4.xx.1)からの派生を、
末尾に「.df.1」等とつけて社内(以下DF)バージョンブランチ(例:v4.xx.1.df.1)としてもちます。
※ここで下一桁をDF内でのバージョンとしています。

depth01

新規機能追加

新規機能追加に関しては、DFバージョンブランチ(例:v4.xx.1.df.1)から、
機能ブランチ(例:ticket0000)を切り実装します。

depth01

バージョンアップ対応

次にバージョンアップ対応についてです。
バージョンアップ対応では、アップデート先のDFバージョンブランチ(例:4.xx.2.df.1)から、
アップデート用機能ブランチ(例:ticket0001)を切り、
取り込みたい機能ブランチ(例:ticket0000)をまとめてcherry-Pickしてコミットを行います。
そしてコンフリクトや更新によるエラー対応を行い、新しいバージョンブランチにマージします。

※cherry-pickはコミットを範囲指定して1つの差分として持ってくることができます。

git cherry-pick [取り込みたいコミットの開始位置]..[取り込みたいコミットの終わり]

depth01

更にバージョンアップ

更にバージョンアップが行いたい場合には、
アップデートしたい先のバージョンブランチ(例:4.xx.3.df.1)から、
アップデート用ブランチ(例:ticket0002)を切る。
それより以前のアップデート用ブランチ(例:ticket0001)をcherry-pickで取り込み、
コンフリクトや更新によるエラー対応を行います。
depth01

まとめ

まとめると、、、
・新規機能追加の場合は、通常通りマージ。
・新しいバージョンに以前のバージョンで開発した機能をマージしたい場合は、
   ・アップデート用のブランチを、新しいバージョンから切る
   ・Cherry-pickで差分を取得。
    (この時、過去にその機能のアップデート用機能ブランチがあれば、その中で最新のものを使う。)
   ・エラー等がおきれば修正してコミットを行う
   ・アップデート用のブランチをマージ

depth01

以上のように履歴をとりつつ差分をみることで、アップデートのコストが軽減できればと考えています。
参考になれば幸いです。

おまけ

・シェーダーデバッグ用の設定
コマンドの「r.ShaderDevelopmentMode=1」を実行することで設定することが出来ます。
この設定によりシェーダーコンパイルが失敗した場合でもエンジンが強制終了しないようになり、どこでエラーが発生しているか確認できるようになります。
また下記INIファイルに設定されているShaderDevelopmentModeのコメントアウトを外すことでも設定できます。こちらに記述しておくと、シェーダーファイルを触っていてエンジンが起動できなくなった場合でも、エラー箇所を確認できるので非常に便利です。

.\Engine\Config\ConsoleVariables.ini
;r.ShaderDevelopmentMode=1
r.ShaderDevelopmentMode=1


※免責事項※
本記事内で公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。
これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。
自己責任でご使用ください。

Pocket

コメント

コメントはありません

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*