diff --git a/Source/Editor/Cooker/Platform/GDK/GDKPlatformTools.cpp b/Source/Editor/Cooker/Platform/GDK/GDKPlatformTools.cpp index cba41bf82..3e7868b2c 100644 --- a/Source/Editor/Cooker/Platform/GDK/GDKPlatformTools.cpp +++ b/Source/Editor/Cooker/Platform/GDK/GDKPlatformTools.cpp @@ -167,7 +167,6 @@ bool GDKPlatformTools::OnPostProcess(CookingData& data, GDKPlatformSettings* pla const auto gameSettings = GameSettings::Get(); const auto project = Editor::Project; const Char* executableFilename = TEXT("FlaxGame.exe"); - const String name = gameSettings->ProductName; const String assetsFolder = data.DataOutputPath / TEXT("Assets"); if (!FileSystem::DirectoryExists(assetsFolder)) FileSystem::CreateDirectory(assetsFolder); @@ -190,8 +189,10 @@ bool GDKPlatformTools::OnPostProcess(CookingData& data, GDKPlatformSettings* pla const String configFilePath = data.DataOutputPath / TEXT("MicrosoftGame.config"); LOG(Info, "Generating config file to \"{0}\"", configFilePath); { + // Process name to be valid StringBuilder sb; Array validName; + const String& name = platformSettings->Name.HasChars() ? platformSettings->Name : gameSettings->ProductName; for (int32 i = 0; i < name.Length() && validName.Count() <= 50; i++) { auto c = name[i]; diff --git a/Source/Engine/Platform/GDK/GDKPlatformSettings.h b/Source/Engine/Platform/GDK/GDKPlatformSettings.h index 5fedc7ddb..b6eb5fd8f 100644 --- a/Source/Engine/Platform/GDK/GDKPlatformSettings.h +++ b/Source/Engine/Platform/GDK/GDKPlatformSettings.h @@ -18,6 +18,12 @@ API_CLASS(Namespace="FlaxEditor.Content.Settings") class FLAXENGINE_API GDKPlatf DECLARE_SCRIPTING_TYPE_MINIMAL(GDKPlatformSettings); public: + /// + /// Game identity name stored in game package manifest (for store). If empty the product name will be used from Game Settings. + /// + API_FIELD(Attributes="EditorOrder(90), EditorDisplay(\"General\")") + String Name; + /// /// Game publisher identity name stored in game package manifest (for store). /// @@ -113,6 +119,7 @@ public: // [SettingsBase] void Deserialize(DeserializeStream& stream, ISerializeModifier* modifier) override { + DESERIALIZE(Name); DESERIALIZE(PublisherName); DESERIALIZE(PublisherDisplayName); DESERIALIZE(Square150x150Logo);