クック時に特定のプラグインをdisableにしたい

marketplaceで取得したプラグインをクックする際、特定のプラットフォームでのみシェーダコンパイルエラーが起きてしまいます

このためコンパイルエラーを修正するまで(できれば特定プラットフォームのみ、ダメなら全プラットフォームのcook時)そのプラグインをdisableにしたいです

<br/>

しかし、-DisablePluginsの引数は効果がありませんでした。

<br/>

<試した実行コマンド>

RunUAT.bat BuildCookRun -project=<プロジェクトファイルパス> -noP4 -targetplatform=<特定のプラットフォーム>-clientconfig=Development -build -cook -allmaps -ddc=DerivedDataBackendGraph -utf8output -mapfile -DisablePlugins=<プラグイン名>

<br/>

このためcook前にプロジェクトファイルを書き換えて該当プラグインをdisableにする以外に解決できておりません

upluginファイルなどに手を入れることでcookから除外(エディタ上では利用可能)にすることは可能でしょうか?

<br/>

(まだ導入検討中のためエディタ起動時は使えるがパッケージ作成時はひとまず無効にしておきたいのです)

<br/>

なお、具体的にはDungeonArchitectというプラグインでupluginファイルは添付したものになっております

<br/>

<br/>

upluginのPlatformAllowListに必要なPlatformだけ登録しておくか、PlatformDenyListに除外したいPlatformを登録すると良いかと思います。

“PlatformAllowList” : [ “Win64” ]

といった感じです。

Engine/Plugins/Media/ElectraCodecs/ElectraCodecs.uplugin

あたりを参考にすると良いです

Moduleごとの設定ではPlugin丸ごと無効にはならないかもしれません。upluginのルート階層で

{ "FileVersion": 3, 中略 "SupportedTargetPlatforms": [ "Win64" ], "Modules": [のようにSupportedTargetPlatformsを設定すればどうでしょうか。

該当プラグインが手元にないため確実に動作するか確認できていないのですが、

プラグインディスクリプタのモジュール毎のTypeを “EditorNoCommandlet” に変更することが機能するかご確認いただいてもよいでしょうか?

失礼しました。該当プラグインにGamePlayTagが含まれているということでよろしいでしょうか。

このゲームプレイタグがランタイムでの使われておらずゲームの動作に影響を与えていないことを前提として、EditorNoComandletを同関数の条件に追加してこのエラーチェックを一時的に無効化するのがリーズナブルな対応になるかと思います。

> VerifyModuleCanContainGameplayTag関数のif文に|| EditorNoComandletを入れるということですね

はい左様でございます。

> そろそろあきらめてプロジェクトファイルを動的に書き換え手からパッケージビルドしようと思います・・

承知しました。お力になれず大変恐縮です。

ご回答ありがとうございます!

ElectraCodecs.upluginを参考にModules内のすべての項目に

“PlatformAllowList” : [ “Win64” ]

を入れてみたのですがcook時はこの設定は有効にならないのか

変わらずcookエラーとなってしまいました

その場合は

DungeonArchitect.uplugin is referenced via プロジェクト名.uproject with a mismatched ‘SupportedTargetPlatforms’ field. This will cause problems in packaged builds, because the .uplugin file will not be staged. Launch the editor to update references from your project file, or update references from other plugins manually.

のエラーで returned exit code 6 で失敗いたしました・・

ありがとうございます!この設定だとcookからは除外できたのですが今度はVisalStudioでエディタをビルドする際

設定が不正だと怒られまして・・難しいですね・・

Engine\Source\Runtime\GameplayTags\Private\NativeGameplayTags.cpp

ensureAlwaysMsgf(false, TEXT(“Native Gameplay Tag ‘%s’ defined in ‘%s’. The module type is ‘%s’ but needs to be ‘Runtime’ or ‘RuntimeAndProgram’. Client and Server tags must match.”), *TagName.ToString(), *ModuleName.ToString(), EHostType::ToString(Module->Type));

エラーがこうなので

Native Gameplay Tag ‘DAG.Damage’ defined in ‘DungeonArchitectGameplay’. The module type is ‘EditorNoCommandlet’ but needs to be ‘Runtime’ or ‘RuntimeAndProgram’. Client and Server tags must match.

VerifyModuleCanContainGameplayTag関数のif文に|| EditorNoComandletを入れるということですね

影響範囲を考えてコード側の改修は避けたかったので

なんとかupluginの設定だけで解決したく

​問題が出ているDungeonArchitectGameplayを切り離そうとしてのですが

​ “Modules”: [

{

“Name”: “DungeonArchitectRuntime”,

“Type”: “Runtime”,

“LoadingPhase”: “PostConfigInit”

},

{

“Name”: “DungeonArchitectEditor”,

“Type”: “Editor”,

“LoadingPhase”: “Default”

},

{

“Name”: “DungeonArchitectGameplay”,

“Type”: “Runtime”,

“LoadingPhase”: “Default”

},

{

“Name”: “DungeonArchitectGameplaySupport”,

“Type”: “UncookedOnly”,

“LoadingPhase”: “Default”

}

],

“Modules”: [

{

“Name”: “DungeonArchitectRuntime”,

“Type”: “EditorNoCommandlet”,

“LoadingPhase”: “PostConfigInit”

},

{

“Name”: “DungeonArchitectEditor”,

“Type”: “Editor”,

“LoadingPhase”: “Default”

}

],

したところ無事、別のエラーが出まして・・

そろそろあきらめてプロジェクトファイルを動的に書き換え手からパッケージビルドしようと思います・・

大変お世話になりました​