PlayFab / gsdk

Game Server SDK for PlayFab Multiplayer Servers
https://docs.microsoft.com/en-us/gaming/playfab/features/multiplayer/servers/
Apache License 2.0
146 stars 115 forks source link

Failed to parse heartbeat - Stuck in Active state #146

Closed looterz closed 1 year ago

looterz commented 1 year ago

Describe the bug Sometimes, seemingly randomly throughout a large amount of server deployments the game servers will keep receiving Failed to parse heartbeat from the GSDKInternal::decodeHeartbeatResponse method and get stuck in the Active state, unable to be joined and not being cleaned up.

Expected behavior Not sure why the issue occurs but it should not cause the server to get permanently stuck in the Active state and maybe the JSON deserializer should provide some more information and debug output to help narrow down the issue. If an error occurs within the JSON deserializer it would make sense to log some information about the HTTP response that caused the failure.

Additional context This issue has also been discussed in the PlayFab community here.

nassosterz-ms commented 1 year ago

Thank you for reporting this. We will try to replicate it and investigate more. Also, just to verify, you are talking about Unreal, right?

looterz commented 1 year ago

Thank you for reporting this. We will try to replicate it and investigate more. Also, just to verify, you are talking about Unreal, right?

Yes, Unreal Engine 5.1 with the latest version of the PlayFab GSDK and Unreal Engine plugin.

looterz commented 1 year ago

This was a side effect of the port being defined as GamePort instead of gameport. Closing the issue.

looterz commented 1 year ago

Reopening this issue as we're still encountering it even after fixing the case-sensitive GamePort issue. It seems to happen the most when deploying servers right after a new build is created which is part of our CI/CD process, and it's related to decoding the JSON response from the heartbeat, I'll try and add some more logging and get more information.

nassosterz-ms commented 1 year ago

I would like to clarify something. Does "Failed to parse heartbeat from the GSDKInternal::decodeHeartbeatResponse" occur once in a while, or every heartbeat results in this?

Also, another clarification that could be helpful. Is the server on the Active state and still it is not joinable?

looterz commented 1 year ago

I would like to clarify something. Does "Failed to parse heartbeat from the GSDKInternal::decodeHeartbeatResponse" occur once in a while, or every heartbeat results in this?

Also, another clarification that could be helpful. Is the server on the Active state and still it is not joinable?

It seems to be pretty much every heartbeat after the first initial few. I added some code to dump the response that is failing to deserialize, and it's just an empty response.

nassosterz-ms commented 1 year ago

Any chance you could attach the logs?

Malan-Tai commented 1 year ago

