search
LoginSignup
8
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

epicgamesjapanEpic Games Japan #3 Advent Calendar 2019 Day 16

posted at

updated at

Organization

[UE4]ConsoleVariables.iniの特殊性

ConsoleVaribels.ini

例えばusfファイルなどをいじる場合、公式などに
Engine/Config/ConsoleVariables.iniのr.ShaderDevelopmentModeの行のコメントを外すべし!
と書かれていたりして、それを編集することが多いと思います。

シェーダー開発|UnrealEngineDocument

しかし、チーム開発を行う場合Engine内部のファイルはバージョンコントロールに格納されている場合が多いと思います。
そのため自分だけこのコンソール変数が弄れれば十分なのに、わざわざサーバーに送信してしまわないようにしていたり、
潔くサブミット(コミット)してしまったりということがあると思います。

iniの階層構造とConsoleVariables.ini

ドキュメントにはコンフィグファイルには階層構造があり、基底のパラメータをオーバーライドできるような記述があります。
コンフィギュレーションファイル|UnrealEngineDocument

しかしこの階層構造は ConsoleVariables.ini には存在しません
そのため、[ProjectPath]/Config/DefaultConsoleVariable.ini や [ProjectPath]/Saved/Config/[Platform]/ConsoleVariable.ini を用意しても
読み込まれません。ぐぬぬ。

※なんでそうなるかはConfigCacheIni.cppを読んでください

自分だけ設定できればいいのに・・・

ソースを見てみます。

ConfigCacheIni.cpp
void FConfigCacheIni::LoadConsoleVariablesFromINI()
{
    FString ConsoleVariablesPath = FPaths::EngineDir() + TEXT("Config/ConsoleVariables.ini");

#if !DISABLE_CHEAT_CVARS
    // First we read from "../../../Engine/Config/ConsoleVariables.ini" [Startup] section if it exists
    // This is the only ini file where we allow cheat commands (this is why it's not there for UE_BUILD_SHIPPING || UE_BUILD_TEST)
    ApplyCVarSettingsFromIni(TEXT("Startup"), *ConsoleVariablesPath, ECVF_SetByConsoleVariablesIni, true);
#endif // !DISABLE_CHEAT_CVARS

    // We also apply from Engine.ini [ConsoleVariables] section
    ApplyCVarSettingsFromIni(TEXT("ConsoleVariables"), *GEngineIni, ECVF_SetBySystemSettingsIni);

    IConsoleManager::Get().CallAllConsoleVariableSinks();
}

おっ! ConsoleVariablesとかGEngineIniとかが見えますね。
早速書いてみましょう!

Saved/Config/Windows/Engine.ini
[Core.System]
Paths=../../../Engine/Content
Paths=%GAMEDIR%Content
Paths=../../../Engine/Plugins/2D/Paper2D/Content

......

[ConsoleVariables]                 ;追加
r.ShaderDevelopmentMode=4          ;追加

そして起動!
ばっちり設定されています!

image.png

起動ログにもどんなパラメータが読まれたのか書いてあったりします。
LogConfigを探してみてください。

LogConfig: Applying CVar settings from Section [Startup] File [../../../Engine/Config/ConsoleVariables.ini]
LogConfig: Setting CVar [[r.DumpShaderDebugInfo:1]]
LogConfig: Setting CVar [[net.UseAdaptiveNetUpdateFrequency:0]]
LogConfig: Setting CVar [[p.chaos.AllowCreatePhysxBodies:1]]
LogConfig: Applying CVar settings from Section [ConsoleVariables] File [D:/dev/UE423projects/TPBP423Config/Saved/Config/Windows/Engine.ini]
LogConfig: Setting CVar [[r.ShaderDevelopmentMode:4]]

まとめ

[projectpath]/Saved/Config/Windows/DefaultEngine.ini[ConsoleVariables] セクションに設定することで、
自分の開発環境固有のコンソール変数を適用することができます。
各自の開発環境ごとにあるSavedの下に保存されたiniファイルならCIなどに取り込まれて、慌てることはありません。

逆にプロジェクトとして設定したいものに関しては、
[projectpath]/config/DefaultEngine.ini[ConsoleVariables] セクションに記述することで
ゲームの動作設定を最終ビルドに含めることができます。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
8
Help us understand the problem. What are the problem?