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 fc6bb9b8..00000000 Binary files a/Content/Blueprints/Game/BP_ShooterGameMode.uasset and /dev/null differ diff --git a/Content/Blueprints/Game/BP_ShooterGameModeBase.uasset b/Content/Blueprints/Game/BP_ShooterGameModeBase.uasset new file mode 100644 index 00000000..f96e74ce Binary files /dev/null and b/Content/Blueprints/Game/BP_ShooterGameModeBase.uasset differ diff --git a/FPSTemplate.uproject b/FPSTemplate.uproject index 5607a620..4eecce6e 100644 --- a/FPSTemplate.uproject +++ b/FPSTemplate.uproject @@ -16,7 +16,9 @@ { "Name": "DedicatedServers", "Type": "Runtime", - "LoadingPhase": "Default" + "LoadingPhase": "Default", + "ExcludelistTargets": ["Game", "Client"], + "IncludelistTargets": ["Server", "Editor"] } ], "Plugins": [ @@ -60,8 +62,8 @@ "Enabled": false }, { - "Name": "GameLiftPlugin", - "Enabled": true + "Name": "GameLiftPlugin", + "Enabled": true } ] } \ No newline at end of file diff --git a/Source/DedicatedServers/DedicatedServers.build.cs b/Source/DedicatedServers/DedicatedServers.build.cs index 2b1d7117..830b4755 100644 --- a/Source/DedicatedServers/DedicatedServers.build.cs +++ b/Source/DedicatedServers/DedicatedServers.build.cs @@ -1,16 +1,18 @@ using UnrealBuildTool; +using System.IO; public class DedicatedServers : ModuleRules { public DedicatedServers(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; - + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", + "OpenSSL", }); PrivateDependencyModuleNames.AddRange(new string[] @@ -23,7 +25,7 @@ public class DedicatedServers : ModuleRules if (Target.Type == TargetType.Server) { - PublicDependencyModuleNames.Add("GameLiftServerSDK"); + PublicDependencyModuleNames.Add("GameLiftServerSDK"); } else { diff --git a/Source/DedicatedServers/Private/DedicatedServersModule.cpp b/Source/DedicatedServers/Private/DedicatedServersModule.cpp deleted file mode 100644 index e69de29b..00000000 diff --git a/Source/FPSTemplate/Private/Game/ShooterGameMode.cpp b/Source/DedicatedServers/Private/Game/DS_GameMode.cpp similarity index 65% rename from Source/FPSTemplate/Private/Game/ShooterGameMode.cpp rename to Source/DedicatedServers/Private/Game/DS_GameMode.cpp index 56d01007..222c3332 100644 --- a/Source/FPSTemplate/Private/Game/ShooterGameMode.cpp +++ b/Source/DedicatedServers/Private/Game/DS_GameMode.cpp @@ -1,29 +1,23 @@ // Fill out your copyright notice in the Description page of Project Settings. -#include "Game/ShooterGameMode.h" -#include "GenericPlatform/GenericPlatformMisc.h" -#include "Containers/UnrealString.h" -#include "GameLiftClpTypes.h" -#include "GameLift/GameLiftClp.h" + +#include "Game/DS_GameMode.h" + +#include "GameLiftClp.h" #include "openssl/sha.h" +#include "Game/GameLift/GameLiftClpTypes.h" #if WITH_GAMELIFT #include "GameLiftServerSDK.h" #endif -DEFINE_LOG_CATEGORY(LogShooterGameMode); +DEFINE_LOG_CATEGORY(LogDS_GameMode); -// Function implementations. -AShooterGameMode::AShooterGameMode() -{ -} - -void AShooterGameMode::BeginPlay() +void ADS_GameMode::BeginPlay() { Super::BeginPlay(); -#if WITH_GAMELIFT if ((GameLiftConfig.bIsAnywhereFleet && GameLiftConfig.bAllOptionsFound) || !GameLiftConfig.bIsAnywhereFleet) { @@ -31,41 +25,42 @@ void AShooterGameMode::BeginPlay() } else { - { - UE_LOG(LogShooterGameMode, Error, TEXT("GameLift Anywhere fleet missing required options. Exiting.")); - FGenericPlatformMisc::RequestExit(false); - } + UE_LOG(LogDS_GameMode, Error, TEXT("GameLift Anywhere fleet missing required options. Exiting.")); + FGenericPlatformMisc::RequestExit(false); } -#endif } -void AShooterGameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) +void ADS_GameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) { Super::InitGame(MapName, Options, ErrorMessage); + +#if WITH_GAMELIFT + CachedCommandLine = FCommandLine::Get(); const FPortResult PortResult = cmdlineparser::details::GetConfiguredOrDefaultPort(CachedCommandLine, TEXT("port"));; if (PortResult.bUsedDefaultPort) { - UE_LOGFMT (LogShooterGameMode, Warning, "{0}", PortResult.WarningMessage); + UE_LOGFMT (LogDS_GameMode, Warning, "{0}", PortResult.WarningMessage); } GameLiftConfig.ServerPort = PortResult.Port; if (FParse::Param(*CachedCommandLine, TEXT("glAnywhereFleet"))) { - UE_LOGFMT(LogShooterGameMode, Log, "Fleet type: Anywhere"); + UE_LOGFMT(LogDS_GameMode, Log, "Fleet type: Anywhere"); GameLiftConfig.bIsAnywhereFleet = true; GameLiftConfig.bAllOptionsFound = GetAnywhereFleetParameters(CachedCommandLine); LogAnywhereFleetParameters(); } else { - UE_LOGFMT(LogShooterGameMode, Log, "Fleet type: EC2"); + UE_LOGFMT(LogDS_GameMode, Log, "Fleet type: EC2"); // TODO: EC2 configuration } +#endif } -FString AShooterGameMode::GetSHA256Hash(const FString& InString) +FString ADS_GameMode::GetSHA256Hash(const FString& InString) { if (InString.IsEmpty()) @@ -88,16 +83,16 @@ FString AShooterGameMode::GetSHA256Hash(const FString& InString) return Hash.ToString(); } -void AShooterGameMode::InitGameLift() +void ADS_GameMode::InitGameLift() { #if WITH_GAMELIFT - UE_LOGFMT(LogShooterGameMode, Log, "Calling InitGameLift..."); + UE_LOGFMT(LogDS_GameMode, Log, "Calling InitGameLift..."); // Get the module first FGameLiftServerSDKModule* GameLiftSdkModule = &FModuleManager::LoadModuleChecked("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"); } }