UE4.16の環境。
SelectViewportやPIEなどエディタでの実行とStandaloneでの実行で挙動が異なる場合があり、
よくわからない不具合に悩まされたのでその時の現象と注意点についてです。
現象
現象としてはテストレベルで作成したPlayerControllerを本番環境で作成したレベルに設定したところ、
PIEなどのエディタ実行ではどちらも動作するにも関わらず、
Standaloneで実行するとテスト環境では動作し、本番環境では正しく動作しなくなった。
エディタ上では該当のBlueprintはコンパイルでエラーは出ていませんでした。
よくよく調べてみるとStandalone環境では実行時にBlueprintがビルドされているらしく、
本番環境でBlueprintがビルドエラーになっていました。
logを確認したところ該当のPlayerControllerのBlueprintがビルドエラーになっているのですが
Standaloneでもゲームは起動してしまいます。
エディタは仕方がないとしても、せめてStandalone時はコンパイルエラーなどが起きている場合はエラーとして停止してもらいたい。
そうじゃないと一見動いているところが実は正しく動いていないということが起きてしまい、エラーを見過ごすことになってしまう。
もしくはオプションとかで切り替えができないものなのか。
開発時の注意点
UEでは以下の点に注意して開発を行う必要がある。
- Standaloneでの動作確認は必ず行う
- Standaloneでlogを確認して、エラーや警告が出ていないことを確認する
最後に
UEは本当によくわからない不具合が出たりします。
その都度再現するための環境を作ってみたり、エンジン側のソースを見たりと調査、対処に労力を割かれます。
以前書いた「バグを出さないプログラム」の考えからはこの挙動は信頼性が低いと思われます。