From f093212884a41662248d6844364ce0aeb443a881 Mon Sep 17 00:00:00 2001 From: Norman Lansing Date: Thu, 26 Mar 2026 21:07:11 -0400 Subject: [PATCH] Lesson 55 working properly now --- .idea/.idea.FPSTemplate.dir/.idea/.gitignore | 15 - .../.idea.FPSTemplate.dir/.idea/encodings.xml | 4 - .../.idea/projectSettingsUpdater.xml | 8 + .../.idea.FPSTemplate.dir/.idea/workspace.xml | 64998 ++++++++++++++++ {Config => Config.bak}/DefaultEditor.ini | 0 Config.bak/DefaultEngine.ini | 189 + {Config => Config.bak}/DefaultGame.ini | 0 Config.bak/DefaultInput.ini | 99 + Config/DefaultEngine.ini | 176 +- Config/DefaultInput.ini | 17 +- .../Blueprints/Game/BP_ShooterGameMode.uasset | Bin 22253 -> 0 bytes .../Game/BP_ShooterGameModeBase.uasset | Bin 0 -> 21989 bytes FPSTemplate.uproject | 8 +- .../DedicatedServers.build.cs | 6 +- .../Private/DedicatedServersModule.cpp | 0 .../Private/Game/DS_GameMode.cpp} | 155 +- .../Private/Game/GameLift/GameLiftClp.cpp | 108 + .../Public/Game/DS_GameMode.h} | 35 +- .../Public/Game/GameLift/GameLiftClpTypes.h | 79 + Source/DedicatedServers/Public/GameLiftClp.h | 29 + Source/FPSTemplate.Target.cs | 1 - Source/FPSTemplate/FPSTemplate.Build.cs | 14 +- .../Private/GameLift/GameLiftClp.cpp | 100 - .../FPSTemplate/Private/GameLiftClpTypes.cpp | 34 - .../Public/Game/ShooterGameModeBase.h | 4 +- .../FPSTemplate/Public/GameLift/GameLiftClp.h | 30 - Source/FPSTemplate/Public/GameLiftClpTypes.h | 37 - Source/FPSTemplateClient.Target.cs | 1 - 28 files changed, 65618 insertions(+), 529 deletions(-) delete mode 100644 .idea/.idea.FPSTemplate.dir/.idea/.gitignore delete mode 100644 .idea/.idea.FPSTemplate.dir/.idea/encodings.xml create mode 100644 .idea/.idea.FPSTemplate.dir/.idea/projectSettingsUpdater.xml create mode 100644 .idea/.idea.FPSTemplate.dir/.idea/workspace.xml rename {Config => Config.bak}/DefaultEditor.ini (100%) create mode 100644 Config.bak/DefaultEngine.ini rename {Config => Config.bak}/DefaultGame.ini (100%) create mode 100644 Config.bak/DefaultInput.ini delete mode 100644 Content/Blueprints/Game/BP_ShooterGameMode.uasset create mode 100644 Content/Blueprints/Game/BP_ShooterGameModeBase.uasset delete mode 100644 Source/DedicatedServers/Private/DedicatedServersModule.cpp rename Source/{FPSTemplate/Private/Game/ShooterGameMode.cpp => DedicatedServers/Private/Game/DS_GameMode.cpp} (65%) create mode 100644 Source/DedicatedServers/Private/Game/GameLift/GameLiftClp.cpp rename Source/{FPSTemplate/Public/Game/ShooterGameMode.h => DedicatedServers/Public/Game/DS_GameMode.h} (75%) create mode 100644 Source/DedicatedServers/Public/Game/GameLift/GameLiftClpTypes.h create mode 100644 Source/DedicatedServers/Public/GameLiftClp.h delete mode 100644 Source/FPSTemplate/Private/GameLift/GameLiftClp.cpp delete mode 100644 Source/FPSTemplate/Private/GameLiftClpTypes.cpp delete mode 100644 Source/FPSTemplate/Public/GameLift/GameLiftClp.h delete mode 100644 Source/FPSTemplate/Public/GameLiftClpTypes.h diff --git a/.idea/.idea.FPSTemplate.dir/.idea/.gitignore b/.idea/.idea.FPSTemplate.dir/.idea/.gitignore deleted file mode 100644 index 83b75a2d..00000000 --- a/.idea/.idea.FPSTemplate.dir/.idea/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/.idea.FPSTemplate.iml -/modules.xml -/contentModel.xml -/projectSettingsUpdater.xml -# Ignored default folder with query files -/queries/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/.idea.FPSTemplate.dir/.idea/encodings.xml b/.idea/.idea.FPSTemplate.dir/.idea/encodings.xml deleted file mode 100644 index df87cf95..00000000 --- a/.idea/.idea.FPSTemplate.dir/.idea/encodings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/.idea.FPSTemplate.dir/.idea/projectSettingsUpdater.xml b/.idea/.idea.FPSTemplate.dir/.idea/projectSettingsUpdater.xml new file mode 100644 index 00000000..ef20cb08 --- /dev/null +++ b/.idea/.idea.FPSTemplate.dir/.idea/projectSettingsUpdater.xml @@ -0,0 +1,8 @@ + + + + + \ No newline at end of file diff --git a/.idea/.idea.FPSTemplate.dir/.idea/workspace.xml b/.idea/.idea.FPSTemplate.dir/.idea/workspace.xml new file mode 100644 index 00000000..2d074a05 --- /dev/null +++ b/.idea/.idea.FPSTemplate.dir/.idea/workspace.xml @@ -0,0 +1,64998 @@ + + + + ../../UE_5_7_3/Engine + ../../UE_5_7_3/Engine/Plugins/Experimental/GameplayGraph/Tests/GameplayGraphTests.Build.cs + ../../UE_5_7_3/Engine/Plugins/Experimental/GlobalConfigurationData/Tests/GlobalConfigurationDataTests.Build.cs + ../../UE_5_7_3/Engine/Plugins/Experimental/SpatialReadiness/Tests/SpatialReadinessTests.Build.cs + ../../UE_5_7_3/Engine/Plugins/Experimental/StateGraph/Tests/StateGraphTests/StateGraphTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/AutoRTFMTests/AutoRTFMTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/AutomationTool/AutomationTool.csproj + ../../UE_5_7_3/Engine/Source/Programs/AutomationToolLauncher/AutomationToolLauncher.csproj + ../../UE_5_7_3/Engine/Source/Programs/BaseTextureBuildWorker/BaseTextureBuildWorker.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/BenchmarkTool/BenchmarkTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/BlankProgram/BlankProgram.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/BreakpadSymbolEncoder/BreakpadSymbolEncoder.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/BuildPatchTool/BuildPatchTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/BuildStorageTool/BuildStorageTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/CSVTools/CSVToTelemetry/CSVToTelemetry.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ChaosUserDataPTTests/ChaosUserDataPTTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ChaosVisualDebugger/ChaosVisualDebugger.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/CmdLink/CmdLink.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/CrashReportClient/CrashReportClient.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/CrashReportClient/CrashReportClientEditor.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/DerivedDataTool/DerivedDataTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/DiffAssetBulkData/DiffAssetBulkData.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/DumpSyms/DumpSyms.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithCADWorker/DatasmithCADWorker.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithFacadeCSharp/DatasmithFacadeCSharp.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2017.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2018.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2019.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2020.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2021.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2022.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2023.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2024.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2025.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2026.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Enterprise/Datasmith/DatasmithSDK/DatasmithSDK.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/EpicWebHelper/EpicWebHelper.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/GPUReshape/Source/GPUReshapeBootstrapper/GPUReshapeBootstrapper.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/GeometryProcessing/GeometryProcessing.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/GitDependencies/GitDependencies.csproj + ../../UE_5_7_3/Engine/Source/Programs/HeadlessChaos/HeadlessChaos.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/HeadlessChaosPerf/HeadlessChaosPerf.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Horde/Samples/HordeTest/HordeTest.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/InterchangeWorker/InterchangeWorker.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/IoStoreOnDemand/IasTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/LiveCodingConsole/LiveCodingConsole.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/LowLevelTests/FoundationTests/FoundationTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/LowLevelTests/MathCoreTests/MathCoreTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/LowLevelTests/StateStreamTests/StateStreamTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/NetworkPredictionTests/NetworkPredictionTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/PlainPropsTests/PlainPropsTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ReplicationSystemLowLevelTests/ReplicationSystemLowLevelTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ReplicationSystemTest/ReplicationSystemTest.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ShaderCompileWorker/ShaderCompileWorker.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Shared/EpicGames.AspNet/EpicGames.AspNet.csproj + ../../UE_5_7_3/Engine/Source/Programs/Shared/EpicGames.Perforce.Fixture/EpicGames.Perforce.Fixture.csproj + ../../UE_5_7_3/Engine/Source/Programs/Shared/EpicGames.Perforce.Native/DotNetPerforceLib.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SlateTests/SlateTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SlateUGS/SlateUGS.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SlateViewer/SlateViewer.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SubmitTool/SubmitTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SwitchboardListener/SblCore/SblCore.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SwitchboardListener/SblSlate/SblSlate.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SwitchboardListener/SwitchboardListener/SwitchboardListener.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SwitchboardListener/SwitchboardListenerCmd/SwitchboardListenerCmd.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SwitchboardListener/SwitchboardListenerTests/SwitchboardListenerTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SwitchboardListenerHelper/SwitchboardListenerHelper.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/SymsLibDump/SymsLibDump.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/TestPAL/TestPAL.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ToolMenusTests/ToolMenusTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/TraceAnalyzer/TraceAnalyzer.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UninstallHelper/UninstallHelper.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealAndroidFileTool/UnrealAndroidFileTool.csproj + ../../UE_5_7_3/Engine/Source/Programs/UnrealAndroidFileTool/UnrealAndroidFileTool.csproj + ../../UE_5_7_3/Engine/Source/Programs/UnrealAndroidFileTool/UnrealAndroidFileTool.csproj + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Agent/UbaAgent.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/CacheService/UbaCacheService.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Cli/UbaCli.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Common/UbaCommon.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Core/UbaCore.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Detours/UbaDetours.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Host/UbaHost.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Mimalloc/UbaMimalloc.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/ObjTool/UbaObjTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/StorageProxy/UbaStorageProxy.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Test/UbaTest.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/TestApp/UbaTestApp.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Version/UbaVersion.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildAccelerator/Visualizer/UbaVisualizer.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealBuildTool/UnrealBuildTool.csproj + ../../UE_5_7_3/Engine/Source/Programs/UnrealFrontend/UnrealFrontend.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealInsights/UnrealInsights.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealLightmass/UnrealLightmass.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealMultiUserServer/UnrealMultiUserServer.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealMultiUserSlateServer/UnrealMultiUserSlateServer.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealObjectPtrTool/UnrealObjectPtrTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealPackageTool/UnrealPackageTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealPak/UnrealPak.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealRecoverySvc/UnrealRecoverySvc.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealVersionSelector/UnrealVersionSelector.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/UnrealVirtualizationTool/UnrealVirtualizationTool.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Unsync/Unsync.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/VirtualProduction/TextureShare/TextureShareSDK.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/WebTests/WebTests.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/Windows/BootstrapPackagedGame/BootstrapPackagedGame.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ZenDashboard/ZenDashboard.Build.cs + ../../UE_5_7_3/Engine/Source/Programs/ZenLaunch/ZenLaunch.Build.cs + ../../UE_5_7_3/Engine/Source/Runtime/Experimental/IoStore/Tests/IoStoreOnDemandTests.Build.cs + ../../UE_5_7_3/Engine/Source/Runtime/Online/Experimental/EventLoopTests/EventLoopUnitTests.Build.cs + FPSTemplate.uproject + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { + "customColor": "", + "associatedIndex": 1 +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1772493213762 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Config/DefaultEditor.ini b/Config.bak/DefaultEditor.ini similarity index 100% rename from Config/DefaultEditor.ini rename to Config.bak/DefaultEditor.ini diff --git a/Config.bak/DefaultEngine.ini b/Config.bak/DefaultEngine.ini new file mode 100644 index 00000000..e9a9348e --- /dev/null +++ b/Config.bak/DefaultEngine.ini @@ -0,0 +1,189 @@ +[SystemSettings] +CommonUI.Debug.CheckGameViewportClientValid=0 + +[/Script/EngineSettings.GameMapsSettings] +GameDefaultMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap +EditorStartupMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap +GlobalDefaultGameMode=/Game/Blueprints/Game/BP_ShooterGameModeBase.BP_ShooterGameModeBase_C +ServerDefaultMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +-D3D12TargetedShaderFormats=PCD3D_SM5 ++D3D12TargetedShaderFormats=PCD3D_SM6 +-D3D11TargetedShaderFormats=PCD3D_SM5 ++D3D11TargetedShaderFormats=PCD3D_SM5 +Compiler=Default +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +SoundCueCookQualityIndex=-1 + +[/Script/Engine.RendererSettings] +r.Mobile.EnableNoPrecomputedLightingCSMShader=True + +r.GenerateMeshDistanceFields=True + +r.DynamicGlobalIlluminationMethod=1 + +r.ReflectionMethod=1 + +r.Shadow.Virtual.Enable=1 + +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True + +r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8 + +r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8 +r.DefaultFeature.MotionBlur=False + +[/Script/LinuxTargetPlatform.LinuxTargetSettings] +-TargetedRHIs=SF_VULKAN_SM5 ++TargetedRHIs=SF_VULKAN_SM6 + +[/Script/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Desktop +AppliedTargetedHardwareClass=Desktop +DefaultGraphicsPerformance=Maximum +AppliedDefaultGraphicsPerformance=Maximum + +[/Script/WorldPartitionEditor.WorldPartitionEditorSettings] +CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' + +[/Script/Engine.UserInterfaceSettings] +bAuthorizeAutomaticWidgetVariableCreation=False +FontDPIPreset=Standard +FontDPI=72 + +[/Script/Engine.Engine] ++ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/FPSTemplate") ++ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/FPSTemplate") + +[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] +bEnablePlugin=True +bAllowNetworkConnection=True +SecurityToken=62442D434388E2324BF7AFB7F208A9F3 +bIncludeInShipping=False +bAllowExternalStartInShipping=False +bCompileAFSProject=False +bUseCompression=False +bLogFiles=False +bReportStats=False +ConnectionType=USBOnly +bUseManualIPAddress=False +ManualIPAddress= + +[/Script/Engine.CollisionProfile] +-Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False) +-Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) +-Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False) +-Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False) +-Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False) +-Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False) +-Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False) +-Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False) +-Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False) +-Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False) +-Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) ++Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision") ++Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.") ++Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ") ++Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ") ++Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.") ++Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.") ++Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors") ++Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors") ++Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.") ++Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.") ++Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.") ++Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.") ++Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.") ++Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") ++Profiles=(Name="Pickup",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Weapon",Response=ECR_Ignore)),HelpMessage="Only overlaps with Pawn") ++DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Block,bTraceType=True,bStaticObject=False,Name="Weapon") ++EditProfiles=(Name="Pawn",CustomResponses=((Channel="Weapon",Response=ECR_Ignore))) +-ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") +-ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") +-ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") +-ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") +-ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") ++ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") ++ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") ++ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") ++ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") ++ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") +-CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") +-CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") +-CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") +-CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") ++CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") ++CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") ++CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") ++CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") + +[/Script/Engine.PhysicsSettings] +PhysicsPrediction=(bEnablePhysicsPrediction=False,bEnablePhysicsResimulation=False,ResimulationErrorThreshold=10.000000,MaxSupportedLatencyPrediction=1000.000000) +PhysicErrorCorrection=(PingExtrapolation=0.100000,PingLimit=100.000000,ErrorPerLinearDifference=1.000000,ErrorPerAngularDifference=1.000000,MaxRestoredStateError=1.000000,MaxLinearHardSnapDistance=400.000000,PositionLerp=0.000000,AngleLerp=0.400000,LinearVelocityCoefficient=100.000000,AngularVelocityCoefficient=10.000000,ErrorAccumulationSeconds=0.500000,ErrorAccumulationDistanceSq=15.000000,ErrorAccumulationSimilarity=100.000000) +DefaultDegreesOfFreedom=Full3D +bSuppressFaceRemapTable=False +bSupportUVFromHitResults=False +bDisableActiveActors=False +bDisableKinematicStaticPairs=False +bDisableKinematicKinematicPairs=False +bDisableCCD=False +AnimPhysicsMinDeltaTime=0.000000 +bSimulateAnimPhysicsAfterReset=False +MinPhysicsDeltaTime=0.000000 +MaxPhysicsDeltaTime=0.033333 +bSubstepping=False +bSubsteppingAsync=False +bTickPhysicsAsync=False +AsyncFixedTimeStepSize=0.033333 +MaxSubstepDeltaTime=0.016667 +MaxSubsteps=6 +SyncSceneSmoothingFactor=0.000000 +InitialAverageFrameRate=0.016667 +PhysXTreeRebuildRate=10 ++PhysicalSurfaces=(Type=SurfaceType1,Name="Character") ++PhysicalSurfaces=(Type=SurfaceType2,Name="Concrete") ++PhysicalSurfaces=(Type=SurfaceType3,Name="Glass") +DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,bUseMBPOuterBounds=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=False),MBPOuterBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=False),MBPNumSubdivs=2) +MinDeltaVelocityForHitEvents=0.000000 +ChaosSettings=(DefaultThreadingModel=TaskGraph,DedicatedThreadTickMode=VariableCappedWithTarget,DedicatedThreadBufferMode=Double) + +[URL] +DefaultPort=7777 + +[CoreRedirects] ++EnumRedirects=(OldName="/Script/FPSTemplate.EvalidationError",NewName="/Script/FPSTemplate.EValidationError") ++FunctionRedirects=(OldName="/Script/FPSTemplate.GameLiftValidators.LogValidataErrorMessage",NewName="/Script/FPSTemplate.GameLiftValidators.LogValidationErrorMessage") +;+PropertyRedirects=(OldName="/Script/FPSTemplate.CommandLineArgs.Arguments",NewName="/Script/FPSTemplate.CommandLineArgs.CmdArguments") + diff --git a/Config/DefaultGame.ini b/Config.bak/DefaultGame.ini similarity index 100% rename from Config/DefaultGame.ini rename to Config.bak/DefaultGame.ini diff --git a/Config.bak/DefaultInput.ini b/Config.bak/DefaultInput.ini new file mode 100644 index 00000000..91fbc4d3 --- /dev/null +++ b/Config.bak/DefaultInput.ini @@ -0,0 +1,99 @@ +[/Script/Engine.InputSettings] +-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +bAltEnterTogglesFullscreen=True +bF11TogglesFullscreen=True +bUseMouseForTouch=False +bEnableMouseSmoothing=True +bEnableFOVScaling=True +bCaptureMouseOnLaunch=True +bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bEnableInputDeviceSubsystem=True +bShouldFlushPressedKeysOnViewportFocusLost=True +bEnableDynamicComponentInputBinding=True +bAlwaysShowTouchInterface=False +bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 ++ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Gamepad_FaceButton_Bottom) ++ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar) ++AxisMappings=(AxisName="Look Up / Down Gamepad",Scale=1.000000,Key=Gamepad_RightY) ++AxisMappings=(AxisName="Look Up / Down Mouse",Scale=-1.000000,Key=MouseY) ++AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=Gamepad_LeftY) ++AxisMappings=(AxisName="Move Forward / Backward",Scale=-1.000000,Key=S) ++AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=W) ++AxisMappings=(AxisName="Move Right / Left",Scale=-1.000000,Key=A) ++AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=D) ++AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=Gamepad_LeftX) ++AxisMappings=(AxisName="Turn Right / Left Gamepad",Scale=1.000000,Key=Gamepad_RightX) ++AxisMappings=(AxisName="Turn Right / Left Mouse",Scale=1.000000,Key=MouseX) +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent +DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde ++ConsoleKeys=Caret + diff --git a/Config/DefaultEngine.ini b/Config/DefaultEngine.ini index 9f9551ab..9ab1e391 100644 --- a/Config/DefaultEngine.ini +++ b/Config/DefaultEngine.ini @@ -1,85 +1,7 @@ -[SystemSettings] -CommonUI.Debug.CheckGameViewportClientValid=0 - -[/Script/EngineSettings.GameMapsSettings] -GameDefaultMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap -EditorStartupMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap -GlobalDefaultGameMode=/Game/Blueprints/Game/BP_ShooterGameMode.BP_ShooterGameMode_C -ServerDefaultMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap - -[/Script/WindowsTargetPlatform.WindowsTargetSettings] -DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 --D3D12TargetedShaderFormats=PCD3D_SM5 -+D3D12TargetedShaderFormats=PCD3D_SM6 --D3D11TargetedShaderFormats=PCD3D_SM5 -+D3D11TargetedShaderFormats=PCD3D_SM5 -Compiler=Default -AudioSampleRate=48000 -AudioCallbackBufferFrameSize=1024 -AudioNumBuffersToEnqueue=1 -AudioMaxChannels=0 -AudioNumSourceWorkers=4 -SpatializationPlugin= -SourceDataOverridePlugin= -ReverbPlugin= -OcclusionPlugin= -CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) -CacheSizeKB=65536 -MaxChunkSizeOverrideKB=0 -bResampleForDevice=False -MaxSampleRate=48000.000000 -HighSampleRate=32000.000000 -MedSampleRate=24000.000000 -LowSampleRate=12000.000000 -MinSampleRate=8000.000000 -CompressionQualityModifier=1.000000 -AutoStreamingThreshold=0.000000 -SoundCueCookQualityIndex=-1 - -[/Script/Engine.RendererSettings] -r.Mobile.EnableNoPrecomputedLightingCSMShader=True - -r.GenerateMeshDistanceFields=True - -r.DynamicGlobalIlluminationMethod=1 - -r.ReflectionMethod=1 - -r.Shadow.Virtual.Enable=1 - -r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True - -r.DefaultFeature.LocalExposure.HighlightContrastScale=0.8 - -r.DefaultFeature.LocalExposure.ShadowContrastScale=0.8 -r.DefaultFeature.MotionBlur=False - -[/Script/LinuxTargetPlatform.LinuxTargetSettings] --TargetedRHIs=SF_VULKAN_SM5 -+TargetedRHIs=SF_VULKAN_SM6 - -[/Script/HardwareTargeting.HardwareTargetingSettings] -TargetedHardwareClass=Desktop -AppliedTargetedHardwareClass=Desktop -DefaultGraphicsPerformance=Maximum -AppliedDefaultGraphicsPerformance=Maximum - -[/Script/WorldPartitionEditor.WorldPartitionEditorSettings] -CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' - -[/Script/Engine.UserInterfaceSettings] -bAuthorizeAutomaticWidgetVariableCreation=False -FontDPIPreset=Standard -FontDPI=72 - -[/Script/Engine.Engine] -+ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/FPSTemplate") -+ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/FPSTemplate") - [/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] bEnablePlugin=True bAllowNetworkConnection=True -SecurityToken=62442D434388E2324BF7AFB7F208A9F3 +SecurityToken=84E00C58412CE2A05A24C09DC3639CFC bIncludeInShipping=False bAllowExternalStartInShipping=False bCompileAFSProject=False @@ -90,99 +12,3 @@ ConnectionType=USBOnly bUseManualIPAddress=False ManualIPAddress= -[/Script/Engine.CollisionProfile] --Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision",bCanModify=False) --Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) --Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) --Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ",bCanModify=False) --Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) --Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.",bCanModify=False) --Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ",bCanModify=False) --Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ",bCanModify=False) --Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic",Response=ECR_Block),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.",bCanModify=False) --Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.",bCanModify=False) --Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors",bCanModify=False) --Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors",bCanModify=False) --Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.",bCanModify=False) --Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.",bCanModify=False) --Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.",bCanModify=False) --Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.",bCanModify=False) --Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.",bCanModify=False) --Profiles=(Name="UI",CollisionEnabled=QueryOnly,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Block),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ",bCanModify=False) -+Profiles=(Name="NoCollision",CollisionEnabled=NoCollision,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="No collision") -+Profiles=(Name="BlockAll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=,HelpMessage="WorldStatic object that blocks all actors by default. All new custom channels will use its own default response. ") -+Profiles=(Name="OverlapAll",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") -+Profiles=(Name="BlockAllDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=,HelpMessage="WorldDynamic object that blocks all actors by default. All new custom channels will use its own default response. ") -+Profiles=(Name="OverlapAllDynamic",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Overlap),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that overlaps all actors by default. All new custom channels will use its own default response. ") -+Profiles=(Name="IgnoreOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that ignores Pawn and Vehicle. All other channels will be set to default.") -+Profiles=(Name="OverlapOnlyPawn",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Pawn",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that overlaps Pawn, Camera, and Vehicle. All other channels will be set to default. ") -+Profiles=(Name="Pawn",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object. Can be used for capsule of any playerable character or AI. ") -+Profiles=(Name="Spectator",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="WorldStatic"),(Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore)),HelpMessage="Pawn object that ignores all other actors except WorldStatic.") -+Profiles=(Name="CharacterMesh",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="Pawn",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Pawn object that is used for Character Mesh. All other channels will be set to default.") -+Profiles=(Name="PhysicsActor",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=,HelpMessage="Simulating actors") -+Profiles=(Name="Destructible",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Destructible",CustomResponses=,HelpMessage="Destructible actors") -+Profiles=(Name="InvisibleWall",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldStatic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldStatic object that is invisible.") -+Profiles=(Name="InvisibleWallDynamic",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="Visibility",Response=ECR_Ignore)),HelpMessage="WorldDynamic object that is invisible.") -+Profiles=(Name="Trigger",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldDynamic object that is used for trigger. All other channels will be set to default.") -+Profiles=(Name="Ragdoll",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="PhysicsBody",CustomResponses=((Channel="Pawn",Response=ECR_Ignore),(Channel="Visibility",Response=ECR_Ignore)),HelpMessage="Simulating Skeletal Mesh Component. All other channels will be set to default.") -+Profiles=(Name="Vehicle",CollisionEnabled=QueryAndPhysics,bCanModify=False,ObjectTypeName="Vehicle",CustomResponses=,HelpMessage="Vehicle object that blocks Vehicle, WorldStatic, and WorldDynamic. All other channels will be set to default.") -+Profiles=(Name="UI",CollisionEnabled=QueryOnly,bCanModify=False,ObjectTypeName="WorldDynamic",CustomResponses=((Channel="WorldStatic",Response=ECR_Overlap),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility"),(Channel="WorldDynamic",Response=ECR_Overlap),(Channel="Camera",Response=ECR_Overlap),(Channel="PhysicsBody",Response=ECR_Overlap),(Channel="Vehicle",Response=ECR_Overlap),(Channel="Destructible",Response=ECR_Overlap)),HelpMessage="WorldStatic object that overlaps all actors by default. All new custom channels will use its own default response. ") -+Profiles=(Name="Pickup",CollisionEnabled=QueryOnly,bCanModify=True,ObjectTypeName="WorldStatic",CustomResponses=((Channel="WorldStatic",Response=ECR_Ignore),(Channel="WorldDynamic",Response=ECR_Ignore),(Channel="Pawn",Response=ECR_Overlap),(Channel="Visibility",Response=ECR_Ignore),(Channel="Camera",Response=ECR_Ignore),(Channel="PhysicsBody",Response=ECR_Ignore),(Channel="Vehicle",Response=ECR_Ignore),(Channel="Destructible",Response=ECR_Ignore),(Channel="Weapon",Response=ECR_Ignore)),HelpMessage="Only overlaps with Pawn") -+DefaultChannelResponses=(Channel=ECC_GameTraceChannel1,DefaultResponse=ECR_Block,bTraceType=True,bStaticObject=False,Name="Weapon") -+EditProfiles=(Name="Pawn",CustomResponses=((Channel="Weapon",Response=ECR_Ignore))) --ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") --ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") --ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") --ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") --ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") -+ProfileRedirects=(OldName="BlockingVolume",NewName="InvisibleWall") -+ProfileRedirects=(OldName="InterpActor",NewName="IgnoreOnlyPawn") -+ProfileRedirects=(OldName="StaticMeshComponent",NewName="BlockAllDynamic") -+ProfileRedirects=(OldName="SkeletalMeshActor",NewName="PhysicsActor") -+ProfileRedirects=(OldName="InvisibleActor",NewName="InvisibleWallDynamic") --CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") --CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") --CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") --CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") -+CollisionChannelRedirects=(OldName="Static",NewName="WorldStatic") -+CollisionChannelRedirects=(OldName="Dynamic",NewName="WorldDynamic") -+CollisionChannelRedirects=(OldName="VehicleMovement",NewName="Vehicle") -+CollisionChannelRedirects=(OldName="PawnMovement",NewName="Pawn") - -[/Script/Engine.PhysicsSettings] -PhysicsPrediction=(bEnablePhysicsPrediction=False,bEnablePhysicsResimulation=False,ResimulationErrorThreshold=10.000000,MaxSupportedLatencyPrediction=1000.000000) -PhysicErrorCorrection=(PingExtrapolation=0.100000,PingLimit=100.000000,ErrorPerLinearDifference=1.000000,ErrorPerAngularDifference=1.000000,MaxRestoredStateError=1.000000,MaxLinearHardSnapDistance=400.000000,PositionLerp=0.000000,AngleLerp=0.400000,LinearVelocityCoefficient=100.000000,AngularVelocityCoefficient=10.000000,ErrorAccumulationSeconds=0.500000,ErrorAccumulationDistanceSq=15.000000,ErrorAccumulationSimilarity=100.000000) -DefaultDegreesOfFreedom=Full3D -bSuppressFaceRemapTable=False -bSupportUVFromHitResults=False -bDisableActiveActors=False -bDisableKinematicStaticPairs=False -bDisableKinematicKinematicPairs=False -bDisableCCD=False -AnimPhysicsMinDeltaTime=0.000000 -bSimulateAnimPhysicsAfterReset=False -MinPhysicsDeltaTime=0.000000 -MaxPhysicsDeltaTime=0.033333 -bSubstepping=False -bSubsteppingAsync=False -bTickPhysicsAsync=False -AsyncFixedTimeStepSize=0.033333 -MaxSubstepDeltaTime=0.016667 -MaxSubsteps=6 -SyncSceneSmoothingFactor=0.000000 -InitialAverageFrameRate=0.016667 -PhysXTreeRebuildRate=10 -+PhysicalSurfaces=(Type=SurfaceType1,Name="Character") -+PhysicalSurfaces=(Type=SurfaceType2,Name="Concrete") -+PhysicalSurfaces=(Type=SurfaceType3,Name="Glass") -DefaultBroadphaseSettings=(bUseMBPOnClient=False,bUseMBPOnServer=False,bUseMBPOuterBounds=False,MBPBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=False),MBPOuterBounds=(Min=(X=0.000000,Y=0.000000,Z=0.000000),Max=(X=0.000000,Y=0.000000,Z=0.000000),IsValid=False),MBPNumSubdivs=2) -MinDeltaVelocityForHitEvents=0.000000 -ChaosSettings=(DefaultThreadingModel=TaskGraph,DedicatedThreadTickMode=VariableCappedWithTarget,DedicatedThreadBufferMode=Double) - -[URL] -DefaultPort=7777 - -[CoreRedirects] -+EnumRedirects=(OldName="/Script/FPSTemplate.EvalidationError",NewName="/Script/FPSTemplate.EValidationError") -+FunctionRedirects=(OldName="/Script/FPSTemplate.GameLiftValidators.LogValidataErrorMessage",NewName="/Script/FPSTemplate.GameLiftValidators.LogValidationErrorMessage") -;+PropertyRedirects=(OldName="/Script/FPSTemplate.CommandLineArgs.Arguments",NewName="/Script/FPSTemplate.CommandLineArgs.CmdArguments") \ No newline at end of file diff --git a/Config/DefaultInput.ini b/Config/DefaultInput.ini index 91fbc4d3..5b8df5cd 100644 --- a/Config/DefaultInput.ini +++ b/Config/DefaultInput.ini @@ -67,33 +67,20 @@ bCaptureMouseOnLaunch=True bEnableLegacyInputScales=True bEnableMotionControls=True bFilterInputByPlatformUser=False -bEnableInputDeviceSubsystem=True bShouldFlushPressedKeysOnViewportFocusLost=True -bEnableDynamicComponentInputBinding=True bAlwaysShowTouchInterface=False bShowConsoleOnFourFingerTap=True bEnableGestureRecognizer=False bUseAutocorrect=False +bEnabledLegacyMappingDeprecationWarnings=True DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown DefaultViewportMouseLockMode=LockOnCapture FOVScale=0.011110 DoubleClickTime=0.200000 -+ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=Gamepad_FaceButton_Bottom) -+ActionMappings=(ActionName="Jump",bShift=False,bCtrl=False,bAlt=False,bCmd=False,Key=SpaceBar) -+AxisMappings=(AxisName="Look Up / Down Gamepad",Scale=1.000000,Key=Gamepad_RightY) -+AxisMappings=(AxisName="Look Up / Down Mouse",Scale=-1.000000,Key=MouseY) -+AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=Gamepad_LeftY) -+AxisMappings=(AxisName="Move Forward / Backward",Scale=-1.000000,Key=S) -+AxisMappings=(AxisName="Move Forward / Backward",Scale=1.000000,Key=W) -+AxisMappings=(AxisName="Move Right / Left",Scale=-1.000000,Key=A) -+AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=D) -+AxisMappings=(AxisName="Move Right / Left",Scale=1.000000,Key=Gamepad_LeftX) -+AxisMappings=(AxisName="Turn Right / Left Gamepad",Scale=1.000000,Key=Gamepad_RightX) -+AxisMappings=(AxisName="Turn Right / Left Mouse",Scale=1.000000,Key=MouseX) +DeprecatedActionAndAxisNames=() DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks -ConsoleKeys=Tilde +ConsoleKeys=Tilde -+ConsoleKeys=Caret diff --git a/Content/Blueprints/Game/BP_ShooterGameMode.uasset b/Content/Blueprints/Game/BP_ShooterGameMode.uasset deleted file mode 100644 index fc6bb9b84f96bd7880a96356c52ace8090bcf236..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22253 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"GameLiftServerSDK"); FGameLiftGenericOutcome InitSdkOutcome; - UE_LOGFMT(LogShooterGameMode, Log, "Initializing the GameLift Server..."); + UE_LOGFMT(LogDS_GameMode, Log, "Initializing the GameLift Server..."); if (GameLiftConfig.bIsAnywhereFleet) { // Define the server parameters for an Anywhere fleet. These are not needed for a GameLift managed EC2 fleet. @@ -106,7 +101,7 @@ void AShooterGameMode::InitGameLift() uint32 PID = FPlatformProcess::GetCurrentProcessId(); FString PIDString = FString::FromInt(static_cast(PID)); - UE_LOGFMT(LogShooterGameMode, Log, "Configuring server parameters for Anywhere..."); + UE_LOGFMT(LogDS_GameMode, Log, "Configuring server parameters for Anywhere..."); // If AnywhereFleets are being used load the command line arguments parsed earlier. ServerParametersForAnywhere.m_webSocketUrl = TCHAR_TO_UTF8(*GameLiftConfig.WebSocketUrlResult.Value); ServerParametersForAnywhere.m_fleetId = TCHAR_TO_UTF8((*GameLiftConfig.FleetIdResult.Value)); @@ -125,17 +120,17 @@ void AShooterGameMode::InitGameLift() if (InitSdkOutcome.IsSuccess()) { - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_GREEN); - UE_LOG(LogShooterGameMode, Log, TEXT("GameLift InitSDK succeeded!")); - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_NONE); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_GREEN); + UE_LOG(LogDS_GameMode, Log, TEXT("GameLift InitSDK succeeded!")); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_NONE); } else { - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_RED); - UE_LOG(LogShooterGameMode, Log, TEXT("ERROR: InitSDK failed : (")); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_RED); + UE_LOG(LogDS_GameMode, Log, TEXT("ERROR: InitSDK failed : (")); FGameLiftError GameLiftError = InitSdkOutcome.GetError(); - UE_LOG(LogShooterGameMode, Log, TEXT("ERROR: %s"), *GameLiftError.m_errorMessage); - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_NONE); + UE_LOG(LogDS_GameMode, Log, TEXT("ERROR: %s"), *GameLiftError.m_errorMessage); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_NONE); return; } @@ -147,7 +142,7 @@ void AShooterGameMode::InitGameLift() ProcessParameters->OnStartGameSession.BindLambda([=](Aws::GameLift::Server::Model::GameSession InGameSession) { const FString GameSessionId = FString(InGameSession.GetGameSessionId()); - UE_LOG(LogShooterGameMode, Log, TEXT("GameSession Initializing: %s"), *GameSessionId); + UE_LOG(LogDS_GameMode, Log, TEXT("GameSession Initializing: %s"), *GameSessionId); GameLiftSdkModule->ActivateGameSession(); }); @@ -156,24 +151,24 @@ void AShooterGameMode::InitGameLift() //In this case, we simply tell Amazon GameLift Servers we are indeed going to shut down. ProcessParameters->OnTerminate.BindLambda([=]() { - UE_LOG(LogShooterGameMode, Log, TEXT("Game Server Process is terminating")); + UE_LOG(LogDS_GameMode, Log, TEXT("Game Server Process is terminating")); // First call ProcessEnding() FGameLiftGenericOutcome processEndingOutcome = GameLiftSdkModule->ProcessEnding(); // Then call Destroy() to free the SDK from memory FGameLiftGenericOutcome destroyOutcome = GameLiftSdkModule->Destroy(); // Exit the process with success or failure if (processEndingOutcome.IsSuccess() && destroyOutcome.IsSuccess()) { - UE_LOG(LogShooterGameMode, Log, TEXT("Server process ending successfully")); + UE_LOG(LogDS_GameMode, Log, TEXT("Server process ending successfully")); } else { if (!processEndingOutcome.IsSuccess()) { const FGameLiftError& error = processEndingOutcome.GetError(); - UE_LOG(LogShooterGameMode, Error, TEXT("ProcessEnding() failed. Error: %s"), + UE_LOG(LogDS_GameMode, Error, TEXT("ProcessEnding() failed. Error: %s"), error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage); } if (!destroyOutcome.IsSuccess()) { const FGameLiftError& error = destroyOutcome.GetError(); - UE_LOG(LogShooterGameMode, Error, TEXT("Destroy() failed. Error: %s"), + UE_LOG(LogDS_GameMode, Error, TEXT("Destroy() failed. Error: %s"), error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage); } } @@ -189,7 +184,7 @@ void AShooterGameMode::InitGameLift() //In this case, we're always healthy! ProcessParameters->OnHealthCheck.BindLambda([]() { - UE_LOG(LogShooterGameMode, Log, TEXT("Performing Health Check")); + UE_LOG(LogDS_GameMode, Log, TEXT("Performing Health Check")); return true; }); @@ -199,32 +194,33 @@ void AShooterGameMode::InitGameLift() Logfiles.Add(TEXT("FPSTemplate/Saved/Log/server.log")); ProcessParameters->logParameters = Logfiles; - UE_LOGFMT(LogShooterGameMode, Log, "Calling Process Ready..."); + UE_LOGFMT(LogDS_GameMode, Log, "Calling Process Ready..."); FGameLiftGenericOutcome ProcessReadyOutcome = GameLiftSdkModule->ProcessReady(*ProcessParameters); if (ProcessReadyOutcome.IsSuccess()) { - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_GREEN); - UE_LOG(LogShooterGameMode, Log, TEXT("Process Ready!")); - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_NONE); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_GREEN); + UE_LOG(LogDS_GameMode, Log, TEXT("Process Ready!")); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_NONE); } else { - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_RED); - UE_LOG(LogShooterGameMode, Log, TEXT("ERROR: Process Ready Failed!")); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_RED); + UE_LOG(LogDS_GameMode, Log, TEXT("ERROR: Process Ready Failed!")); FGameLiftError ProcessReadyError = ProcessReadyOutcome.GetError(); - UE_LOG(LogShooterGameMode, Log, TEXT("ERROR: %s"), *ProcessReadyError.m_errorMessage); - UE_LOG(LogShooterGameMode, SetColor, TEXT("%s"), COLOR_NONE); + UE_LOG(LogDS_GameMode, Log, TEXT("ERROR: %s"), *ProcessReadyError.m_errorMessage); + UE_LOG(LogDS_GameMode, SetColor, TEXT("%s"), COLOR_NONE); return; } - UE_LOGFMT(LogShooterGameMode, Log, "InitGameLift completed!"); + UE_LOGFMT(LogDS_GameMode, Log, "InitGameLift completed!"); #endif } -bool AShooterGameMode::GetAnywhereFleetParameters(const FString& CommandLineString) +bool ADS_GameMode::GetAnywhereFleetParameters(const FString& CommandLineString) { +#if WITH_GAMELIFT bool bAllAnywhereFleetParametersValid = true; GameLiftConfig.AuthTokenResult = cmdlineparser::GetValueOfToken(CommandLineString, cmdlineparser::details::EAvailableTokens::AuthToken); if (!GameLiftConfig.AuthTokenResult.bIsValid) bAllAnywhereFleetParametersValid = false; @@ -239,25 +235,29 @@ bool AShooterGameMode::GetAnywhereFleetParameters(const FString& CommandLineStri if (!GameLiftConfig.WebSocketUrlResult.bIsValid) bAllAnywhereFleetParametersValid = false; return bAllAnywhereFleetParametersValid; +#else + return false; +#endif + } -void AShooterGameMode::LogAnywhereFleetParameters() +void ADS_GameMode::LogAnywhereFleetParameters() { // Lambda for getting the token name from token auto GetTokenName = [](const cmdlineparser::details::FParseResult& Result) -> FString { - return cmdlineparser::details::CLI_TOKENS[static_cast(Result.Token)]; + return cmdlineparser::details::CLI_TOKENS.FindRef(Result.Token); }; - UE_LOGFMT(LogShooterGameMode, Log, "Anywhere Fleet Parameters:"); + UE_LOGFMT(LogDS_GameMode, Log, "Anywhere Fleet Parameters:"); if (GameLiftConfig.AuthTokenResult.bIsValid) { - UE_LOGFMT(LogShooterGameMode, Log, "AuthToken: {0}", GetValueOrHash(GameLiftConfig.AuthTokenResult.Value)); + UE_LOGFMT(LogDS_GameMode, Log, "AuthToken: {0}", GetValueOrHash(GameLiftConfig.AuthTokenResult.Value)); } else { UE_LOGFMT( - LogShooterGameMode, + LogDS_GameMode, Error, "AuthToken: {0}", FString::Format( @@ -272,12 +272,12 @@ void AShooterGameMode::LogAnywhereFleetParameters() if (GameLiftConfig.FleetIdResult.bIsValid) { - UE_LOGFMT(LogShooterGameMode, Log, "FleetId: {0}", GameLiftConfig.FleetIdResult.Value); + UE_LOGFMT(LogDS_GameMode, Log, "FleetId: {0}", GameLiftConfig.FleetIdResult.Value); } else { UE_LOGFMT( - LogShooterGameMode, + LogDS_GameMode, Error, "FleetId: {0}", FString::Format( @@ -292,12 +292,12 @@ void AShooterGameMode::LogAnywhereFleetParameters() if (GameLiftConfig.HostIdResult.bIsValid) { - UE_LOGFMT(LogShooterGameMode, Log, "HostId: {0}", GameLiftConfig.HostIdResult.Value); + UE_LOGFMT(LogDS_GameMode, Log, "HostId: {0}", GameLiftConfig.HostIdResult.Value); } else { UE_LOGFMT( - LogShooterGameMode, + LogDS_GameMode, Error, "HostId: {0}", FString::Format( @@ -312,12 +312,12 @@ void AShooterGameMode::LogAnywhereFleetParameters() if (GameLiftConfig.WebSocketUrlResult.bIsValid) { - UE_LOGFMT(LogShooterGameMode, Log, "WebSocketUrl: {0}", GameLiftConfig.WebSocketUrlResult.Value); + UE_LOGFMT(LogDS_GameMode, Log, "WebSocketUrl: {0}", GameLiftConfig.WebSocketUrlResult.Value); } else { UE_LOGFMT( - LogShooterGameMode, + LogDS_GameMode, Error, "WebSocketUrl: {0}", FString::Format( @@ -330,53 +330,52 @@ void AShooterGameMode::LogAnywhereFleetParameters() ); } - UE_LOGFMT(LogShooterGameMode, Log, "Server Port: {0}", GameLiftConfig.ServerPort); + UE_LOGFMT(LogDS_GameMode, Log, "Server Port: {0}", GameLiftConfig.ServerPort); if (GameLiftConfig.bAllOptionsFound) { - UE_LOGFMT(LogShooterGameMode, Log, "Anywhere Fleet Parameters Loaded Successfully...."); + UE_LOGFMT(LogDS_GameMode, Log, "Anywhere Fleet Parameters Loaded Successfully...."); } else { - UE_LOGFMT(LogShooterGameMode, Error, "Anywhere Fleet Parameters Load FAILED...."); + UE_LOGFMT(LogDS_GameMode, Error, "Anywhere Fleet Parameters Load FAILED...."); } } -#if WITH_GAMELIFT -void AShooterGameMode::LogServerParameters(const FServerParameters& InServerParameters) +void ADS_GameMode::LogServerParameters(const FServerParameters& InServerParameters) { - - UE_LOGFMT(LogShooterGameMode, Log, ">>>> WebSocket URL: {WebSocketUrl}", InServerParameters.m_webSocketUrl); - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Fleet ID: {FleetId}", InServerParameters.m_fleetId); - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Process ID: {ProcessId}", InServerParameters.m_processId); - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Host ID (Compute Name): {HostId}", InServerParameters.m_hostId); - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Auth Token: {AuthToken}", GetValueOrHash(InServerParameters.m_authToken)); +#if WITH_GAMELIFT + UE_LOGFMT(LogDS_GameMode, Log, ">>>> WebSocket URL: {WebSocketUrl}", InServerParameters.m_webSocketUrl); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Fleet ID: {FleetId}", InServerParameters.m_fleetId); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Process ID: {ProcessId}", InServerParameters.m_processId); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Host ID (Compute Name): {HostId}", InServerParameters.m_hostId); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Auth Token: {AuthToken}", GetValueOrHash(InServerParameters.m_authToken)); if (!InServerParameters.m_awsRegion.IsEmpty()) { - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Aws Region: {AwsRegion}", InServerParameters.m_awsRegion); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Aws Region: {AwsRegion}", InServerParameters.m_awsRegion); } if (!InServerParameters.m_accessKey.IsEmpty()) { - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Access Key: {AccessKey}", GetValueOrHash(InServerParameters.m_accessKey)); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Access Key: {AccessKey}", GetValueOrHash(InServerParameters.m_accessKey)); } if (!InServerParameters.m_secretKey.IsEmpty()) { - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Secret Key: {SecretKey}", GetValueOrHash(InServerParameters.m_secretKey)); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Secret Key: {SecretKey}", GetValueOrHash(InServerParameters.m_secretKey)); } if (!InServerParameters.m_sessionToken.IsEmpty()) { - UE_LOGFMT(LogShooterGameMode, Log, ">>>> Session Token: {SessionToken}", GetValueOrHash(InServerParameters.m_sessionToken)); + UE_LOGFMT(LogDS_GameMode, Log, ">>>> Session Token: {SessionToken}", GetValueOrHash(InServerParameters.m_sessionToken)); } +#endif } -#endif -FString AShooterGameMode::GetValueOrHash(const FString& Value) +FString ADS_GameMode::GetValueOrHash(const FString& Value) { #if UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT return Value; diff --git a/Source/DedicatedServers/Private/Game/GameLift/GameLiftClp.cpp b/Source/DedicatedServers/Private/Game/GameLift/GameLiftClp.cpp new file mode 100644 index 00000000..b5f9e8bf --- /dev/null +++ b/Source/DedicatedServers/Private/Game/GameLift/GameLiftClp.cpp @@ -0,0 +1,108 @@ +#include "GameLiftClp.h" + +namespace cmdlineparser +{ + FPortResult cmdlineparser::GetConfiguredOrDefaultPort(const FString& Token) + { + return details::GetConfiguredOrDefaultPort(FCommandLine::Get(), Token); + } + + FPortResult cmdlineparser::GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token) + { + return details::GetConfiguredOrDefaultPort(CommandLine, Token); + } + + details::FParseResult cmdlineparser::GetValueOfToken(const FString& CommandLine, const details::EAvailableTokens Token) + { + details::FParseResult Result; + FString ValueOfToken; + Result.Token = Token; + + ensure(Token != details::EAvailableTokens::Unknown); + + const bool bTokenFound = FParse::Value( + *CommandLine, + *details::EnsureEndsWith(details::CLI_TOKENS.FindRef(Token), TEXT("=")), + ValueOfToken + ); + + if (!bTokenFound) + { + Result.Value = FString(); + Result.ErrorCode = details::EErrorCodes::TokenNotFound; + Result.bIsValid = false; + } + else + { + if (ValueOfToken.IsEmpty()) + { + Result.Value = FString(); + Result.ErrorCode = details::EErrorCodes::ValueEmpty; + Result.bIsValid = false; + } + else + { + if (details::DoesRegExMatch(ValueOfToken, details::REGEX_PATTERNS.FindRef(Token))) + { + Result.ErrorCode = details::EErrorCodes::NoError; + Result.bIsValid = true; + } + else + { + Result.ErrorCode = details::EErrorCodes::FailedValidation; + Result.bIsValid = false; + } + Result.Value = ValueOfToken; + } + } + + ensure(Result.ErrorCode < details::EErrorCodes::MaxCode); + FString ErrorMessage = details::ERROR_MESSAGES.FindRef(Result.ErrorCode); + FString TokenName = details::CLI_TOKENS.FindRef(Result.Token); + FString Value = Result.Value; + Result.ErrorMessage = ErrorMessage; + + return Result; + } + + + // cmdlineparser::Details namespace + namespace details + { + FString details::EnsureEndsWith(const FString& Token, const TCHAR* Suffix) + { + return Token.EndsWith(Suffix) ? Token : Token + Suffix; + } + + FPortResult details::GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token) + { + FPortResult PortResult; + PortResult.Port = FURL::UrlConfig.DefaultPort; + + if (int32 CliPort; FParse::Value(*CommandLine, *EnsureEndsWith(Token, TEXT("=")), CliPort)) + { + if (CliPort >= details::MIN_PORT && CliPort <= details::MAX_PORT) + { + PortResult.Port = CliPort; + PortResult.bUsedDefaultPort = false; + PortResult.WarningMessage = FString(); + return PortResult; + } + PortResult.bUsedDefaultPort = true; + PortResult.WarningMessage = FString::Printf(TEXT("Command Line Option for Port is out of ranged... Using Default Port %d"), PortResult.Port); + return PortResult; + + } + PortResult.bUsedDefaultPort = true; + PortResult.WarningMessage = FString::Printf(TEXT("Command Line Option for Port not found... Using Default Port %d"), PortResult.Port); + return PortResult; + } + + bool details::DoesRegExMatch(const FString& Text, const FString& Pattern) + { + const FRegexPattern RegexPattern(Pattern); + FRegexMatcher Matcher(RegexPattern, Text); + return Matcher.FindNext(); + } + } +} \ No newline at end of file diff --git a/Source/FPSTemplate/Public/Game/ShooterGameMode.h b/Source/DedicatedServers/Public/Game/DS_GameMode.h similarity index 75% rename from Source/FPSTemplate/Public/Game/ShooterGameMode.h rename to Source/DedicatedServers/Public/Game/DS_GameMode.h index 496b15ed..1681d8d7 100644 --- a/Source/FPSTemplate/Public/Game/ShooterGameMode.h +++ b/Source/DedicatedServers/Public/Game/DS_GameMode.h @@ -2,15 +2,15 @@ #pragma once -#include "CoreMinimal.h" -#include "GameLiftClpTypes.h" -#include "ShooterGameModeBase.h" -#include "ShooterGameMode.generated.h" - -DECLARE_LOG_CATEGORY_EXTERN(LogShooterGameMode, Log, All); - -struct FProcessParameters; struct FServerParameters; +struct FProcessParameters; + +#include "CoreMinimal.h" +#include "GameFramework/GameMode.h" +#include "Game/GameLift/GameLiftClpTypes.h" +#include "DS_GameMode.generated.h" + +DECLARE_LOG_CATEGORY_EXTERN(LogDS_GameMode, Log, All); struct FGameLiftConfig { @@ -25,34 +25,31 @@ struct FGameLiftConfig cmdlineparser::details::FParseResult WebSocketUrlResult; }; -/** - * - */ + UCLASS() -class FPSTEMPLATE_API AShooterGameMode : public AShooterGameModeBase +class DEDICATEDSERVERS_API ADS_GameMode : public AGameMode { GENERATED_BODY() -public: - AShooterGameMode(); +public: protected: virtual void BeginPlay() override; + virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override; private: FGameLiftConfig GameLiftConfig; FString CachedCommandLine; - static FString GetSHA256Hash(const FString& CommandLineString); + static FString GetSHA256Hash(const FString& InString); void InitGameLift(); bool GetAnywhereFleetParameters(const FString& CommandLineString); void LogAnywhereFleetParameters(); -#if WITH_GAMELIFT - static void LogServerParameters(const FServerParameters& InServerParameters); -#endif - static FString GetValueOrHash(const FString& Value); TSharedPtr ProcessParameters; + static void LogServerParameters(const FServerParameters& InServerParameters); + + static FString GetValueOrHash(const FString& Value); }; diff --git a/Source/DedicatedServers/Public/Game/GameLift/GameLiftClpTypes.h b/Source/DedicatedServers/Public/Game/GameLift/GameLiftClpTypes.h new file mode 100644 index 00000000..37f22276 --- /dev/null +++ b/Source/DedicatedServers/Public/Game/GameLift/GameLiftClpTypes.h @@ -0,0 +1,79 @@ +#pragma once + +namespace cmdlineparser::details +{ + enum EAvailableTokens + { + Unknown = 0, + AuthToken, + HostId, + FleetId, + WebsocketUrl, + MaxToken + }; + + enum EErrorCodes + { + NoError, + TokenNotFound, + ValueEmpty, + FailedValidation, + MaxCode + }; + + inline static const TMap& ERROR_MESSAGES = []() -> + const TMap& + { + static TMap Error_Messages = + { + {NoError,TEXT("VALID: {0}: {1}") }, + {FailedValidation,TEXT("VALIDATION FAILED: [-{0}=] found.... Value: [{1}]") }, + {TokenNotFound,TEXT("INVALID TOKEN: [-{0}=] not found in command line arguments") }, + {ValueEmpty,TEXT("EMPTY VALUE: [-{0}=] found. No value assigned") }, + + }; + return Error_Messages; + }(); + + inline static const TMap& CLI_TOKENS = []() -> + const TMap& + { + static TMap Cli_Tokens = + { + {AuthToken, TEXT("authtoken") }, + {FleetId, TEXT("fleetid") }, + {HostId, TEXT("hostid") }, + {Unknown, TEXT("unknown") }, + {WebsocketUrl, TEXT("websocketurl") } + }; + return Cli_Tokens; + }(); + + inline static const TMap& REGEX_PATTERNS = []() -> + const TMap& + { + static TMap Regex_Patterns = + { + {Unknown,TEXT(".*") }, + {AuthToken,TEXT("^[a-zA-Z0-9\\-]+$") }, + {HostId,TEXT("^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]?$") }, + {FleetId,TEXT("^[a-z]*fleet-[a-zA-Z0-9\\-]+$|^arn:.*:[a-z]*fleet\\/[a-z]*fleet-[a-zA-Z0-9\\-]+$") }, + {WebsocketUrl,TEXT("^wss://[a-z0-9-]+(\\.[a-z0-9-]+)*\\.api\\.amazongamelift\\.com(:[0-9]+)?/?$") }, + }; + return Regex_Patterns; + }(); + +// extern const TMap& ERROR_MESSAGES; +// extern const TMap& CLI_TOKENS; +// extern const TMap& REGEX_PATTERNS; + + struct FParseResult + { + EAvailableTokens Token = EAvailableTokens::Unknown; + FString Value = FString(); + bool bIsValid = false; + EErrorCodes ErrorCode = EErrorCodes::TokenNotFound; + FString ErrorMessage = FString(); + + }; +} \ No newline at end of file diff --git a/Source/DedicatedServers/Public/GameLiftClp.h b/Source/DedicatedServers/Public/GameLiftClp.h new file mode 100644 index 00000000..d592aad9 --- /dev/null +++ b/Source/DedicatedServers/Public/GameLiftClp.h @@ -0,0 +1,29 @@ +#pragma once +#include "Game/GameLift/GameLiftClpTypes.h" +#include "CoreMinimal.h" + +struct FPortResult +{ + int32 Port; + bool bUsedDefaultPort; + FString WarningMessage; +}; + +namespace cmdlineparser +{ + FPortResult GetConfiguredOrDefaultPort(const FString& Token = TEXT("port=")); + FPortResult GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token = TEXT("port=")); + + details::FParseResult GetValueOfToken(const FString& CommandLine, const details::EAvailableTokens Token); + + namespace details + { + inline static constexpr int32 MIN_PORT = 1024; + inline static constexpr int32 MAX_PORT = 65535; + inline const TCHAR* DEFAULT_PORT_TOKEN = TEXT("port="); + + FString EnsureEndsWith(const FString& Token, const TCHAR* Suffix); + FPortResult GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token); + bool DoesRegExMatch(const FString& Text, const FString& Pattern); + } +} diff --git a/Source/FPSTemplate.Target.cs b/Source/FPSTemplate.Target.cs index 55094eee..a21eb626 100644 --- a/Source/FPSTemplate.Target.cs +++ b/Source/FPSTemplate.Target.cs @@ -11,6 +11,5 @@ public class FPSTemplateTarget : TargetRules DefaultBuildSettings = BuildSettingsVersion.V6; IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; ExtraModuleNames.Add("FPSTemplate"); - ExtraModuleNames.Add("DedicatedServers"); } } diff --git a/Source/FPSTemplate/FPSTemplate.Build.cs b/Source/FPSTemplate/FPSTemplate.Build.cs index 7c1d2922..3c6b3b42 100644 --- a/Source/FPSTemplate/FPSTemplate.Build.cs +++ b/Source/FPSTemplate/FPSTemplate.Build.cs @@ -19,6 +19,7 @@ public class FPSTemplate : ModuleRules "EnhancedInput", "PhysicsCore", "OpenSSL", + "DedicatedServers" }); PrivateDependencyModuleNames.AddRange(new string[] @@ -29,19 +30,6 @@ public class FPSTemplate : ModuleRules "OpenSSL", }); - // Adds in the plugin for GameLiftServerSDK if it is the server build. - - if (Target.Type == TargetType.Server) - { - PublicDependencyModuleNames.Add("GameLiftServerSDK"); - PublicDependencyModuleNames.Add("DedicatedServers"); - } - else - { - PublicDefinitions.Add("WITH_GAMELIFT=0"); - } - bEnableExceptions = true; - // Uncomment if you are using Slate UI // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); diff --git a/Source/FPSTemplate/Private/GameLift/GameLiftClp.cpp b/Source/FPSTemplate/Private/GameLift/GameLiftClp.cpp deleted file mode 100644 index 9512fe51..00000000 --- a/Source/FPSTemplate/Private/GameLift/GameLiftClp.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "GameLift/GameLiftClp.h" - -FPortResult cmdlineparser::GetConfiguredOrDefaultPort(const FString& Token) -{ - return details::GetConfiguredOrDefaultPort(FCommandLine::Get(), Token); -} - -FPortResult cmdlineparser::GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token) -{ - return details::GetConfiguredOrDefaultPort(CommandLine, Token); -} - -cmdlineparser::details::FParseResult cmdlineparser::GetValueOfToken(const FString& CommandLine, const details::EAvailableTokens Token) -{ - details::FParseResult Result; - FString ValueOfToken; - Result.Token = Token; - - ensure(Token != details::EAvailableTokens::Unknown); - ensure(Token < details::EAvailableTokens::MaxToken); - const bool bTokenFound = FParse::Value( - *CommandLine, - *details::EnsureEndsWith(details::CLI_TOKENS[static_cast(Token)], - TEXT("=")), - ValueOfToken - ); - - if (!bTokenFound) - { - Result.Value = FString(); - Result.ErrorCode = details::EErrorCodes::TokenNotFound; - Result.bIsValid = false; - } - else - { - if (ValueOfToken.IsEmpty()) - { - Result.Value = FString(); - Result.ErrorCode = details::EErrorCodes::ValueEmpty; - Result.bIsValid = false; - } - else - { - if (details::DoesRegExMatch(ValueOfToken, details::REGEX_PATTERNS[static_cast(Token)])) - { - Result.ErrorCode = details::EErrorCodes::NoError; - Result.bIsValid = true; - } - else - { - Result.ErrorCode = details::EErrorCodes::FailedValidation; - Result.bIsValid = false; - } - Result.Value = ValueOfToken; - } - } - - ensure(Result.ErrorCode < details::EErrorCodes::MaxCode); - FString ErrorMessage = details::ERROR_MESSAGES[static_cast(Result.ErrorCode)]; - FString TokenName = details::CLI_TOKENS[static_cast(Result.Token)]; - FString Value = Result.Value; - Result.ErrorMessage = ErrorMessage; - - return Result; -} - - -// cmdlineparser::Details namespace - -FString cmdlineparser::details::EnsureEndsWith(const FString& Token, const TCHAR* Suffix) -{ - return Token.EndsWith(Suffix) ? Token : Token + Suffix; -} - -FPortResult cmdlineparser::details::GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token) -{ - FPortResult PortResult; - PortResult.Port = FURL::UrlConfig.DefaultPort; - - if (int32 CliPort; FParse::Value(*CommandLine, *EnsureEndsWith(Token, TEXT("=")), CliPort)) - { - if (CliPort >= details::MIN_PORT && CliPort <= details::MAX_PORT) - { - PortResult.Port = CliPort; - PortResult.bUsedDefaultPort = false; - PortResult.WarningMessage = FString(); - return PortResult; - } - } - PortResult.bUsedDefaultPort = true; - PortResult.WarningMessage = FString::Printf(TEXT("Command Line Option for Port is out of ranged... Using Default Port %d"), PortResult.Port); - return PortResult; -} - -bool cmdlineparser::details::DoesRegExMatch(const FString& Text, const FString& Pattern) -{ - const FRegexPattern RegexPattern(Pattern); - FRegexMatcher Matcher(RegexPattern, Text); - return Matcher.FindNext(); -} diff --git a/Source/FPSTemplate/Private/GameLiftClpTypes.cpp b/Source/FPSTemplate/Private/GameLiftClpTypes.cpp deleted file mode 100644 index 7be75175..00000000 --- a/Source/FPSTemplate/Private/GameLiftClpTypes.cpp +++ /dev/null @@ -1,34 +0,0 @@ -#include "GameLiftClpTypes.h" - -const TArray& cmdlineparser::details::ERROR_MESSAGES = []() -> const TArray& -{ - static TArray Error_Messages; - Error_Messages.Add(TEXT("VALID: {0}: {1}")); - Error_Messages.Add(TEXT("INVALID TOKEN: [-{0}=] not found in command line arguments")); - Error_Messages.Add(TEXT("EMPTY VALUE: [-{0}=] found. No value assigned")); - Error_Messages.Add(TEXT("VALIDATION FAILED: [-{0}=] found.... Value: [{1}]")); - return Error_Messages; -}(); - - -const TArray& cmdlineparser::details::CLI_TOKENS = []() -> const TArray& -{ - static TArray Cli_Tokens; - Cli_Tokens.Add(TEXT("unknown")); // Unknown = 0; - Cli_Tokens.Add(TEXT("authtoken")); - Cli_Tokens.Add(TEXT("hostid")); - Cli_Tokens.Add(TEXT("fleetid")); - Cli_Tokens.Add(TEXT("websocketurl")); - return Cli_Tokens; -}(); - -const TArray& cmdlineparser::details::REGEX_PATTERNS = []() -> const TArray& -{ - static TArray Cli_Tokens; - Cli_Tokens.Add(TEXT(".*")); // unknown = 0 - Cli_Tokens.Add(TEXT("^[a-zA-Z0-9\\-]+$")); - Cli_Tokens.Add(TEXT("^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,62}[a-zA-Z0-9]?$")); - Cli_Tokens.Add(TEXT("^[a-z]*fleet-[a-zA-Z0-9\\-]+$|^arn:.*:[a-z]*fleet\\/[a-z]*fleet-[a-zA-Z0-9\\-]+$")); - Cli_Tokens.Add(TEXT("^wss://[a-z0-9-]+(\\.[a-z0-9-]+)*\\.api\\.amazongamelift\\.com(:[0-9]+)?/?$")); - return Cli_Tokens; -}(); \ No newline at end of file diff --git a/Source/FPSTemplate/Public/Game/ShooterGameModeBase.h b/Source/FPSTemplate/Public/Game/ShooterGameModeBase.h index 244a8496..9d6f7e78 100644 --- a/Source/FPSTemplate/Public/Game/ShooterGameModeBase.h +++ b/Source/FPSTemplate/Public/Game/ShooterGameModeBase.h @@ -3,14 +3,14 @@ #pragma once #include "CoreMinimal.h" -#include "GameFramework/GameMode.h" +#include "DedicatedServers/Public/Game/DS_GameMode.h" #include "ShooterGameModeBase.generated.h" /** * */ UCLASS() -class FPSTEMPLATE_API AShooterGameModeBase : public AGameMode +class FPSTEMPLATE_API AShooterGameModeBase : public ADS_GameMode { GENERATED_BODY() public: diff --git a/Source/FPSTemplate/Public/GameLift/GameLiftClp.h b/Source/FPSTemplate/Public/GameLift/GameLiftClp.h deleted file mode 100644 index e8ccfcb9..00000000 --- a/Source/FPSTemplate/Public/GameLift/GameLiftClp.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once -#include "GameLiftClpTypes.h" -#include "CoreMinimal.h" - -struct FPortResult -{ - int32 Port; - bool bUsedDefaultPort; - FString WarningMessage; -}; - -namespace cmdlineparser -{ - FPortResult GetConfiguredOrDefaultPort(const FString& Token = TEXT("port=")); - FPortResult GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token = TEXT("port=")); - - details::FParseResult GetValueOfToken(const FString& CommandLine, const details::EAvailableTokens Token); -} - -namespace cmdlineparser::details -{ - inline static constexpr int32 MIN_PORT = 1024; - inline static constexpr int32 MAX_PORT = 65535; - inline static constexpr const TCHAR* DEFAULT_PORT_TOKEN = TEXT("port="); - - FString EnsureEndsWith(const FString& Token, const TCHAR* Suffix); - FPortResult GetConfiguredOrDefaultPort(const FString& CommandLine, const FString& Token); - bool DoesRegExMatch(const FString& Text, const FString& Pattern); -} - diff --git a/Source/FPSTemplate/Public/GameLiftClpTypes.h b/Source/FPSTemplate/Public/GameLiftClpTypes.h deleted file mode 100644 index bef5dea1..00000000 --- a/Source/FPSTemplate/Public/GameLiftClpTypes.h +++ /dev/null @@ -1,37 +0,0 @@ -#pragma once - -namespace cmdlineparser::details -{ - enum EAvailableTokens - { - Unknown = 0, - AuthToken, - HostId, - FleetId, - WebsocketUrl, - MaxToken - }; - - enum EErrorCodes - { - NoError, - TokenNotFound, - ValueEmpty, - FailedValidation, - MaxCode - }; - - extern const TArray& ERROR_MESSAGES; - extern const TArray& CLI_TOKENS; - extern const TArray& REGEX_PATTERNS; - - struct FParseResult - { - EAvailableTokens Token = EAvailableTokens::Unknown; - FString Value = FString(); - bool bIsValid = false; - EErrorCodes ErrorCode = EErrorCodes::TokenNotFound; - FString ErrorMessage = FString(); - - }; -} \ No newline at end of file diff --git a/Source/FPSTemplateClient.Target.cs b/Source/FPSTemplateClient.Target.cs index f3603353..a19ed323 100644 --- a/Source/FPSTemplateClient.Target.cs +++ b/Source/FPSTemplateClient.Target.cs @@ -11,6 +11,5 @@ public class FPSTemplateClientTarget : TargetRules DefaultBuildSettings = BuildSettingsVersion.V6; IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; ExtraModuleNames.Add("FPSTemplate"); - ExtraModuleNames.Add("DedicatedServers"); } }