Unreal Editor でのシークレットの運用や自分用の生産性プラグインを適用する方法を知りたかった

シークレットに関する動機

Epic Online Service 等を使うと、必然的にプラットフォームに接続するためのシークレット情報が出てきます。

これらは、通常 SCM で管理すべきではありません。
イントラ内で SCM サーバーを持っている場合は考え方は変わるかもしれませんが、クラウドの SCM を使う場合は漏洩や事故(誤って公開状態でコミットしてしまうなど)はあるものとして運用した方が、もしもの時に慌てずに済みます。

DefaultEngine.ini に書き込まれる

Project Settings でこの手のシークレットを記載すると、DefaultEngine.ini に書き込まれます。

DefaultEngine.ini は多くのプロジェクトに関する設定項目があるため、SCM から除外することができません。

試行錯誤

ini には Paths= といういかにも他のファイルから読み込む用みたいな書き方があるため、さっそくそれを試してみました。(これができれば、シークレットだけファイルを分けて、それを管理外とすればいい)

が、どういうパス指定をしてもうまくいきませんでした。Engine のコードを読めば理解できたのだと思いますが、この問題にそこまで時間をかけたくなかったので断念。。

現在の運用方法

上記2つの記事から、Saved\ にある設定ファイルが優先されかつ、ソース管理からは通常外すということがわかりました。

よって現在は Config\WindowsEditor\Engine.ini (Windows の場合) にシークレット情報を書き込み、DefaultEngine.ini の方にはシークレットのキーは残し、値には「Saved に値を書き込め」のようなメッセージを配置するようにしています。

自分用の生産性プラグインの適用の動機

生産性に関してはそれぞれ考え方が違うと思いますが、スクリプト言語の現場だと、エディターすらもメンバーでバラバラです。(Vim だったり、IDE だったり。UE C++ の開発も、今だと Rider も選択肢に入ってくるのではないでしょうか。)
そして、キーバインドから文字のフォントや配色、利用するプラグインやアドオンも自由にしていると思います。

ただ、Blurprint の開発となると Unreal Editor 一択です。であれば、Unreal Editor をとにかく自分の使いやすいようにしたいところです。(と書きつつ、私は他の言語を書く時はデフォルト厨なのですが、、)

ただ、Plugin を指定すると .uproject に書き込まれてしまいます。当然 .uproject は SCM の管理下なのでチームにその影響が出てしまいます。AutoSizeComment のような無料の Plugin であったとしても、その辺は好みの問題なので迷惑な人もいると思いますし、DarkerNodes のような見た目を変えるだけでかつ有料 Plugin となると、それこそチームで同意を得るのは難しいと思います。

試行錯誤

限られた時間で調べてみたのですが、どうしても安くていい方法が調べられずでした。。

現在の運用方法

現在はプロジェクトの Plugins に、Engine にインストールした Plugin をシンボリックリンクするという方法を取っています。

mklink /D E:\UnrealProjects\MyProject\Plugins\DarkerNodes C:\UnrealEngine\UE_5.0\Engine\Plugins\Marketplace\DarkerNodes
E:\UnrealProjects\MyProject\Plugins\DarkerNodes <<===>> C:\UnrealEngine\UE_5.0\Engine\Plugins\Marketplace\DarkerNodes のシンボリック リンクが作成されました

mklink | Microsoft Learn

ただ、これだけだと Plugins\ 以下は SCM の管理下なので SCM の除外設定を追加します。Plastic SCM の場合は以下のような感じです。

/Plugins
!/Plugins/みんなで使うプラグイン1
!/Plugins/みんなで使うプラグイン2

Plugins フォルダ全体を除外してしまった後に、個別に必要なプラグインだけ有効にします。

これに関しては、Plugins フォルダに入れる共有のプラグインを頻繁に追加したりしないので運用できるというのはあると思います。

注意としては

当然、ランタイムに影響するプラグインはこういう使い方はしてはいけないので、その辺は注意が必要だと思います。

他の方法としては

.uprojectプラグインが追加されたとしても、Enabledtrue にならなければ他のメンバーに影響はでないので、.uproject を誤ってコミットしないことに注意しつつ、自分の環境でだけ true にするというのもありだと思います。(その方が、チームメンバーも「こういうの使ってる人がいるんだぁ」と知ってもらえていいかもしれません)

最後に

もっといい方法が知りたいですね 😅