Download

PIE Shift F1 Eject Breaks Reference to GameState But Can't Reproduce Consistently

Hello,

If playing a game in editor, hitting Shift F1 and Eject from pawn, upon Possessing the pawn and clicking in the editor to resume play, if I overlap two out of the many objects checking for overlaps, the two object appears to throw this error (it’s not always the same two, please continue reading).

[2019.11.01-20.55.44:564][686]LogLoad: Took 0.598263 seconds to LoadMap(/Game/Levels/Dev/TrackLevels/DemoTrack/UEDPIE_0_LVLTrackTheStarter)
[2019.11.01-20.55.47:527][775]LogSlate: FSceneViewport::OnFocusLost() reason 2
[2019.11.01-20.58.36:408][838]LogSlate: FSceneViewport::OnFocusLost() reason 2

[2019.11.01-20.59.27:776][379]LogScript: Warning: Accessed None trying to read property GSRaceGameState
BPCheckpointConcept_C /Game/Levels/Dev/TrackLevels/DemoTrack/UEDPIE_0_LVLTrackTheStarter.LVLTrackTheStarter:PersistentLevel.BPCheckpointConcep25FinishLine
Function /Game/Blueprints/1Dev/Checkpoints/BPCheckpointConcept.BPCheckpointConcept_C:ExecuteUbergraph_BPCheckpointConcept:02FF
[2019.11.01-20.59.27:777][379]PIE: Error: Blueprint Runtime Error: “Accessed None trying to read property GSRaceGameState”. Blueprint: BPCheckpointConcept Function: Execute Ubergraph BPCheckpoint Concept Graph: EventGraph Node: Level Checkpoint Overlap
[2019.11.01-20.59.33:242][543]LogSlate: FSceneViewport::OnFocusLost() reason 2

Reason 2 for OnFocustLost() in the sourcecode appears to be: /** Focus was changed because someone asked the application to change it. */
SetDirectly,

The setup:
I have a racing game with checkpoints. The Checkpoint objects are a simple blueprint using a bottom pivoted cylinder with an elongated thin box as a child and not visible being used as an overlapping check against pawns. There are 29 of these in a level. Upon overlapping with a type of Pawn, it reports to a GameStateBase type (GSBasicRaceState) which is stored in a variable within the Checkpoint BP as GSRaceGameState.

The checkpoints affected appear to be those (one passed before, and one expected to pass next) stored as object references in a structure which is stored in a PlayerState type. There are only ever two stored in this struct at any one time during the game. As you can see, it’s losing the reference AFTER returning from Shift F1 Eject. However, only the two stored in a struct, in the PlayerState lose the reference to the GameStateBase class for the rest of the PIE. I’m thinking that when F1 is hit to break play (not sure if eject plays a role) that the PlayerState is somehow affected because of leaving and repossessing the pawn, which would make sense that the two stored BP Checkpoint references are borked forever until PIE is shut down. If you look closely, you can see the error is very similarly thrown twice within 1/1000th of a second from each other. :776 and :777. This tells me it has to do with PlayerState being trashed and reinstantiating somehow after I resume play.

I cannot seem to consistently reproduce this issue. Here is the Checkpoint Blueprint: It’s about as simple as you can get. I was hoping to find someone who has had anything similar happen.

Thanks.