Hello, I have the same issue but using UE4.25 (which I know hasn't been tested with this plugin).

In FGSDKInternal::EncodeHeartbeatRequest(), the request string is correct and reads

{
    "CurrentGameState": "StandingBy",
    "CurrentGameHealth": "Healthy",
    "CurrentPlayers": []
}

However, in FGSDKInternal::DecodeHeartbeatResponse(const FString& ResponseJson), the response string is indeed empty, resulting in the "Failed to parse heartbeat" message.

I've tried sending the same request at http://127.0.0.1:56001/v1/sessionHosts/server_id while the local multiplayer agent was running, using REST ninja, but it unfortunately responded Connection refused which I don't think is what the actual game server is getting.

nassosterz-ms commented 1 year ago

@Malan-Tai it would help a lot if you could add the GSDK logs!

looterz commented 1 year ago

Any chance you could attach the logs?

Here is one of our logs,

PS C:\Windows\system32> docker logs 7a2
Running Startup Script
Certificates located at: C:\GameCertificates

C:\Assets\WindowsServer>certutil.exe -addstore root .\AmazonRootCA1.cer
root "Trusted Root Certification Authorities"
Signature matches Public Key
Certificate "Amazon Root CA 1" added to store.
CertUtil: -addstore command completed successfully.

C:\Assets\WindowsServer>certutil.exe -addstore root .\AmazonRootCA2.cer
root "Trusted Root Certification Authorities"
Signature matches Public Key
Certificate "Amazon Root CA 2" added to store.
CertUtil: -addstore command completed successfully.

C:\Assets\WindowsServer>certutil.exe -addstore root .\AmazonRootCA3.cer
root "Trusted Root Certification Authorities"
Signature matches Public Key
Certificate "Amazon Root CA 3" added to store.
CertUtil: -addstore command completed successfully.

C:\Assets\WindowsServer>certutil.exe -addstore root .\AmazonRootCA4.cer
root "Trusted Root Certification Authorities"
Signature matches Public Key
Certificate "Amazon Root CA 4" added to store.
CertUtil: -addstore command completed successfully.

C:\Assets\WindowsServer>certutil.exe -addstore root .\SFSRootCAG2.cer
root "Trusted Root Certification Authorities"
Signature matches Public Key
Certificate "Starfield Services Root Certificate Authority - G2" added to store.
CertUtil: -addstore command completed successfully.

C:\Assets\WindowsServer>.\FrontlandServer.exe -log
LogIoDispatcher: Display: Reading toc: ../../../Frontland/Content/Paks/global.utoc
LogIoDispatcher: Display: Toc signature hash: 0000000000000000000000000000000000000000
LogIoDispatcher: Display: Mounting container '../../../Frontland/Content/Paks/global.utoc' in location slot 0
LogPakFile: Display: Initialized I/O dispatcher file backend. Mounted the global container: ../../../Frontland/Content/Paks/global.utoc
LogPakFile: Display: Found Pak file ../../../Frontland/Content/Paks/Frontland-WindowsServer.pak attempting to mount.
LogPakFile: Display: Mounting pak file ../../../Frontland/Content/Paks/Frontland-WindowsServer.pak.
LogIoDispatcher: Display: Reading toc: ../../../Frontland/Content/Paks/Frontland-WindowsServer.utoc
LogIoDispatcher: Display: Toc signature hash: 0000000000000000000000000000000000000000
LogIoDispatcher: Display: Mounting container '../../../Frontland/Content/Paks/Frontland-WindowsServer.utoc' in location slot 0
LogPakFile: Display: Mounted IoStore container "../../../Frontland/Content/Paks/Frontland-WindowsServer.utoc"
LogPakFile: Display: Mounted Pak file '../../../Frontland/Content/Paks/Frontland-WindowsServer.pak', mount point: '../../../'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/2D/Paper2D/Content/' mounted to '/Paper2D/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/AnimationLocomotionLibrary/Content/' mounted to '/AnimationLocomotionLibrary/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/AnimationWarping/Content/' mounted to '/AnimationWarping/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/ControlRig/Content/' mounted to '/ControlRig/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/ControlRigSpline/Content/' mounted to '/ControlRigSpline/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/IKRig/Content/' mounted to '/IKRig/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Bridge/Content/' mounted to '/Bridge/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Compositing/OpenColorIO/Content/' mounted to '/OpenColorIO/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Developer/AnimationSharing/Content/' mounted to '/AnimationSharing/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Editor/GeometryMode/Content/' mounted to '/GeometryMode/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Editor/ModelingToolsEditorMode/Content/' mounted to '/ModelingToolsEditorMode/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Editor/SpeedTreeImporter/Content/' mounted to '/SpeedTreeImporter/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Enterprise/DatasmithContent/Content/' mounted to '/DatasmithContent/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ChaosClothEditor/Content/' mounted to '/ChaosClothEditor/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ChaosNiagara/Content/' mounted to '/ChaosNiagara/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ChaosSolverPlugin/Content/' mounted to '/ChaosSolverPlugin/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/CommonUI/Content/' mounted to '/CommonUI/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ControlFlows/Content/' mounted to '/ControlFlows/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/FullBodyIK/Content/' mounted to '/FullBodyIK/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/GeometryCollectionPlugin/Content/' mounted to '/GeometryCollectionPlugin/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/GeometryScripting/Content/' mounted to '/GeometryScripting/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/Landmass/Content/' mounted to '/Landmass/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/PythonScriptPlugin/Content/' mounted to '/PythonScriptPlugin/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/Volumetrics/Content/' mounted to '/Volumetrics/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/Water/Content/' mounted to '/Water/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/FX/Niagara/Content/' mounted to '/Niagara/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Media/MediaCompositing/Content/' mounted to '/MediaCompositing/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/MovieScene/MoviePipelineMaskRenderPass/Content/' mounted to '/MoviePipelineMaskRenderPass/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/MovieScene/MovieRenderPipeline/Content/' mounted to '/MovieRenderPipeline/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/MovieScene/SequencerScripting/Content/' mounted to '/SequencerScripting/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/AudioModulation/Content/' mounted to '/AudioModulation/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/AudioSynesthesia/Content/' mounted to '/AudioSynesthesia/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/AudioWidgets/Content/' mounted to '/AudioWidgets/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/GeometryProcessing/Content/' mounted to '/GeometryProcessing/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/HairStrands/Content/' mounted to '/HairStrands/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/MeshModelingToolset/Content/' mounted to '/MeshModelingToolset/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/Metasound/Content/' mounted to '/Metasound/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/SoundUtilities/Content/' mounted to '/SoundUtilities/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/Synthesis/Content/' mounted to '/Synthesis/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/DLSS/Content/' mounted to '/DLSS/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/LyraExampleContent/Content/' mounted to '/LyraExampleContent/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/LyraExtTool/Content/' mounted to '/LyraExtTool/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/OnlineSubsystemBlueprints/Content/' mounted to '/OnlineSubsystemBlueprints/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/OnlineSubsystemRedpointEOS/Content/' mounted to '/OnlineSubsystemRedpointEOS/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/PocketWorlds/Content/' mounted to '/PocketWorlds/'
LogEOS: Warning: Unable to apply project-specific overrides to OnlineSubsystemRedpointEOS.ini; custom net driver settings will not be loaded.
LogEOS: Warning: [LogEOSOverlay] OverlayPath registry key not found
LogEOS: Warning: [LogEOSOverlay] Failed to initialize overlay module: PATH_NOT_CONFIGURED
LogEOS: Warning: [LogEOSUI] Hot key event ignored because there are no known users.
LogEOS: Warning: [LogEOSOverlay] OverlayPath registry key not found
LogEOS: Warning: [LogEOSOverlay] Failed to initialize overlay module: PATH_NOT_CONFIGURED
LogEOS: Warning: [LogEOSUI] Hot key event ignored because there are no known users.
LogEOS: Error: GEngine is not available; the unique net ID stored in ULocalPlayer and APlayerState will not be correct until the next map load.
LogEOS: Warning: [LogEOSP2P] Attempted to add peer connection request notification with a LocalUserId that did not validate correctly. LocalUserId=[...] Result=[EOS_InvalidUser]
LogEOS: Warning: [LogEOSP2P] Attempted to add peer connection closed notification with a LocalUserId that did not validate correctly. LocalUserId=[...] Result=[EOS_InvalidUser]
LogStreaming: Display: AsyncLoading2 - Created: Event Driven Loader: true, Async Loading Thread: false, Async Post Load: false
LogStreaming: Display: AsyncLoading2 - Initialized
LogConsoleManager: Warning: Setting the console variable 'r.Streaming.PoolSize' with 'SetByScalability' was ignored as it is lower priority than the previous 'SetByProjectSetting'. Value remains '2000'
LogHAL: Display: Platform has ~ 8 GB [8589463552 / 8589934592 / 8], which maps to Default [LargestMinGB=32, LargerMinGB=12, DefaultMinGB=8, SmallerMinGB=6, SmallestMinGB=0)
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/2D/Paper2D/Content/' mounted to '/Paper2D/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/AnimationLocomotionLibrary/Content/' mounted to '/AnimationLocomotionLibrary/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/AnimationWarping/Content/' mounted to '/AnimationWarping/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/ControlRig/Content/' mounted to '/ControlRig/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/ControlRigSpline/Content/' mounted to '/ControlRigSpline/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Animation/IKRig/Content/' mounted to '/IKRig/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Bridge/Content/' mounted to '/Bridge/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Compositing/OpenColorIO/Content/' mounted to '/OpenColorIO/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Developer/AnimationSharing/Content/' mounted to '/AnimationSharing/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Editor/GeometryMode/Content/' mounted to '/GeometryMode/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Editor/ModelingToolsEditorMode/Content/' mounted to '/ModelingToolsEditorMode/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Editor/SpeedTreeImporter/Content/' mounted to '/SpeedTreeImporter/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Enterprise/DatasmithContent/Content/' mounted to '/DatasmithContent/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ChaosClothEditor/Content/' mounted to '/ChaosClothEditor/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ChaosNiagara/Content/' mounted to '/ChaosNiagara/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ChaosSolverPlugin/Content/' mounted to '/ChaosSolverPlugin/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/CommonUI/Content/' mounted to '/CommonUI/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/ControlFlows/Content/' mounted to '/ControlFlows/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/FullBodyIK/Content/' mounted to '/FullBodyIK/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/GeometryCollectionPlugin/Content/' mounted to '/GeometryCollectionPlugin/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/GeometryScripting/Content/' mounted to '/GeometryScripting/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/Landmass/Content/' mounted to '/Landmass/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/PythonScriptPlugin/Content/' mounted to '/PythonScriptPlugin/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/Volumetrics/Content/' mounted to '/Volumetrics/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Experimental/Water/Content/' mounted to '/Water/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/FX/Niagara/Content/' mounted to '/Niagara/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Media/MediaCompositing/Content/' mounted to '/MediaCompositing/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/MovieScene/MoviePipelineMaskRenderPass/Content/' mounted to '/MoviePipelineMaskRenderPass/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/MovieScene/MovieRenderPipeline/Content/' mounted to '/MovieRenderPipeline/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/MovieScene/SequencerScripting/Content/' mounted to '/SequencerScripting/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/AudioModulation/Content/' mounted to '/AudioModulation/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/AudioSynesthesia/Content/' mounted to '/AudioSynesthesia/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/AudioWidgets/Content/' mounted to '/AudioWidgets/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/GeometryProcessing/Content/' mounted to '/GeometryProcessing/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/HairStrands/Content/' mounted to '/HairStrands/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/MeshModelingToolset/Content/' mounted to '/MeshModelingToolset/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/Metasound/Content/' mounted to '/Metasound/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/SoundUtilities/Content/' mounted to '/SoundUtilities/'
LogPackageName: Display: FPackageName: Mount point added: '../../../Engine/Plugins/Runtime/Synthesis/Content/' mounted to '/Synthesis/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/DLSS/Content/' mounted to '/DLSS/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/LyraExampleContent/Content/' mounted to '/LyraExampleContent/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/LyraExtTool/Content/' mounted to '/LyraExtTool/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/OnlineSubsystemBlueprints/Content/' mounted to '/OnlineSubsystemBlueprints/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/OnlineSubsystemRedpointEOS/Content/' mounted to '/OnlineSubsystemRedpointEOS/'
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/PocketWorlds/Content/' mounted to '/PocketWorlds/'
LogStreaming: Display: FlushAsyncLoading: 1 QueuedPackages, 0 AsyncPackages
LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.
LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.
LogGauntlet: Display: Gauntlet Initialized
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'BitDepth'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'HPFCutoffFrequency'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'LowRateFrequency'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'LPFCutoffFrequency'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'Pan'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'Pitch'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'SampleRate'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'TimeOfDay'
LogAudioModulation: Display: Initialized Audio Modulation Parameter 'Volume'
LogAudio: Display: Registering Engine Module Parameter Interfaces...
LogSteamShared: Display: Loading Steam SDK 1.51
LogRedpointDiscord: Warning: Discord runtime is not available; skipping registration of Redpoint Discord OSS.
LogStreaming: Display: AsyncLoading2 - InitialLoad Finalized: 26668 script object entries in 696.91 KB
LogStreaming: Display: AsyncLoading2 - Thread Started: false, IsInitialLoad: false
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/GameFeatures/ShooterCore/Content/' mounted to '/ShooterCore/'
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_SMG_mp5_Fire.GCN_Weapon_SMG_mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Scar_Fire.GCN_Weapon_Scar_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Mp5_Fire.GCN_Weapon_Mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Famas_Fire.GCN_Weapon_Famas_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_DesertEagle.GCN_Weapon_DesertEagle_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Colt.GCN_Weapon_Colt_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_AR15_Fire.GCN_Weapon_AR15_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_SMG_mp5_Fire.GCN_Weapon_SMG_mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Scar_Fire.GCN_Weapon_Scar_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Mp5_Fire.GCN_Weapon_Mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Famas_Fire.GCN_Weapon_Famas_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_DesertEagle.GCN_Weapon_DesertEagle_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Colt.GCN_Weapon_Colt_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_AR15_Fire.GCN_Weapon_AR15_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/ShooterCore/Weapons/Rifle/GCN_Weapon_Rifle_Fire.GCN_Weapon_Rifle_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/ShooterCore/Weapons/Pistol/GCN_Weapon_Pistol_Fire.GCN_Weapon_Pistol_Fire_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogGameFeatures: Display: Game feature 'ShooterCore' loaded successfully. Ending state: Registered
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/GameFeatures/ShooterMaps/Content/' mounted to '/ShooterMaps/'
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_SMG_mp5_Fire.GCN_Weapon_SMG_mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Scar_Fire.GCN_Weapon_Scar_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Mp5_Fire.GCN_Weapon_Mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Famas_Fire.GCN_Weapon_Famas_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_DesertEagle.GCN_Weapon_DesertEagle_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Colt.GCN_Weapon_Colt_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_AR15_Fire.GCN_Weapon_AR15_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/ShooterCore/Weapons/Rifle/GCN_Weapon_Rifle_Fire.GCN_Weapon_Rifle_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/ShooterCore/Weapons/Pistol/GCN_Weapon_Pistol_Fire.GCN_Weapon_Pistol_Fire_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogGameFeatures: Display: Game feature 'ShooterMaps' loaded successfully. Ending state: Registered
LogPackageName: Display: FPackageName: Mount point added: '../../Plugins/GameFeatures/TopDownArena/Content/' mounted to '/TopDownArena/'
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_SMG_mp5_Fire.GCN_Weapon_SMG_mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Scar_Fire.GCN_Weapon_Scar_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Mp5_Fire.GCN_Weapon_Mp5_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Famas_Fire.GCN_Weapon_Famas_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_DesertEagle.GCN_Weapon_DesertEagle_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Colt.GCN_Weapon_Colt_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_AR15_Fire.GCN_Weapon_AR15_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Rifle.Fire,/ShooterCore/Weapons/Rifle/GCN_Weapon_Rifle_Fire.GCN_Weapon_Rifle_Fire_C] when it already existed [GameplayCue.Weapon.Rifle.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Vector_Fire.GCN_Weapon_Vector_Fire_C]. Skipping.
LogAbilitySystem: Warning: AddGameplayCueData_Internal called for [GameplayCue.Weapon.Pistol.Fire,/ShooterCore/Weapons/Pistol/GCN_Weapon_Pistol_Fire.GCN_Weapon_Pistol_Fire_C] when it already existed [GameplayCue.Weapon.Pistol.Fire,/Game/GameplayCueNotifies/GCN_Weapon_Makarov.GCN_Weapon_Makarov_C]. Skipping.
LogGameFeatures: Display: Game feature 'TopDownArena' loaded successfully. Ending state: Registered
LogLyra: Display: Startup job "InitializeAbilitySystem()" starting
LogLyra: Display: Startup job "InitializeAbilitySystem()" took 0.00 seconds to complete
LogLyra: Display: Startup job "InitializeGameplayCueManager()" starting
LogLyra: Display: Startup job "InitializeGameplayCueManager()" took 0.00 seconds to complete
LogLyra: Display: Startup job "GetGameData()" starting
LogLyra: Display: Startup job "GetGameData()" took 0.00 seconds to complete
LogLyra: Display: All startup jobs took 0.00 seconds to complete
LogLyra: Warning: Setting up and starting the PlayFab GSDK hooks
LogPlayFabGSDK: Warning: GSDK Game server listening port: 7777
LogPlayFabGSDK: Warning: GSDK Game client connection port: 30301
LogPlayFabGSDK: Warning: Assigning Unreal Server Host Port to MPS port: 7777
LogInit: Display: Game Engine Initialized.
LogInit: Display: Starting Game.
LogStreaming: Display: 0.015 ms (0.002+0.013) ms for processing 80/80 objects in NotifyUnreachableObjects( Queued=0, Async=0). Removed 18/19 (1017->999 tracked) packages and 18/61 (1630->1612 tracked) public exports.
LogGameSession: Warning: ALyraGameSession::RegisterServer - Advertising MPSPort 30301
LogPlayFabGSDK: Display: ReadyForPlayers, setting game state to StandingBy!
LogInit: Display: Engine is initialized. Leaving FEngineLoop::Init()
LogStreamableManager: Display: RequestAsyncLoad() called with empty or only null assets!
LogHotfixManager: Display: Hotfix manager re-calling PatchAssetsFromIniFiles due to new plugins
LogHotfixManager: Display: Checking for assets to be patched using data from 'AssetHotfix' section in the Game .ini file
LogHotfixManager: Display: No assets were found in the 'AssetHotfix' section in the Game .ini file. No patching needed.
LogEOS: Warning: [LogEOSUI] Hot key event ignored because there are no known users.
LogEOS: Warning: [LogEOSUI] Hot key event ignored because there are no known users.
LogEOS: Warning: [LogEOSUI] Hot key event ignored because there are no known users.
LogEOS: Warning: [LogEOSUI] Social overlay is disabled due to overlay setup failure (EOS_NotConfigured).
LogEOS: Warning: [LogEOSUI] Hot key event ignored because there are no known users.
LogEOS: Warning: [LogEOSUI] Social overlay is disabled due to overlay setup failure (EOS_NotConfigured).
LogStreaming: Display: 0.342 ms (0.062+0.280) ms for processing 3652/3652 objects in NotifyUnreachableObjects( Queued=0, Async=0). Removed 766/766 (2779->2013 tracked) packages and 1045/2886 (4654->3609 tracked) public exports.
LogStreamableManager: Display: RequestAsyncLoad() called with empty or only null assets!
LogStreaming: Display: 0.007 ms (0.001+0.006) ms for processing 13/13 objects in NotifyUnreachableObjects( Queued=0, Async=0). Removed 1/1 (2779->2778 tracked) packages and 3/12 (4643->4640 tracked) public exports.
LogStreaming: Display: 0.001 ms (0.000+0.001) ms for processing 1/1 objects in NotifyUnreachableObjects( Queued=0, Async=0). Removed 0/0 (2778->2778 tracked) packages and 0/1 (4640->4640 tracked) public exports.
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.001 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.001 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.001 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response.  Response:
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
LogStreaming: Display: 0.000 ms for skipping 0 objects in NotifyUnreachableObjects (Queued=0, Async=0).
nassosterz-ms commented 1 year ago

