概要
UnrealEngine の LiveCoding を試してみたメモ書きです。
しばらく使ってみた感想を書いています。
環境
Windows10
Visual Studio 2017
UnrealEngine 4.22
参考
以下を参考にさせて頂きました、ありがとうございます。
Live Codingとは
UnrealEngine4.22にて追加された機能で、実行中のエディタやスタンドアロンゲームに対しC++コードの修正を適用することができる機能です。
(Live++というミドルウェアを統合しているようです)
ホットリロードとあんまり変わらないように思えますが、公式リリースノートによると、ホットリロードのメカニズムとは異なっており、個々の機能に変更パッチを適用するとのことです。
また、ライブコーディングは4.22現在、実験的機能となっています。
実行準備
ライブコーディングを使うための設定です。
エディタ設定
[エディタの環境設定] -> [一般 - Live Coding] の [Enable Live Coding] にチェックを入れる。(エディタの再起動が必要です)
エディタ再起動後、ライブコーディング用のコンソールが表示されます。
以前にホットリロードをしていた場合、LiveCodingが上手く働かないようです。
その場合、[Binaries]フォルダにある dllやpdbファイルを全て消してから再度起動すると良いようです。
ライブコーディング実行
C++のコードを書き替えてから、ツールバーの[コンパイル]もしくは、コンソールにて [CTRL] + [ALT] + [F11] でコンパイル&差し替えが実行されます。
画面上にコンパイル中の表示がでます。エディター実行中でもいけます。
エラーなくコンパイルが終われば、即パッチが作成され適用されます。
[Binaries]フォルダは以下ような感じになっています。パッチファイルが作成されているのがわかります。
所感
使ってみた所感です。
4.22時点では実験的な機能ですが、大きな問題には遭遇していません。(たまにエディターが落ちますが)
反映が速い
厳密に測定をしているわけではありませんが、従来のホットリロードに比べると確かに速いです。(公式リリースコメントの差分ビルド最大350%早くなるという感じはないです)
起動中のまま変更が反映される
大幅な修正は試していませんが、UE_LOGを入れたり、メンバ変数の計算を変更する程度の小さい修正は問題なく反映されました。
UE4のEngine側のコアモジュールやPluginのコードまでを適用対象含めると動作が不安定になる
上記のことをリリースノートに記載されているようですが、よくわかりませんでした、変更が小さい場合は影響が少ないかもです。
コアモジュールやプラグインコードを含めなくても落ちる場合はありました。
↑のような状態になるとエディターの再起動が必要な感じです。(コンパイルボタンが押せない)
ホットリロードの残骸が生まれない
ホットリロードを使っていると稀に[HOTRELOAD_***]といったファイルが生成されそれを参照している場合があります。このような事が(今のところ)起きていません。
Live Codingのログウィンドウが少し邪魔
Live Codingのログウィンドウがエディターと別なので普段は少し邪魔です。
あと文字化けします。VisualStudioがShift-JISであるためかと思われます。英語版にすれば直るかもしれません(未検証)。
VisualStudio側でのビルドが失敗する
一度、LiveCodingを行うとVisualStudioでのビルドに失敗します(正確にはゲームDLLが開けないというエラーでリンクに失敗します)
ホットリロードとは併用不可なので仕方ないです。
不意にエディターが落ちる
頻発というほどではないのですが、不意にエディターが落ちることがあります。コード修正量が多いというわけではなく、数行だけ書き換えて落ちることもあります。ここらへんは実験的機能なので仕方ない所です。
まとめ
ホットリロードでの不満点が改善されているのであれば今後も使っていきたいと思います。実験的機能がいつまでなのかが気になりますが。。
しばらく使ってみて、実用に困るほど落ちるわけではないのですがやはり謎のエディター落ちに遭遇します。(クラッシュレポートもローカル修正と関係ない箇所で落ちています)
今後の安定性アップに期待です。