Compare commits
4 Commits
new/API_Ga
...
898fba8153
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
898fba8153 | ||
|
|
f52a4225c3 | ||
|
|
2ec989d34a | ||
|
|
3e61d4cec0 |
4
.gitignore
vendored
4
.gitignore
vendored
@@ -70,7 +70,3 @@ Plugins/**/Intermediate/*
|
|||||||
|
|
||||||
# Cache files for the editor to use
|
# Cache files for the editor to use
|
||||||
DerivedDataCache/*
|
DerivedDataCache/*
|
||||||
|
|
||||||
# IDE Settings
|
|
||||||
.idea/
|
|
||||||
*.iml
|
|
||||||
15
.idea/.idea.FPSTemplate.dir/.idea/.gitignore
generated
vendored
Normal file
15
.idea/.idea.FPSTemplate.dir/.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# 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/
|
||||||
4
.idea/.idea.FPSTemplate.dir/.idea/encodings.xml
generated
Normal file
4
.idea/.idea.FPSTemplate.dir/.idea/encodings.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||||
|
</project>
|
||||||
8
.idea/.idea.FPSTemplate.dir/.idea/indexLayout.xml
generated
Normal file
8
.idea/.idea.FPSTemplate.dir/.idea/indexLayout.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="UserContentModel">
|
||||||
|
<attachedFolders />
|
||||||
|
<explicitIncludes />
|
||||||
|
<explicitExcludes />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
6
.idea/.idea.FPSTemplate.dir/.idea/vcs.xml
generated
Normal file
6
.idea/.idea.FPSTemplate.dir/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
||||||
@@ -1,189 +0,0 @@
|
|||||||
[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")
|
|
||||||
|
|
||||||
@@ -1,99 +0,0 @@
|
|||||||
[/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
|
|
||||||
|
|
||||||
@@ -1,25 +1,18 @@
|
|||||||
[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings]
|
[SystemSettings]
|
||||||
bEnablePlugin=True
|
CommonUI.Debug.CheckGameViewportClientValid=0
|
||||||
bAllowNetworkConnection=True
|
|
||||||
SecurityToken=84E00C58412CE2A05A24C09DC3639CFC
|
[/Script/EngineSettings.GameMapsSettings]
|
||||||
bIncludeInShipping=False
|
GameDefaultMap=/Game/Maps/StartupMap.StartupMap
|
||||||
bAllowExternalStartInShipping=False
|
EditorStartupMap=/Game/Maps/StartupMap.StartupMap
|
||||||
bCompileAFSProject=False
|
GlobalDefaultGameMode=/Game/Blueprints/Game/BP_ShooterGameModeBase.BP_ShooterGameModeBase_C
|
||||||
bUseCompression=False
|
ServerDefaultMap=/Game/ThirdPerson/Maps/ThirdPersonMap.ThirdPersonMap
|
||||||
bLogFiles=False
|
|
||||||
bReportStats=False
|
|
||||||
ConnectionType=USBOnly
|
|
||||||
bUseManualIPAddress=False
|
|
||||||
ManualIPAddress=
|
|
||||||
|
|
||||||
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
[/Script/WindowsTargetPlatform.WindowsTargetSettings]
|
||||||
DefaultGraphicsRHI=DefaultGraphicsRHI_Default
|
DefaultGraphicsRHI=DefaultGraphicsRHI_DX12
|
||||||
-D3D12TargetedShaderFormats=PCD3D_SM5
|
-D3D12TargetedShaderFormats=PCD3D_SM5
|
||||||
+D3D12TargetedShaderFormats=PCD3D_SM5
|
|
||||||
+D3D12TargetedShaderFormats=PCD3D_SM6
|
+D3D12TargetedShaderFormats=PCD3D_SM6
|
||||||
-D3D11TargetedShaderFormats=PCD3D_SM5
|
-D3D11TargetedShaderFormats=PCD3D_SM5
|
||||||
+D3D11TargetedShaderFormats=PCD3D_SM5
|
+D3D11TargetedShaderFormats=PCD3D_SM5
|
||||||
bGenerateNaniteFallbackMeshes=True
|
|
||||||
Compiler=Default
|
Compiler=Default
|
||||||
AudioSampleRate=48000
|
AudioSampleRate=48000
|
||||||
AudioCallbackBufferFrameSize=1024
|
AudioCallbackBufferFrameSize=1024
|
||||||
@@ -43,7 +36,154 @@ CompressionQualityModifier=1.000000
|
|||||||
AutoStreamingThreshold=0.000000
|
AutoStreamingThreshold=0.000000
|
||||||
SoundCueCookQualityIndex=-1
|
SoundCueCookQualityIndex=-1
|
||||||
|
|
||||||
[/Script/EngineSettings.GameMapsSettings]
|
[/Script/Engine.RendererSettings]
|
||||||
EditorStartupMap=/Game/Maps/StartupMap.StartupMap
|
r.Mobile.EnableNoPrecomputedLightingCSMShader=True
|
||||||
GameDefaultMap=/Game/Maps/StartupMap.StartupMap
|
|
||||||
|
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")
|
||||||
|
|
||||||
|
|||||||
@@ -67,20 +67,33 @@ bCaptureMouseOnLaunch=True
|
|||||||
bEnableLegacyInputScales=True
|
bEnableLegacyInputScales=True
|
||||||
bEnableMotionControls=True
|
bEnableMotionControls=True
|
||||||
bFilterInputByPlatformUser=False
|
bFilterInputByPlatformUser=False
|
||||||
|
bEnableInputDeviceSubsystem=True
|
||||||
bShouldFlushPressedKeysOnViewportFocusLost=True
|
bShouldFlushPressedKeysOnViewportFocusLost=True
|
||||||
|
bEnableDynamicComponentInputBinding=True
|
||||||
bAlwaysShowTouchInterface=False
|
bAlwaysShowTouchInterface=False
|
||||||
bShowConsoleOnFourFingerTap=True
|
bShowConsoleOnFourFingerTap=True
|
||||||
bEnableGestureRecognizer=False
|
bEnableGestureRecognizer=False
|
||||||
bUseAutocorrect=False
|
bUseAutocorrect=False
|
||||||
bEnabledLegacyMappingDeprecationWarnings=True
|
|
||||||
DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
|
DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown
|
||||||
DefaultViewportMouseLockMode=LockOnCapture
|
DefaultViewportMouseLockMode=LockOnCapture
|
||||||
FOVScale=0.011110
|
FOVScale=0.011110
|
||||||
DoubleClickTime=0.200000
|
DoubleClickTime=0.200000
|
||||||
DeprecatedActionAndAxisNames=()
|
+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
|
DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput
|
||||||
DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
|
DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent
|
||||||
DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
|
DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks
|
||||||
-ConsoleKeys=Tilde
|
-ConsoleKeys=Tilde
|
||||||
+ConsoleKeys=Tilde
|
+ConsoleKeys=Tilde
|
||||||
|
+ConsoleKeys=Caret
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -16,9 +16,7 @@
|
|||||||
{
|
{
|
||||||
"Name": "DedicatedServers",
|
"Name": "DedicatedServers",
|
||||||
"Type": "Runtime",
|
"Type": "Runtime",
|
||||||
"LoadingPhase": "Default",
|
"LoadingPhase": "Default"
|
||||||
"ExcludelistTargets": ["Game", "Client"],
|
|
||||||
"IncludelistTargets": ["Server", "Editor"]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Plugins": [
|
"Plugins": [
|
||||||
@@ -60,10 +58,6 @@
|
|||||||
{
|
{
|
||||||
"Name": "PerforceSourceControl",
|
"Name": "PerforceSourceControl",
|
||||||
"Enabled": false
|
"Enabled": false
|
||||||
},
|
|
||||||
{
|
|
||||||
"Name": "GameLiftPlugin",
|
|
||||||
"Enabled": true
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
using UnrealBuildTool;
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
||||||
|
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using UnrealBuildTool;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
public class DedicatedServers : ModuleRules
|
public class DedicatedServers : ModuleRules
|
||||||
{
|
{
|
||||||
@@ -11,19 +14,15 @@ public class DedicatedServers : ModuleRules
|
|||||||
{
|
{
|
||||||
"Core",
|
"Core",
|
||||||
"CoreUObject",
|
"CoreUObject",
|
||||||
"Engine",
|
"Engine"
|
||||||
"OpenSSL",
|
|
||||||
"GameplayTags",
|
|
||||||
"HTTP"
|
|
||||||
});
|
});
|
||||||
|
|
||||||
PrivateDependencyModuleNames.AddRange(new string[]
|
PrivateDependencyModuleNames.AddRange(new string[]
|
||||||
{
|
{
|
||||||
"Slate",
|
"Slate",
|
||||||
"SlateCore",
|
"SlateCore",
|
||||||
"UMG",
|
"OpenSSL",
|
||||||
"Json",
|
"UMG"
|
||||||
"JsonUtilities",
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Adds in the plugin for GameLiftServerSDK if it is the server build.
|
// Adds in the plugin for GameLiftServerSDK if it is the server build.
|
||||||
@@ -3,6 +3,4 @@
|
|||||||
#include "DedicatedServers.h"
|
#include "DedicatedServers.h"
|
||||||
#include "Modules/ModuleManager.h"
|
#include "Modules/ModuleManager.h"
|
||||||
|
|
||||||
IMPLEMENT_MODULE( FDefaultModuleImpl, DedicatedServers );
|
IMPLEMENT_MODULE( FDefaultModuleImpl, DedicateServers );
|
||||||
|
|
||||||
DEFINE_LOG_CATEGORY( LogDedicatedServers );
|
|
||||||
|
|||||||
@@ -3,5 +3,3 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
|
|
||||||
DECLARE_LOG_CATEGORY_EXTERN(LogDedicatedServers, Log, All);
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
|
|
||||||
#include "Data/API/APIData.h"
|
|
||||||
|
|
||||||
FString UAPIData::GetAPIEndPoint(const FGameplayTag& APIEndPoint)
|
|
||||||
{
|
|
||||||
const FString ResourceName = Resources.FindChecked(APIEndPoint);
|
|
||||||
return InvokeUrl + "/" + Stage + "/" + ResourceName;
|
|
||||||
}
|
|
||||||
@@ -1,33 +1,18 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
#include "Game/DS_GameMode.h"
|
#include "DedicatedServers/Public/Game/DS_GameMode.h"
|
||||||
|
|
||||||
#include "GameLiftClp.h"
|
|
||||||
#include "openssl/sha.h"
|
#include "openssl/sha.h"
|
||||||
#include "Game/GameLift/GameLiftClpTypes.h"
|
#include "GameLift/GameLiftClp.h"
|
||||||
|
|
||||||
#if WITH_GAMELIFT
|
#if WITH_GAMELIFT
|
||||||
#include "GameLiftServerSDK.h"
|
#include "GameLiftServerSDK.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
DEFINE_LOG_CATEGORY(LogDS_GameMode);
|
DEFINE_LOG_CATEGORY(LogDS_GameMode);
|
||||||
|
|
||||||
|
|
||||||
void ADS_GameMode::BeginPlay()
|
void ADS_GameMode::BeginPlay()
|
||||||
{
|
{
|
||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
if ((GameLiftConfig.bIsAnywhereFleet && GameLiftConfig.bAllOptionsFound) ||
|
|
||||||
!GameLiftConfig.bIsAnywhereFleet)
|
|
||||||
{
|
|
||||||
InitGameLift();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UE_LOG(LogDS_GameMode, Error, TEXT("GameLift Anywhere fleet missing required options. Exiting."));
|
|
||||||
FGenericPlatformMisc::RequestExit(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ADS_GameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
|
void ADS_GameMode::InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage)
|
||||||
@@ -57,6 +42,7 @@ void ADS_GameMode::InitGame(const FString& MapName, const FString& Options, FStr
|
|||||||
UE_LOGFMT(LogDS_GameMode, Log, "Fleet type: EC2");
|
UE_LOGFMT(LogDS_GameMode, Log, "Fleet type: EC2");
|
||||||
// TODO: EC2 configuration
|
// TODO: EC2 configuration
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,7 +206,6 @@ void ADS_GameMode::InitGameLift()
|
|||||||
|
|
||||||
bool ADS_GameMode::GetAnywhereFleetParameters(const FString& CommandLineString)
|
bool ADS_GameMode::GetAnywhereFleetParameters(const FString& CommandLineString)
|
||||||
{
|
{
|
||||||
#if WITH_GAMELIFT
|
|
||||||
bool bAllAnywhereFleetParametersValid = true;
|
bool bAllAnywhereFleetParametersValid = true;
|
||||||
GameLiftConfig.AuthTokenResult = cmdlineparser::GetValueOfToken(CommandLineString, cmdlineparser::details::EAvailableTokens::AuthToken);
|
GameLiftConfig.AuthTokenResult = cmdlineparser::GetValueOfToken(CommandLineString, cmdlineparser::details::EAvailableTokens::AuthToken);
|
||||||
if (!GameLiftConfig.AuthTokenResult.bIsValid) bAllAnywhereFleetParametersValid = false;
|
if (!GameLiftConfig.AuthTokenResult.bIsValid) bAllAnywhereFleetParametersValid = false;
|
||||||
@@ -235,10 +220,6 @@ bool ADS_GameMode::GetAnywhereFleetParameters(const FString& CommandLineString)
|
|||||||
if (!GameLiftConfig.WebSocketUrlResult.bIsValid) bAllAnywhereFleetParametersValid = false;
|
if (!GameLiftConfig.WebSocketUrlResult.bIsValid) bAllAnywhereFleetParametersValid = false;
|
||||||
|
|
||||||
return bAllAnywhereFleetParametersValid;
|
return bAllAnywhereFleetParametersValid;
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ADS_GameMode::LogAnywhereFleetParameters()
|
void ADS_GameMode::LogAnywhereFleetParameters()
|
||||||
@@ -246,7 +227,7 @@ void ADS_GameMode::LogAnywhereFleetParameters()
|
|||||||
// Lambda for getting the token name from token
|
// Lambda for getting the token name from token
|
||||||
auto GetTokenName = [](const cmdlineparser::details::FParseResult& Result) -> FString
|
auto GetTokenName = [](const cmdlineparser::details::FParseResult& Result) -> FString
|
||||||
{
|
{
|
||||||
return cmdlineparser::details::CLI_TOKENS.FindRef(Result.Token);
|
return cmdlineparser::details::CLI_TOKENS[static_cast<int32>(Result.Token)];
|
||||||
};
|
};
|
||||||
|
|
||||||
UE_LOGFMT(LogDS_GameMode, Log, "Anywhere Fleet Parameters:");
|
UE_LOGFMT(LogDS_GameMode, Log, "Anywhere Fleet Parameters:");
|
||||||
@@ -342,7 +323,6 @@ void ADS_GameMode::LogAnywhereFleetParameters()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ADS_GameMode::LogServerParameters(const FServerParameters& InServerParameters)
|
void ADS_GameMode::LogServerParameters(const FServerParameters& InServerParameters)
|
||||||
{
|
{
|
||||||
#if WITH_GAMELIFT
|
#if WITH_GAMELIFT
|
||||||
@@ -374,7 +354,6 @@ void ADS_GameMode::LogServerParameters(const FServerParameters& InServerParamete
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
FString ADS_GameMode::GetValueOrHash(const FString& Value)
|
FString ADS_GameMode::GetValueOrHash(const FString& Value)
|
||||||
{
|
{
|
||||||
#if UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
|
#if UE_BUILD_DEBUG || UE_BUILD_DEVELOPMENT
|
||||||
|
|||||||
@@ -1,108 +0,0 @@
|
|||||||
#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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
100
Source/DedicatedServers/Private/GameLift/GameLiftClp.cpp
Normal file
100
Source/DedicatedServers/Private/GameLift/GameLiftClp.cpp
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
#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<int32>(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<int32>(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<int32>(Result.ErrorCode)];
|
||||||
|
FString TokenName = details::CLI_TOKENS[static_cast<int32>(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("Command Line Option for Port is out of ranged... Using Default Port %s", 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();
|
||||||
|
}
|
||||||
34
Source/DedicatedServers/Private/GameLiftClpTypes.cpp
Normal file
34
Source/DedicatedServers/Private/GameLiftClpTypes.cpp
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#include "GameLiftClpTypes.h"
|
||||||
|
|
||||||
|
const TArray<FString>& cmdlineparser::details::ERROR_MESSAGES = []() -> const TArray<FString>&
|
||||||
|
{
|
||||||
|
static TArray<FString> 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<FString>& cmdlineparser::details::CLI_TOKENS = []() -> const TArray<FString>&
|
||||||
|
{
|
||||||
|
static TArray<FString> 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<FString>& cmdlineparser::details::REGEX_PATTERNS = []() -> const TArray<FString>&
|
||||||
|
{
|
||||||
|
static TArray<FString> 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;
|
||||||
|
}();
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#include "GameplayTags/DedicatedServerTags.h"
|
|
||||||
|
|
||||||
namespace DedicatedServersTags
|
|
||||||
{
|
|
||||||
namespace GameSessionsAPI
|
|
||||||
{
|
|
||||||
UE_DEFINE_GAMEPLAY_TAG_COMMENT(ListFleets, "DedicatedServersTags.GameSessionsAPI.ListFleets", "List Fleets resource on the GameSessions API")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
|
|
||||||
#include "UI/API/ListFleets/FleetId.h"
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
|
|
||||||
#include "UI/API/ListFleets/ListFleetsBox.h"
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
|
|
||||||
#include "UI/APITest/APITestManager.h"
|
|
||||||
#include "HttpModule.h"
|
|
||||||
#include "JsonObjectConverter.h"
|
|
||||||
#include "Data/API/APIData.h"
|
|
||||||
#include "GameplayTags/DedicatedServerTags.h"
|
|
||||||
#include "Interfaces/IHttpResponse.h"
|
|
||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
|
||||||
|
|
||||||
|
|
||||||
void UAPITestManager::ListFleets()
|
|
||||||
{
|
|
||||||
check(APIData);
|
|
||||||
|
|
||||||
TSharedPtr<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
|
|
||||||
Request->OnProcessRequestComplete().BindUObject(this, &UAPITestManager::ListFleets_Response);
|
|
||||||
|
|
||||||
const FString APIUrl = APIData->GetAPIEndPoint(DedicatedServersTags::GameSessionsAPI::ListFleets);
|
|
||||||
|
|
||||||
Request->SetURL(APIUrl);
|
|
||||||
Request->SetVerb("GET");
|
|
||||||
Request->SetHeader("Content-Type", "application/json");
|
|
||||||
Request->ProcessRequest();
|
|
||||||
}
|
|
||||||
|
|
||||||
void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
|
|
||||||
{
|
|
||||||
TSharedPtr<FJsonObject> JsonObject;
|
|
||||||
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(Response->GetContentAsString());
|
|
||||||
|
|
||||||
if (FJsonSerializer::Deserialize(JsonReader, JsonObject))
|
|
||||||
{
|
|
||||||
if (ContainsErrors(JsonObject))
|
|
||||||
{
|
|
||||||
OnListFleetsResponseReceived.Broadcast(FDSListFleetsResponse(), false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
DumpMetadata(JsonObject);
|
|
||||||
|
|
||||||
FDSListFleetsResponse ListFleetsResponse;
|
|
||||||
FJsonObjectConverter::JsonObjectToUStruct(JsonObject.ToSharedRef(), &ListFleetsResponse);
|
|
||||||
OnListFleetsResponseReceived.Broadcast(ListFleetsResponse, true);
|
|
||||||
ListFleetsResponse.Dump();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
|
|
||||||
#include "UI/APITest/APITestOverlay.h"
|
|
||||||
|
|
||||||
#include "Blueprint/WidgetLayoutLibrary.h"
|
|
||||||
#include "Components/Button.h"
|
|
||||||
#include "Components/ScrollBox.h"
|
|
||||||
#include "Components/TextBlock.h"
|
|
||||||
#include "UI/API/ListFleets/FleetId.h"
|
|
||||||
#include "UI/API/ListFleets/ListFleetsBox.h"
|
|
||||||
#include "UI/APITest/APITestManager.h"
|
|
||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
|
||||||
|
|
||||||
void UAPITestOverlay::NativeConstruct()
|
|
||||||
{
|
|
||||||
Super::NativeConstruct();
|
|
||||||
|
|
||||||
check(APITestManagerClass);
|
|
||||||
APITestManager = NewObject<UAPITestManager>(this, APITestManagerClass);
|
|
||||||
|
|
||||||
check(ListFleetsBox)
|
|
||||||
check(ListFleetsBox->Button_ListFleets)
|
|
||||||
ListFleetsBox->Button_ListFleets->OnClicked.AddDynamic(this, &UAPITestOverlay::ListFleetsButtonClicked);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UAPITestOverlay::ListFleetsButtonClicked()
|
|
||||||
{
|
|
||||||
check (APITestManager)
|
|
||||||
APITestManager->OnListFleetsResponseReceived.AddDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
|
|
||||||
APITestManager->ListFleets();
|
|
||||||
ListFleetsBox->Button_ListFleets->SetIsEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void UAPITestOverlay::OnListFleetsResponseReceived(const FDSListFleetsResponse& ListFleetsResponse, bool bWasSuccessful)
|
|
||||||
{
|
|
||||||
if (APITestManager->OnListFleetsResponseReceived.IsAlreadyBound(this, &UAPITestOverlay::OnListFleetsResponseReceived))
|
|
||||||
{
|
|
||||||
APITestManager->OnListFleetsResponseReceived.RemoveDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
|
|
||||||
}
|
|
||||||
ListFleetsBox->ScrollBox_ListFleets->ClearChildren();
|
|
||||||
check(FleetIdWidgetClass);
|
|
||||||
if (bWasSuccessful)
|
|
||||||
{
|
|
||||||
for (const FString& FleetId : ListFleetsResponse.FleetIds)
|
|
||||||
{
|
|
||||||
UFleetId* FleetIdWidget = CreateWidget<UFleetId>(this, FleetIdWidgetClass);
|
|
||||||
FleetIdWidget->TextBlock_FleetId->SetText(FText::FromString(FleetId));
|
|
||||||
ListFleetsBox->ScrollBox_ListFleets->AddChild(FleetIdWidget);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UFleetId* FleetIdWidget = CreateWidget<UFleetId>(this, FleetIdWidgetClass);
|
|
||||||
FleetIdWidget->TextBlock_FleetId->SetText(FText::FromString("Something went wrong!"));
|
|
||||||
ListFleetsBox->ScrollBox_ListFleets->AddChild(FleetIdWidget);
|
|
||||||
}
|
|
||||||
ListFleetsBox->Button_ListFleets->SetIsEnabled(true);
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "UI/API_Test/APITestOverlay.h"
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
#include "UI/APITest/APITestHUD.h"
|
#include "UI/API_Test/API_TestHUD.h"
|
||||||
|
#include "UI/API_Test/APITestOverlay.h"
|
||||||
|
|
||||||
#include "UI/APITest/APITestOverlay.h"
|
void AAPI_TestHUD::BeginPlay()
|
||||||
|
|
||||||
void AAPITestHUD::BeginPlay()
|
|
||||||
{
|
{
|
||||||
Super::BeginPlay();
|
Super::BeginPlay();
|
||||||
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
|
|
||||||
#include "UI/HTTP/HTTPRequestManager.h"
|
|
||||||
|
|
||||||
#include "JsonObjectConverter.h"
|
|
||||||
#include "DedicatedServers/DedicatedServers.h"
|
|
||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
|
||||||
|
|
||||||
bool UHTTPRequestManager::ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bLogErrors)
|
|
||||||
{
|
|
||||||
if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage")))
|
|
||||||
{
|
|
||||||
FString ErrorType = JsonObject->HasField(TEXT("errorType")) ? JsonObject->GetStringField(TEXT("errorType")) : FString("Unknown Error");
|
|
||||||
FString ErrorMessage = JsonObject->HasField(TEXT("errorMessage")) ? JsonObject->GetStringField(TEXT("errorMessage")) : FString("Unknown Error Message");
|
|
||||||
|
|
||||||
if (bLogErrors)
|
|
||||||
{
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (JsonObject->HasField(TEXT("$fault")))
|
|
||||||
{
|
|
||||||
FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : FString("Unknown Error");
|
|
||||||
|
|
||||||
if (bLogErrors)
|
|
||||||
{
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void UHTTPRequestManager::DumpMetadata(TSharedPtr<FJsonObject> JsonObject)
|
|
||||||
{
|
|
||||||
if (JsonObject->HasField(TEXT("$metadata")))
|
|
||||||
{
|
|
||||||
TSharedPtr<FJsonObject> MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));
|
|
||||||
FDSMetaData DSMetaData;
|
|
||||||
FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
|
|
||||||
|
|
||||||
DSMetaData.Dump();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
|
||||||
#include "DedicatedServers/DedicatedServers.h"
|
|
||||||
|
|
||||||
void FDSMetaData::Dump() const
|
|
||||||
{
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "MetaData:");
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "httpStatusCode: {httpStatusCode}", httpStatusCode);
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "requestId: {requestId}", requestId);
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "attempts: {attempts}", attempts);
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "totalRetryDelay: {totalRetryDelay}", totalRetryDelay);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FDSListFleetsResponse::Dump() const
|
|
||||||
{
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "ListFleetsResponse:");
|
|
||||||
|
|
||||||
for (const FString& FleetId : FleetIds)
|
|
||||||
{
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "FleetId: {FleetId}", *FleetId);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!NextToken.IsEmpty())
|
|
||||||
{
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "NextToken: {NextToken}", NextToken);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "Engine/DataAsset.h"
|
|
||||||
#include "GameplayTags/DedicatedServerTags.h"
|
|
||||||
#include "APIData.generated.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UCLASS()
|
|
||||||
class DEDICATEDSERVERS_API UAPIData : public UDataAsset
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
FString GetAPIEndPoint(const FGameplayTag& APIEndPoint);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
// Name of this API - for labeling in the Data Asset; This is nto used by any code.
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
FString Name;
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
FString InvokeUrl;
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
FString Stage;
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
TMap<FGameplayTag, FString> Resources;
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -2,16 +2,16 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
struct FServerParameters;
|
|
||||||
struct FProcessParameters;
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
|
#include "DedicatedServers/Public/GameLiftClpTypes.h"
|
||||||
#include "GameFramework/GameMode.h"
|
#include "GameFramework/GameMode.h"
|
||||||
#include "Game/GameLift/GameLiftClpTypes.h"
|
|
||||||
#include "DS_GameMode.generated.h"
|
#include "DS_GameMode.generated.h"
|
||||||
|
|
||||||
DECLARE_LOG_CATEGORY_EXTERN(LogDS_GameMode, Log, All);
|
DECLARE_LOG_CATEGORY_EXTERN(LogDS_GameMode, Log, All);
|
||||||
|
|
||||||
|
struct FProcessParameters;
|
||||||
|
struct FServerParameters;
|
||||||
|
|
||||||
struct FGameLiftConfig
|
struct FGameLiftConfig
|
||||||
{
|
{
|
||||||
bool bIsAnywhereFleet = false;
|
bool bIsAnywhereFleet = false;
|
||||||
@@ -31,25 +31,20 @@ class DEDICATEDSERVERS_API ADS_GameMode : public AGameMode
|
|||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
|
|
||||||
virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
|
virtual void InitGame(const FString& MapName, const FString& Options, FString& ErrorMessage) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FGameLiftConfig GameLiftConfig;
|
FGameLiftConfig GameLiftConfig;
|
||||||
FString CachedCommandLine;
|
FString CachedCommandLine;
|
||||||
|
TSharedPtr<FProcessParameters> ProcessParameters;
|
||||||
|
|
||||||
static FString GetSHA256Hash(const FString& InString);
|
static FString GetSHA256Hash(const FString& InString);
|
||||||
void InitGameLift();
|
void InitGameLift();
|
||||||
|
|
||||||
bool GetAnywhereFleetParameters(const FString& CommandLineString);
|
bool GetAnywhereFleetParameters(const FString& CommandLineString);
|
||||||
void LogAnywhereFleetParameters();
|
void LogAnywhereFleetParameters();
|
||||||
|
|
||||||
TSharedPtr<FProcessParameters> ProcessParameters;
|
|
||||||
static void LogServerParameters(const FServerParameters& InServerParameters);
|
static void LogServerParameters(const FServerParameters& InServerParameters);
|
||||||
|
|
||||||
static FString GetValueOrHash(const FString& Value);
|
static FString GetValueOrHash(const FString& Value);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,79 +0,0 @@
|
|||||||
#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<EErrorCodes, FString>& ERROR_MESSAGES = []() ->
|
|
||||||
const TMap<EErrorCodes, FString>&
|
|
||||||
{
|
|
||||||
static TMap<EErrorCodes, FString> 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<EAvailableTokens, FString>& CLI_TOKENS = []() ->
|
|
||||||
const TMap<EAvailableTokens, FString>&
|
|
||||||
{
|
|
||||||
static TMap<EAvailableTokens, FString> Cli_Tokens =
|
|
||||||
{
|
|
||||||
{AuthToken, TEXT("authtoken") },
|
|
||||||
{FleetId, TEXT("fleetid") },
|
|
||||||
{HostId, TEXT("hostid") },
|
|
||||||
{Unknown, TEXT("unknown") },
|
|
||||||
{WebsocketUrl, TEXT("websocketurl") }
|
|
||||||
};
|
|
||||||
return Cli_Tokens;
|
|
||||||
}();
|
|
||||||
|
|
||||||
inline static const TMap<EAvailableTokens, FString>& REGEX_PATTERNS = []() ->
|
|
||||||
const TMap<EAvailableTokens, FString>&
|
|
||||||
{
|
|
||||||
static TMap<EAvailableTokens, FString> 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<EErrorCodes, FString>& ERROR_MESSAGES;
|
|
||||||
// extern const TMap<EAvailableTokens, FString>& CLI_TOKENS;
|
|
||||||
// extern const TMap<EAvailableTokens, FString>& REGEX_PATTERNS;
|
|
||||||
|
|
||||||
struct FParseResult
|
|
||||||
{
|
|
||||||
EAvailableTokens Token = EAvailableTokens::Unknown;
|
|
||||||
FString Value = FString();
|
|
||||||
bool bIsValid = false;
|
|
||||||
EErrorCodes ErrorCode = EErrorCodes::TokenNotFound;
|
|
||||||
FString ErrorMessage = FString();
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||
30
Source/DedicatedServers/Public/GameLift/GameLiftClp.h
Normal file
30
Source/DedicatedServers/Public/GameLift/GameLiftClp.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#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);
|
||||||
|
}
|
||||||
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
#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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
37
Source/DedicatedServers/Public/GameLiftClpTypes.h
Normal file
37
Source/DedicatedServers/Public/GameLiftClpTypes.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace cmdlineparser::details
|
||||||
|
{
|
||||||
|
enum EAvailableTokens
|
||||||
|
{
|
||||||
|
Unknown = 0,
|
||||||
|
AuthToken,
|
||||||
|
HostId,
|
||||||
|
FleetId,
|
||||||
|
WebsocketUrl,
|
||||||
|
MaxToken
|
||||||
|
};
|
||||||
|
|
||||||
|
enum EErrorCodes
|
||||||
|
{
|
||||||
|
NoError,
|
||||||
|
TokenNotFound,
|
||||||
|
ValueEmpty,
|
||||||
|
FailedValidation,
|
||||||
|
MaxCode
|
||||||
|
};
|
||||||
|
|
||||||
|
extern const TArray<FString>& ERROR_MESSAGES;
|
||||||
|
extern const TArray<FString>& CLI_TOKENS;
|
||||||
|
extern const TArray<FString>& REGEX_PATTERNS;
|
||||||
|
|
||||||
|
struct FParseResult
|
||||||
|
{
|
||||||
|
EAvailableTokens Token = EAvailableTokens::Unknown;
|
||||||
|
FString Value = FString();
|
||||||
|
bool bIsValid = false;
|
||||||
|
EErrorCodes ErrorCode = EErrorCodes::TokenNotFound;
|
||||||
|
FString ErrorMessage = FString();
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "NativeGameplayTags.h"
|
|
||||||
|
|
||||||
namespace DedicatedServersTags
|
|
||||||
{
|
|
||||||
namespace GameSessionsAPI
|
|
||||||
{
|
|
||||||
UE_DECLARE_GAMEPLAY_TAG_EXTERN(ListFleets);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "Blueprint/UserWidget.h"
|
|
||||||
#include "FleetId.generated.h"
|
|
||||||
|
|
||||||
class UTextBlock;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UCLASS()
|
|
||||||
class DEDICATEDSERVERS_API UFleetId : public UUserWidget
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
|
||||||
TObjectPtr<UTextBlock> TextBlock_FleetId;
|
|
||||||
};
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "Blueprint/UserWidget.h"
|
|
||||||
#include "ListFleetsBox.generated.h"
|
|
||||||
|
|
||||||
class UButton;
|
|
||||||
class UScrollBox;
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UCLASS()
|
|
||||||
class DEDICATEDSERVERS_API UListFleetsBox : public UUserWidget
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
|
||||||
TObjectPtr<UScrollBox> ScrollBox_ListFleets;
|
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
|
||||||
TObjectPtr<UButton> Button_ListFleets;
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "Interfaces/IHttpRequest.h"
|
|
||||||
#include "UI/HTTP/HTTPRequestManager.h"
|
|
||||||
#include "APITestManager.generated.h"
|
|
||||||
|
|
||||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnListFleetsResponseReceived, const FDSListFleetsResponse&, ListFleetsResponse, bool, bWasSuccessful);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UCLASS()
|
|
||||||
class DEDICATEDSERVERS_API UAPITestManager : public UHTTPRequestManager
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
UFUNCTION()
|
|
||||||
void ListFleets();
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
FOnListFleetsResponseReceived OnListFleetsResponseReceived;
|
|
||||||
|
|
||||||
void ListFleets_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful);
|
|
||||||
};
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "Blueprint/UserWidget.h"
|
|
||||||
#include "APITestOverlay.generated.h"
|
|
||||||
|
|
||||||
class UListFleetsBox;
|
|
||||||
class UAPITestManager;
|
|
||||||
struct FDSListFleetsResponse;
|
|
||||||
class UFleetId;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UCLASS()
|
|
||||||
class DEDICATEDSERVERS_API UAPITestOverlay : public UUserWidget
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
TSubclassOf<UAPITestManager> APITestManagerClass;
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
TSubclassOf<UFleetId> FleetIdWidgetClass;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
virtual void NativeConstruct() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
|
||||||
TObjectPtr<UListFleetsBox> ListFleetsBox = nullptr;
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
TObjectPtr<UAPITestManager> APITestManager;
|
|
||||||
|
|
||||||
UFUNCTION()
|
|
||||||
void ListFleetsButtonClicked();
|
|
||||||
|
|
||||||
UFUNCTION()
|
|
||||||
void OnListFleetsResponseReceived(const FDSListFleetsResponse& ListFleetsResponse, bool bWasSuccessful);
|
|
||||||
|
|
||||||
};
|
|
||||||
16
Source/DedicatedServers/Public/UI/API_Test/APITestOverlay.h
Normal file
16
Source/DedicatedServers/Public/UI/API_Test/APITestOverlay.h
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "APITestOverlay.generated.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class DEDICATEDSERVERS_API UAPITestOverlay : public UUserWidget
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
};
|
||||||
@@ -1,31 +1,29 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
class UAPITestOverlay;
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "GameFramework/HUD.h"
|
#include "GameFramework/HUD.h"
|
||||||
#include "APITestHUD.generated.h"
|
#include "API_TestHUD.generated.h"
|
||||||
|
|
||||||
|
class UAPITestOverlay;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
UCLASS()
|
UCLASS()
|
||||||
class DEDICATEDSERVERS_API AAPITestHUD : public AHUD
|
class DEDICATEDSERVERS_API AAPI_TestHUD : public AHUD
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
TSubclassOf<UAPITestOverlay> APITestOverlayClass;
|
TSubclassOf<UAPITestOverlay> APITestOverlayClass;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual void BeginPlay() override;
|
virtual void BeginPlay() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
TObjectPtr<UAPITestOverlay> APITestOverlay;
|
TObjectPtr<UAPITestOverlay> APITestOverlay;
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
// Fill out your copyright notice in the Description page of Project Settings.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "UObject/Object.h"
|
|
||||||
#include "HTTPRequestManager.generated.h"
|
|
||||||
|
|
||||||
class UAPIData;
|
|
||||||
class FJsonObject;
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
UCLASS(Blueprintable)
|
|
||||||
class DEDICATEDSERVERS_API UHTTPRequestManager : public UObject
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
protected:
|
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
TObjectPtr<UAPIData> APIData;
|
|
||||||
|
|
||||||
bool ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bLogErrors = true);
|
|
||||||
void DumpMetadata(TSharedPtr<FJsonObject> JsonObject);
|
|
||||||
};
|
|
||||||
@@ -1,37 +0,0 @@
|
|||||||
#pragma once
|
|
||||||
|
|
||||||
#include "HTTPRequestTypes.generated.h"
|
|
||||||
|
|
||||||
USTRUCT()
|
|
||||||
struct FDSMetaData
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
int32 httpStatusCode{};
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
FString requestId{};
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
int32 attempts{};
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
double totalRetryDelay{};
|
|
||||||
|
|
||||||
void Dump() const;
|
|
||||||
};
|
|
||||||
|
|
||||||
USTRUCT()
|
|
||||||
struct FDSListFleetsResponse
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
TArray<FString> FleetIds;
|
|
||||||
|
|
||||||
UPROPERTY()
|
|
||||||
FString NextToken;
|
|
||||||
|
|
||||||
void Dump() const;
|
|
||||||
};
|
|
||||||
@@ -11,5 +11,6 @@ public class FPSTemplateTarget : TargetRules
|
|||||||
DefaultBuildSettings = BuildSettingsVersion.V6;
|
DefaultBuildSettings = BuildSettingsVersion.V6;
|
||||||
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7;
|
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7;
|
||||||
ExtraModuleNames.Add("FPSTemplate");
|
ExtraModuleNames.Add("FPSTemplate");
|
||||||
|
ExtraModuleNames.Add("DedicatedServers");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "DedicatedServers/Public/Game/DS_GameMode.h"
|
#include "Game/DS_GameMode.h"
|
||||||
#include "ShooterGameModeBase.generated.h"
|
#include "ShooterGameModeBase.generated.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -11,5 +11,6 @@ public class FPSTemplateClientTarget : TargetRules
|
|||||||
DefaultBuildSettings = BuildSettingsVersion.V6;
|
DefaultBuildSettings = BuildSettingsVersion.V6;
|
||||||
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7;
|
IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7;
|
||||||
ExtraModuleNames.Add("FPSTemplate");
|
ExtraModuleNames.Add("FPSTemplate");
|
||||||
|
ExtraModuleNames.Add("DedicatedServers");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user