Thanks for providing that. Couple of clarifying questions. "LogPlayFabGSDK: Display: ReadyForPlayers, setting game state to StandingBy!" - is this from the OnGSDKReadyForPlayers callback?

Could we get more information about what is happening when parsing the json? Could you attach a debugger and put a breakpoint there? Are you using LMA (LocalMultiplayerAgent) or is this from PlayFab servers?

looterz commented 1 year ago

Thanks for providing that. Couple of clarifying questions. "LogPlayFabGSDK: Display: ReadyForPlayers, setting game state to StandingBy!" - is this from the OnGSDKReadyForPlayers callback?

Could we get more information about what is happening when parsing the json? Could you attach a debugger and put a breakpoint there? Are you using LMA (LocalMultiplayerAgent) or is this from PlayFab servers?

This is from PlayFab servers, and that is indeed the OnGSDKReadyForPlayers event.

nassosterz-ms commented 1 year ago

Are you aware of this: LocalMultiplayerAgent? We use it a lot to debug such as issues and it would be very helpful in this case as I have never reproed such a behavior!

As an alternative, a first step to debug this would be to inspect the value of ResponseJson in the DecodeHeartbeatResponse method. You could add a logger of ResponseJson before: FJsonSerializer::Deserialize(Reader, HeartbeatResponseJson) and see the value. That might tell us something. As an example, I am seeing now running a sample game with GSDK that ReponseJson is: {"currentGameState":"Active","nextHeartbeatIntervalMs":1000,"operation":"Continue"}

