Compare commits
16 Commits
new/API_Ga
...
new/API_Ga
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9fb60888ba | ||
|
|
acc105c84d | ||
|
|
d9eb52c047 | ||
|
|
e95360489b | ||
|
|
6f3e1d1f86 | ||
|
|
30c1e42379 | ||
|
|
7f154aa6f9 | ||
|
|
8d6f3f68f1 | ||
|
|
3912fe52c6 | ||
|
|
d989960b41 | ||
|
|
3407b94731 | ||
|
|
b26e9eb576 | ||
|
|
898fba8153 | ||
|
|
f52a4225c3 | ||
|
|
2ec989d34a | ||
|
|
3e61d4cec0 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -69,8 +69,4 @@ Intermediate/*
|
|||||||
Plugins/**/Intermediate/*
|
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.
BIN
Content/DedicatedServers/Portal/BP_PortalHUD.uasset
Normal file
BIN
Content/DedicatedServers/Portal/BP_PortalHUD.uasset
Normal file
Binary file not shown.
BIN
Content/DedicatedServers/Portal/BP_PortalManager.uasset
Normal file
BIN
Content/DedicatedServers/Portal/BP_PortalManager.uasset
Normal file
Binary file not shown.
BIN
Content/DedicatedServers/Portal/WBP_JoinGame.uasset
Normal file
BIN
Content/DedicatedServers/Portal/WBP_JoinGame.uasset
Normal file
Binary file not shown.
BIN
Content/DedicatedServers/Portal/WBP_SignInOverlay.uasset
Normal file
BIN
Content/DedicatedServers/Portal/WBP_SignInOverlay.uasset
Normal file
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,18 +1,20 @@
|
|||||||
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
|
||||||
{
|
{
|
||||||
public DedicatedServers(ReadOnlyTargetRules Target) : base(Target)
|
public DedicatedServers(ReadOnlyTargetRules Target) : base(Target)
|
||||||
{
|
{
|
||||||
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
|
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
|
||||||
|
|
||||||
PublicDependencyModuleNames.AddRange(new string[]
|
PublicDependencyModuleNames.AddRange(new string[]
|
||||||
{
|
{
|
||||||
"Core",
|
"Core",
|
||||||
"CoreUObject",
|
"CoreUObject",
|
||||||
"Engine",
|
"Engine",
|
||||||
"OpenSSL",
|
|
||||||
"GameplayTags",
|
"GameplayTags",
|
||||||
"HTTP"
|
"HTTP"
|
||||||
});
|
});
|
||||||
@@ -21,16 +23,17 @@ public class DedicatedServers : ModuleRules
|
|||||||
{
|
{
|
||||||
"Slate",
|
"Slate",
|
||||||
"SlateCore",
|
"SlateCore",
|
||||||
|
"OpenSSL",
|
||||||
"UMG",
|
"UMG",
|
||||||
"Json",
|
"Json",
|
||||||
"JsonUtilities",
|
"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.
|
||||||
|
|
||||||
if (Target.Type == TargetType.Server)
|
if (Target.Type == TargetType.Server)
|
||||||
{
|
{
|
||||||
PublicDependencyModuleNames.Add("GameLiftServerSDK");
|
PublicDependencyModuleNames.Add("GameLiftServerSDK");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -3,6 +3,6 @@
|
|||||||
#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 );
|
DEFINE_LOG_CATEGORY(LogDedicatedServers);
|
||||||
|
|||||||
@@ -4,4 +4,4 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
|
|
||||||
DECLARE_LOG_CATEGORY_EXTERN(LogDedicatedServers, Log, All);
|
DECLARE_LOG_CATEGORY_EXTERN(LogDedicatedServers, Log, All)
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
// 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 "Data/API/APIData.h"
|
#include "Data/API/APIData.h"
|
||||||
|
|
||||||
FString UAPIData::GetAPIEndPoint(const FGameplayTag& APIEndPoint)
|
FString UAPIData::GetAPIEndpoint(const FGameplayTag& APIEndpoint)
|
||||||
{
|
{
|
||||||
const FString ResourceName = Resources.FindChecked(APIEndPoint);
|
const FString ResourceName = Resources.FindChecked(APIEndpoint);
|
||||||
|
|
||||||
return InvokeUrl + "/" + Stage + "/" + ResourceName;
|
return InvokeUrl + "/" + Stage + "/" + ResourceName;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +1,25 @@
|
|||||||
// 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)
|
||||||
{
|
{
|
||||||
Super::InitGame(MapName, Options, ErrorMessage);
|
Super::InitGame(MapName, Options, ErrorMessage);
|
||||||
|
|
||||||
#if WITH_GAMELIFT
|
#if WITH_GAMELIFT
|
||||||
|
|
||||||
CachedCommandLine = FCommandLine::Get();
|
CachedCommandLine = FCommandLine::Get();
|
||||||
|
|
||||||
@@ -57,12 +42,13 @@ 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
|
||||||
}
|
}
|
||||||
|
|
||||||
FString ADS_GameMode::GetSHA256Hash(const FString& InString)
|
FString ADS_GameMode::GetSHA256Hash(const FString& InString)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (InString.IsEmpty())
|
if (InString.IsEmpty())
|
||||||
return TEXT("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
|
return TEXT("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");
|
||||||
|
|
||||||
@@ -85,7 +71,7 @@ FString ADS_GameMode::GetSHA256Hash(const FString& InString)
|
|||||||
|
|
||||||
void ADS_GameMode::InitGameLift()
|
void ADS_GameMode::InitGameLift()
|
||||||
{
|
{
|
||||||
#if WITH_GAMELIFT
|
#if WITH_GAMELIFT
|
||||||
UE_LOGFMT(LogDS_GameMode, Log, "Calling InitGameLift...");
|
UE_LOGFMT(LogDS_GameMode, Log, "Calling InitGameLift...");
|
||||||
|
|
||||||
// Get the module first
|
// Get the module first
|
||||||
@@ -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,18 +220,14 @@ 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()
|
||||||
{
|
{
|
||||||
// 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 +1,9 @@
|
|||||||
#include "GameplayTags/DedicatedServerTags.h"
|
#include "GameplayTags/DedicatedServersTags.h"
|
||||||
|
|
||||||
namespace DedicatedServersTags
|
namespace DedicatedServersTags
|
||||||
{
|
{
|
||||||
namespace GameSessionsAPI
|
namespace GameSessionsAPI
|
||||||
{
|
{
|
||||||
UE_DEFINE_GAMEPLAY_TAG_COMMENT(ListFleets, "DedicatedServersTags.GameSessionsAPI.ListFleets", "List Fleets resource on the GameSessions API")
|
UE_DEFINE_GAMEPLAY_TAG_COMMENT(ListFleets, "DedicatedServersTags.GameSessionsAPI.ListFleets", "List Fleets resource on the Game Session Resource")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "UI/API/GameSessions/JoinGame.h"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// 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/API/ListFleets/FleetId.h"
|
#include "UI/API/ListFleets/FleetId.h"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// 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/API/ListFleets/ListFleetsBox.h"
|
#include "UI/API/ListFleets/ListFleetsBox.h"
|
||||||
|
|||||||
@@ -1,48 +1,48 @@
|
|||||||
// 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/APITestManager.h"
|
#include "UI/API_Test/APITestManager.h"
|
||||||
#include "HttpModule.h"
|
#include "HttpModule.h"
|
||||||
#include "JsonObjectConverter.h"
|
#include "JsonObjectConverter.h"
|
||||||
#include "Data/API/APIData.h"
|
#include "Data/API/APIData.h"
|
||||||
#include "GameplayTags/DedicatedServerTags.h"
|
#include "DedicatedServers/DedicatedServers.h"
|
||||||
|
#include "GameplayTags/DedicatedServersTags.h"
|
||||||
#include "Interfaces/IHttpResponse.h"
|
#include "Interfaces/IHttpResponse.h"
|
||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
#include "UI/HTTP/HTTPRequestTypes.h"
|
||||||
|
|
||||||
|
|
||||||
void UAPITestManager::ListFleets()
|
void UAPITestManager::ListFleets()
|
||||||
{
|
{
|
||||||
check(APIData);
|
check(APIData);
|
||||||
|
TSharedRef<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
|
||||||
TSharedPtr<IHttpRequest> Request = FHttpModule::Get().CreateRequest();
|
|
||||||
Request->OnProcessRequestComplete().BindUObject(this, &UAPITestManager::ListFleets_Response);
|
Request->OnProcessRequestComplete().BindUObject(this, &UAPITestManager::ListFleets_Response);
|
||||||
|
const FString APIUrl = APIData->GetAPIEndpoint(DedicatedServersTags::GameSessionsAPI::ListFleets);
|
||||||
const FString APIUrl = APIData->GetAPIEndPoint(DedicatedServersTags::GameSessionsAPI::ListFleets);
|
|
||||||
|
|
||||||
Request->SetURL(APIUrl);
|
Request->SetURL(APIUrl);
|
||||||
Request->SetVerb("GET");
|
Request->SetVerb(TEXT("GET"));
|
||||||
Request->SetHeader("Content-Type", "application/json");
|
Request->SetHeader(TEXT("Content-Type"), TEXT("application/json"));
|
||||||
Request->ProcessRequest();
|
Request->ProcessRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
|
void UAPITestManager::ListFleets_Response(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
|
||||||
{
|
{
|
||||||
|
GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Blue, "List Fleets Response Received");
|
||||||
|
|
||||||
TSharedPtr<FJsonObject> JsonObject;
|
TSharedPtr<FJsonObject> JsonObject;
|
||||||
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(Response->GetContentAsString());
|
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(Response->GetContentAsString());
|
||||||
|
|
||||||
if (FJsonSerializer::Deserialize(JsonReader, JsonObject))
|
if (FJsonSerializer::Deserialize(JsonReader, JsonObject))
|
||||||
{
|
{
|
||||||
if (ContainsErrors(JsonObject))
|
const TSharedPtr<FJsonObject>* ErrorObjPtr = nullptr;;
|
||||||
|
|
||||||
|
if (ContainsErrors(JsonObject, false))
|
||||||
{
|
{
|
||||||
OnListFleetsResponseReceived.Broadcast(FDSListFleetsResponse(), false);
|
OnListFleetsResponseReceived.Broadcast(FDS_ListFleetsResponse(), false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
DumpMetaData(JsonObject);
|
||||||
DumpMetadata(JsonObject);
|
|
||||||
|
|
||||||
FDSListFleetsResponse ListFleetsResponse;
|
FDS_ListFleetsResponse ListFleetsResponse;
|
||||||
FJsonObjectConverter::JsonObjectToUStruct(JsonObject.ToSharedRef(), &ListFleetsResponse);
|
FJsonObjectConverter::JsonObjectToUStruct(JsonObject.ToSharedRef(), &ListFleetsResponse);
|
||||||
OnListFleetsResponseReceived.Broadcast(ListFleetsResponse, true);
|
|
||||||
ListFleetsResponse.Dump();
|
ListFleetsResponse.Dump();
|
||||||
|
OnListFleetsResponseReceived.Broadcast(ListFleetsResponse, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,48 +1,49 @@
|
|||||||
// 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/API_Test/APITestOverlay.h"
|
||||||
|
#include "UI/API_Test/APITestManager.h"
|
||||||
|
|
||||||
|
|
||||||
#include "UI/APITest/APITestOverlay.h"
|
|
||||||
|
|
||||||
#include "Blueprint/WidgetLayoutLibrary.h"
|
|
||||||
#include "Components/Button.h"
|
#include "Components/Button.h"
|
||||||
#include "Components/ScrollBox.h"
|
#include "Components/ScrollBox.h"
|
||||||
#include "Components/TextBlock.h"
|
#include "Components/TextBlock.h"
|
||||||
#include "UI/API/ListFleets/FleetId.h"
|
#include "UI/API/ListFleets/FleetId.h"
|
||||||
#include "UI/API/ListFleets/ListFleetsBox.h"
|
#include "UI/API/ListFleets/ListFleetsBox.h"
|
||||||
#include "UI/APITest/APITestManager.h"
|
|
||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
#include "UI/HTTP/HTTPRequestTypes.h"
|
||||||
|
|
||||||
|
|
||||||
void UAPITestOverlay::NativeConstruct()
|
void UAPITestOverlay::NativeConstruct()
|
||||||
{
|
{
|
||||||
Super::NativeConstruct();
|
Super::NativeConstruct();
|
||||||
|
|
||||||
check(APITestManagerClass);
|
check(APITestManagerClass);
|
||||||
APITestManager = NewObject<UAPITestManager>(this, APITestManagerClass);
|
APITestManager = NewObject<UAPITestManager>(this, APITestManagerClass);
|
||||||
|
|
||||||
check(ListFleetsBox)
|
check (ListFleetsBox)
|
||||||
check(ListFleetsBox->Button_ListFleets)
|
check (ListFleetsBox->Button_ListFleets)
|
||||||
ListFleetsBox->Button_ListFleets->OnClicked.AddDynamic(this, &UAPITestOverlay::ListFleetsButtonClicked);
|
ListFleetsBox->Button_ListFleets->OnClicked.AddDynamic(this, &UAPITestOverlay::ListFleetsButtonClicked);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UAPITestOverlay::ListFleetsButtonClicked()
|
void UAPITestOverlay::ListFleetsButtonClicked()
|
||||||
{
|
{
|
||||||
check (APITestManager)
|
check(APITestManager);
|
||||||
APITestManager->OnListFleetsResponseReceived.AddDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
|
APITestManager->OnListFleetsResponseReceived.AddDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
|
||||||
APITestManager->ListFleets();
|
APITestManager->ListFleets();
|
||||||
|
|
||||||
ListFleetsBox->Button_ListFleets->SetIsEnabled(false);
|
ListFleetsBox->Button_ListFleets->SetIsEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UAPITestOverlay::OnListFleetsResponseReceived(const FDSListFleetsResponse& ListFleetsResponse, bool bWasSuccessful)
|
void UAPITestOverlay::OnListFleetsResponseReceived(const FDS_ListFleetsResponse& ListFleetResponse, bool bWasSuccessful)
|
||||||
{
|
{
|
||||||
if (APITestManager->OnListFleetsResponseReceived.IsAlreadyBound(this, &UAPITestOverlay::OnListFleetsResponseReceived))
|
if (APITestManager->OnListFleetsResponseReceived.IsAlreadyBound(this, &UAPITestOverlay::OnListFleetsResponseReceived))
|
||||||
{
|
{
|
||||||
APITestManager->OnListFleetsResponseReceived.RemoveDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
|
APITestManager->OnListFleetsResponseReceived.RemoveDynamic(this, &UAPITestOverlay::OnListFleetsResponseReceived);
|
||||||
}
|
}
|
||||||
ListFleetsBox->ScrollBox_ListFleets->ClearChildren();
|
|
||||||
check(FleetIdWidgetClass);
|
check(FleetIdWidgetClass);
|
||||||
|
ListFleetsBox->ScrollBox_ListFleets->ClearChildren();
|
||||||
if (bWasSuccessful)
|
if (bWasSuccessful)
|
||||||
{
|
{
|
||||||
for (const FString& FleetId : ListFleetsResponse.FleetIds)
|
for (const FString& FleetId : ListFleetResponse.FleetIds)
|
||||||
{
|
{
|
||||||
UFleetId* FleetIdWidget = CreateWidget<UFleetId>(this, FleetIdWidgetClass);
|
UFleetId* FleetIdWidget = CreateWidget<UFleetId>(this, FleetIdWidgetClass);
|
||||||
FleetIdWidget->TextBlock_FleetId->SetText(FText::FromString(FleetId));
|
FleetIdWidget->TextBlock_FleetId->SetText(FText::FromString(FleetId));
|
||||||
@@ -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,33 +1,31 @@
|
|||||||
// 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/HTTP/HTTPRequestManager.h"
|
#include "UI/HTTP/HTTPRequestManager.h"
|
||||||
|
|
||||||
|
#include "HTTPRequestTypes.h"
|
||||||
#include "JsonObjectConverter.h"
|
#include "JsonObjectConverter.h"
|
||||||
#include "DedicatedServers/DedicatedServers.h"
|
#include "DedicatedServers/DedicatedServers.h"
|
||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
|
||||||
|
|
||||||
bool UHTTPRequestManager::ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bLogErrors)
|
bool UHTTPRequestManager::ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bSuppressLog)
|
||||||
{
|
{
|
||||||
if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage")))
|
if (JsonObject->HasField(TEXT("errorType")) || JsonObject->HasField(TEXT("errorMessage")))
|
||||||
{
|
{
|
||||||
FString ErrorType = JsonObject->HasField(TEXT("errorType")) ? JsonObject->GetStringField(TEXT("errorType")) : FString("Unknown Error");
|
if (!bSuppressLog)
|
||||||
FString ErrorMessage = JsonObject->HasField(TEXT("errorMessage")) ? JsonObject->GetStringField(TEXT("errorMessage")) : FString("Unknown Error Message");
|
|
||||||
|
|
||||||
if (bLogErrors)
|
|
||||||
{
|
{
|
||||||
|
FString ErrorType = JsonObject->HasField(TEXT("errorType")) ? JsonObject->GetStringField(TEXT("errorType")) : TEXT("Unknown Error");
|
||||||
|
FString ErrorMessage = JsonObject->HasField(TEXT("errorMessage")) ? JsonObject->GetStringField(TEXT("errorMessage")) : TEXT("Unknown Error Message");
|
||||||
|
|
||||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
|
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
|
||||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage);
|
UE_LOGFMT(LogDedicatedServers, Error, "Error Message: {ErrorMessage}", ErrorMessage);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (JsonObject->HasField(TEXT("$fault")))
|
if (JsonObject->HasField(TEXT("$fault")))
|
||||||
{
|
{
|
||||||
FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : FString("Unknown Error");
|
if (!bSuppressLog)
|
||||||
|
|
||||||
if (bLogErrors)
|
|
||||||
{
|
{
|
||||||
|
FString ErrorType = JsonObject->HasField(TEXT("name")) ? JsonObject->GetStringField(TEXT("name")) : TEXT("Unknown Error");
|
||||||
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
|
UE_LOGFMT(LogDedicatedServers, Error, "Error Type: {ErrorType}", ErrorType);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -35,14 +33,13 @@ bool UHTTPRequestManager::ContainsErrors(TSharedPtr<FJsonObject> JsonObject, boo
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UHTTPRequestManager::DumpMetadata(TSharedPtr<FJsonObject> JsonObject)
|
void UHTTPRequestManager::DumpMetaData(TSharedPtr<FJsonObject> JsonObject)
|
||||||
{
|
{
|
||||||
if (JsonObject->HasField(TEXT("$metadata")))
|
if (JsonObject->HasField(TEXT("$metadata")))
|
||||||
{
|
{
|
||||||
TSharedPtr<FJsonObject> MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));
|
TSharedPtr<FJsonObject> MetaDataJsonObject = JsonObject->GetObjectField(TEXT("$metadata"));
|
||||||
FDSMetaData DSMetaData;
|
FDS_MetaData DSMetaData;
|
||||||
FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
|
FJsonObjectConverter::JsonObjectToUStruct(MetaDataJsonObject.ToSharedRef(), &DSMetaData);
|
||||||
|
|
||||||
DSMetaData.Dump();
|
DSMetaData.Dump();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,22 @@
|
|||||||
#include "UI/HTTP/HTTPRequestTypes.h"
|
#include "UI/HTTP/HTTPRequestTypes.h"
|
||||||
#include "DedicatedServers/DedicatedServers.h"
|
#include "DedicatedServers/DedicatedServers.h"
|
||||||
|
|
||||||
void FDSMetaData::Dump() const
|
void FDS_MetaData::Dump() const
|
||||||
{
|
{
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "MetaData:");
|
UE_LOGFMT(LogDedicatedServers, Log, "MetaData:");
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "httpStatusCode: {httpStatusCode}", httpStatusCode);
|
UE_LOGFMT(LogDedicatedServers, Log, "httpStatusCode: {httpStatusCode}", httpStatusCode);
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "requestId: {requestId}", requestId);
|
UE_LOGFMT(LogDedicatedServers, Log, "requestId: {requestId}", requestId);
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "attempts: {attempts}", attempts);
|
UE_LOGFMT(LogDedicatedServers, Log, "attemps: {attempts}", attempts);
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "totalRetryDelay: {totalRetryDelay}", totalRetryDelay);
|
UE_LOGFMT(LogDedicatedServers, Log, "totalRetryDelay: {totalRetryDelay}", totalRetryDelay);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FDSListFleetsResponse::Dump() const
|
void FDS_ListFleetsResponse::Dump() const
|
||||||
{
|
{
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "ListFleetsResponse:");
|
UE_LOGFMT(LogDedicatedServers, Log, "ListFleetsResponse:");
|
||||||
|
|
||||||
for (const FString& FleetId : FleetIds)
|
for (const FString& FleetId : FleetIds)
|
||||||
{
|
{
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "FleetId: {FleetId}", *FleetId);
|
UE_LOGFMT(LogDedicatedServers, Log, "FleetId: {FleetId}", FleetId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!NextToken.IsEmpty())
|
if (!NextToken.IsEmpty())
|
||||||
{
|
{
|
||||||
UE_LOGFMT(LogDedicatedServers, Log, "NextToken: {NextToken}", NextToken);
|
UE_LOGFMT(LogDedicatedServers, Log, "NextToken: {NextToken}", NextToken);
|
||||||
|
|||||||
@@ -1,12 +1,16 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
// Because this is in the private section is is still usable by the DedicatedServer Module, but not outside of the module.
|
||||||
|
|
||||||
#include "HTTPRequestTypes.generated.h"
|
#include "HTTPRequestTypes.generated.h"
|
||||||
|
|
||||||
USTRUCT()
|
USTRUCT()
|
||||||
struct FDSMetaData
|
struct FDS_MetaData
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
int32 httpStatusCode{};
|
int32 httpStatusCode{};
|
||||||
|
|
||||||
@@ -23,15 +27,17 @@ struct FDSMetaData
|
|||||||
};
|
};
|
||||||
|
|
||||||
USTRUCT()
|
USTRUCT()
|
||||||
struct FDSListFleetsResponse
|
struct FDS_ListFleetsResponse
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
UPROPERTY()
|
public:
|
||||||
TArray<FString> FleetIds;
|
|
||||||
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
FString NextToken;
|
TArray<FString> FleetIds{};
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
|
FString NextToken{};
|
||||||
|
|
||||||
void Dump() const;
|
void Dump() const;
|
||||||
};
|
};
|
||||||
23
Source/DedicatedServers/Private/UI/Portal/PortalHUD.cpp
Normal file
23
Source/DedicatedServers/Private/UI/Portal/PortalHUD.cpp
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "UI/Portal/PortalHUD.h"
|
||||||
|
#include "UI/Portal/SignIn/SignInOverlay.h"
|
||||||
|
#include "Blueprint/UserWidget.h"
|
||||||
|
|
||||||
|
void APortalHUD::BeginPlay()
|
||||||
|
{
|
||||||
|
Super::BeginPlay();
|
||||||
|
|
||||||
|
APlayerController* OwningPlayerController = GetOwningPlayerController();
|
||||||
|
SignInOverlay = CreateWidget<USignInOverlay>(OwningPlayerController, SignInOverlayClass);
|
||||||
|
if (IsValid(SignInOverlay))
|
||||||
|
{
|
||||||
|
SignInOverlay->AddToViewport();
|
||||||
|
}
|
||||||
|
|
||||||
|
const FInputModeGameAndUI InputModeData;
|
||||||
|
OwningPlayerController->SetInputMode(InputModeData);
|
||||||
|
OwningPlayerController->SetShowMouseCursor(true);
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "UI/Portal/PortalManager.h"
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
|
||||||
|
#include "UI/Portal/SignIn/SignInOverlay.h"
|
||||||
|
|
||||||
|
#include "UI/Portal/PortalManager.h"
|
||||||
|
|
||||||
|
void USignInOverlay::NativeConstruct()
|
||||||
|
{
|
||||||
|
Super::NativeConstruct();
|
||||||
|
check(PortalManagerClass);
|
||||||
|
|
||||||
|
PortalManager = NewObject<UPortalManager>(PortalManagerClass);
|
||||||
|
}
|
||||||
@@ -1,10 +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.
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "Engine/DataAsset.h"
|
#include "Engine/DataAsset.h"
|
||||||
#include "GameplayTags/DedicatedServerTags.h"
|
#include "GameplayTags/DedicatedServersTags.h"
|
||||||
#include "APIData.generated.h"
|
#include "APIData.generated.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -16,13 +16,13 @@ class DEDICATEDSERVERS_API UAPIData : public UDataAsset
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
FString GetAPIEndpoint(const FGameplayTag& APIEndpoint);
|
||||||
FString GetAPIEndPoint(const FGameplayTag& APIEndPoint);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
// Name of this API - for labeling in the Data Asset; This is nto used by any code.
|
// Name of the API - for labeling in the Data Asset; this is not used by any code.
|
||||||
UPROPERTY(EditDefaultsOnly)
|
|
||||||
|
UPROPERTY(EditAnywhere)
|
||||||
FString Name;
|
FString Name;
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
|
|||||||
@@ -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,4 +1,4 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
#include "NativeGameplayTags.h"
|
#include "NativeGameplayTags.h"
|
||||||
@@ -7,6 +7,6 @@ namespace DedicatedServersTags
|
|||||||
{
|
{
|
||||||
namespace GameSessionsAPI
|
namespace GameSessionsAPI
|
||||||
{
|
{
|
||||||
UE_DECLARE_GAMEPLAY_TAG_EXTERN(ListFleets);
|
UE_DECLARE_GAMEPLAY_TAG_EXTERN(ListFleets)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "JoinGame.generated.h"
|
||||||
|
|
||||||
|
class UButton;
|
||||||
|
class UTextBlock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class DEDICATEDSERVERS_API UJoinGame : public UUserWidget
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
TObjectPtr<UButton> Button_JoinGame;
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
TObjectPtr<UTextBlock> TextBlock_StatusMessage;
|
||||||
|
};
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// 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
|
||||||
|
|
||||||
@@ -7,8 +7,9 @@
|
|||||||
#include "FleetId.generated.h"
|
#include "FleetId.generated.h"
|
||||||
|
|
||||||
class UTextBlock;
|
class UTextBlock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
UCLASS()
|
UCLASS()
|
||||||
class DEDICATEDSERVERS_API UFleetId : public UUserWidget
|
class DEDICATEDSERVERS_API UFleetId : public UUserWidget
|
||||||
@@ -17,6 +18,6 @@ class DEDICATEDSERVERS_API UFleetId : public UUserWidget
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
UPROPERTY(meta = (BindWidget), BlueprintReadWrite)
|
||||||
TObjectPtr<UTextBlock> TextBlock_FleetId;
|
TObjectPtr<UTextBlock> TextBlock_FleetId;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// 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
|
||||||
|
|
||||||
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
class UButton;
|
class UButton;
|
||||||
class UScrollBox;
|
class UScrollBox;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -15,7 +16,7 @@ UCLASS()
|
|||||||
class DEDICATEDSERVERS_API UListFleetsBox : public UUserWidget
|
class DEDICATEDSERVERS_API UListFleetsBox : public UUserWidget
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
UPROPERTY(meta = (BindWidget))
|
||||||
@@ -23,5 +24,4 @@ public:
|
|||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
UPROPERTY(meta = (BindWidget))
|
||||||
TObjectPtr<UButton> Button_ListFleets;
|
TObjectPtr<UButton> Button_ListFleets;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// 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
|
||||||
|
|
||||||
@@ -7,8 +7,7 @@
|
|||||||
#include "UI/HTTP/HTTPRequestManager.h"
|
#include "UI/HTTP/HTTPRequestManager.h"
|
||||||
#include "APITestManager.generated.h"
|
#include "APITestManager.generated.h"
|
||||||
|
|
||||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnListFleetsResponseReceived, const FDSListFleetsResponse&, ListFleetsResponse, bool, bWasSuccessful);
|
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnListFleetsResponseReceived, const FDS_ListFleetsResponse&, ListFleetResponse, bool, bWasSuccessful);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
// 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
|
||||||
|
|
||||||
@@ -6,9 +6,9 @@
|
|||||||
#include "Blueprint/UserWidget.h"
|
#include "Blueprint/UserWidget.h"
|
||||||
#include "APITestOverlay.generated.h"
|
#include "APITestOverlay.generated.h"
|
||||||
|
|
||||||
class UListFleetsBox;
|
|
||||||
class UAPITestManager;
|
class UAPITestManager;
|
||||||
struct FDSListFleetsResponse;
|
class UListFleetsBox;
|
||||||
|
struct FDS_ListFleetsResponse;
|
||||||
class UFleetId;
|
class UFleetId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -18,7 +18,7 @@ UCLASS()
|
|||||||
class DEDICATEDSERVERS_API UAPITestOverlay : public UUserWidget
|
class DEDICATEDSERVERS_API UAPITestOverlay : public UUserWidget
|
||||||
{
|
{
|
||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
@@ -28,21 +28,23 @@ public:
|
|||||||
TSubclassOf<UFleetId> FleetIdWidgetClass;
|
TSubclassOf<UFleetId> FleetIdWidgetClass;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual void NativeConstruct() override;
|
virtual void NativeConstruct() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
UPROPERTY(meta = (BindWidget))
|
UPROPERTY(meta = (BindWidget))
|
||||||
TObjectPtr<UListFleetsBox> ListFleetsBox = nullptr;
|
TObjectPtr<UListFleetsBox> ListFleetsBox;
|
||||||
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
TObjectPtr<UAPITestManager> APITestManager;
|
TObjectPtr<UAPITestManager> APITestManager;
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void ListFleetsButtonClicked();
|
void ListFleetsButtonClicked();
|
||||||
|
|
||||||
UFUNCTION()
|
UFUNCTION()
|
||||||
void OnListFleetsResponseReceived(const FDSListFleetsResponse& ListFleetsResponse, bool bWasSuccessful);
|
void OnListFleetsResponseReceived(const FDS_ListFleetsResponse& ListFleetResponse, bool bWasSuccessful);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
@@ -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,4 +1,4 @@
|
|||||||
// 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
|
||||||
|
|
||||||
@@ -22,6 +22,7 @@ protected:
|
|||||||
UPROPERTY(EditDefaultsOnly)
|
UPROPERTY(EditDefaultsOnly)
|
||||||
TObjectPtr<UAPIData> APIData;
|
TObjectPtr<UAPIData> APIData;
|
||||||
|
|
||||||
bool ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bLogErrors = true);
|
bool ContainsErrors(TSharedPtr<FJsonObject> JsonObject, bool bSuppressLog = true);
|
||||||
void DumpMetadata(TSharedPtr<FJsonObject> JsonObject);
|
void DumpMetaData(TSharedPtr<FJsonObject> JsonObject);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|||||||
32
Source/DedicatedServers/Public/UI/Portal/PortalHUD.h
Normal file
32
Source/DedicatedServers/Public/UI/Portal/PortalHUD.h
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "GameFramework/HUD.h"
|
||||||
|
#include "PortalHUD.generated.h"
|
||||||
|
|
||||||
|
class USignInOverlay;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class DEDICATEDSERVERS_API APortalHUD : public AHUD
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
UPROPERTY(EditDefaultsOnly)
|
||||||
|
TSubclassOf<USignInOverlay> SignInOverlayClass;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
virtual void BeginPlay() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
|
TObjectPtr<USignInOverlay> SignInOverlay;
|
||||||
|
};
|
||||||
16
Source/DedicatedServers/Public/UI/Portal/PortalManager.h
Normal file
16
Source/DedicatedServers/Public/UI/Portal/PortalManager.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 "UI/HTTP/HTTPRequestManager.h"
|
||||||
|
#include "PortalManager.generated.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class DEDICATEDSERVERS_API UPortalManager : public UHTTPRequestManager
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
};
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
// Fill out your copyright notice in the Description page of Project Settings.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "Blueprint/UserWidget.h"
|
||||||
|
#include "SignInOverlay.generated.h"
|
||||||
|
|
||||||
|
class UJoinGame;
|
||||||
|
class UPortalManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
UCLASS()
|
||||||
|
class DEDICATEDSERVERS_API USignInOverlay : public UUserWidget
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
UPROPERTY(meta = (BindWidget))
|
||||||
|
TObjectPtr<UJoinGame> JoinGameWidget;
|
||||||
|
|
||||||
|
UPROPERTY(EditDefaultsOnly)
|
||||||
|
TSubclassOf<UPortalManager> PortalManagerClass;
|
||||||
|
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
virtual void NativeConstruct() override;
|
||||||
|
private:
|
||||||
|
|
||||||
|
UPROPERTY()
|
||||||
|
TObjectPtr<UPortalManager> PortalManager;
|
||||||
|
};
|
||||||
@@ -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