Malan-Tai commented 1 year ago

Here are my logs. Also note that I added the responseJson string in the error log in DecodeHeartbeatResponse like so : UE_LOG(LogPlayFabGSDK, Error, TEXT("Failed to parse heartbeat : %s"), *ResponseJson);, and they all seem to be empty. I guess, from the LogPlayFabGSDK: Error: Failed to deserialize heartbeat json response. Response: lines in @looterz's logs, that it is also the case for them.

GSDK_output_638224237533150000.txt

Also, these come from the LMA. Is there a way to connect a client to a game server locally running through LMA ?

Malan-Tai commented 1 year ago

Although, as I said, I'm working on UE4.25, and I've been reading the other issues in this repo, and it seems my issue is very similar to the one mentioned in this comment.

nassosterz-ms commented 1 year ago

Thank you @Malan-Tai . Unfortunately I never got my hands working in UE 4.25 - just read the thread you attached and it looks like following what folks did there might be your best shot.

Yes, you can connect clients to a game server running through LMA, nothing is different than how you would connect them to a server running on PlayFab.

nassosterz-ms commented 1 year ago

@looterz did you end up trying the Local Multiplayer Agent tool? Is there any update on this issue from your side?

nassosterz-ms commented 1 year ago

Closing due to inactivity, please feel free to reopen the issue if you are still facing trouble setting up the GSDK with UE!