State Flow

App Logic

AppLogic StateInGameOnEnter → ShowGameOnExit → HideGameLeavingGameOnFadeOutFinished → RemoveExistingGame, SetupGameSceneLeavingMenuOnEnter → FadeToBlackLoadingSaveFileOnEnter → StartLoadingSaveFileMainMenuOnEnter → SetupGameScene, ShowMainMenuSplashScreenOnEnter → ShowSplashScreenOnSplashScreenSkipped() → HideSplashScreenEndGameFadeOutFinishedFadeOutFinishedFadeOutFinishedFadeOutFinishedSaveFileLoadedLoadGameNewGameFadeOutFinished
AppLogic StateInGameOnEnter → ShowGameOnExit → HideGameLeavingGameOnFadeOutFinished → RemoveExistingGame, SetupGameSceneLeavingMenuOnEnter → FadeToBlackLoadingSaveFileOnEnter → StartLoadingSaveFileMainMenuOnEnter → SetupGameScene, ShowMainMenuSplashScreenOnEnter → ShowSplashScreenOnSplashScreenSkipped() → HideSplashScreenEndGameFadeOutFinishedFadeOutFinishedFadeOutFinishedFadeOutFinishedSaveFileLoadedLoadGameNewGameFadeOutFinished

Game Logic

GameLogic StateOnIsMouseCaptured() → CaptureMouseOnIsPaused() → SetPauseModePausedOnEnter → ShowPauseMenuOnExit → ExitPauseMenuLostOnEnter → ShowLostScreenMenuBackdropPlayingOnEnter → StartGameQuitRestartingGameResumingOnExit → HidePauseMenuWonOnEnter → ShowWonScreenSavingOnEnter → ShowPauseSaveOverlay, StartSavingOnExit → HidePauseSaveOverlayGoToMainMenuStartInitializeStartGoToMainMenuPauseButtonPressedSaveRequestedSaveCompletedEndGamePauseButtonPressedEndGameEndGamePauseMenuTransitionedPauseButtonPressedGoToMainMenu
GameLogic StateOnIsMouseCaptured() → CaptureMouseOnIsPaused() → SetPauseModePausedOnEnter → ShowPauseMenuOnExit → ExitPauseMenuLostOnEnter → ShowLostScreenMenuBackdropPlayingOnEnter → StartGameQuitRestartingGameResumingOnExit → HidePauseMenuWonOnEnter → ShowWonScreenSavingOnEnter → ShowPauseSaveOverlay, StartSavingOnExit → HidePauseSaveOverlayGoToMainMenuStartInitializeStartGoToMainMenuPauseButtonPressedSaveRequestedSaveCompletedEndGamePauseButtonPressedEndGameEndGamePauseMenuTransitionedPauseButtonPressedGoToMainMenu

In Game Audio Logic

InGameAudioLogic StateOnGameEnded() → PlayPlayerDied, StopGameMusicOnGameEntered() → PlayGameMusicOnJumped() → PlayJumpOnMainMenuEntered() → PlayMainMenuMusic
InGameAudioLogic StateOnGameEnded() → PlayPlayerDied, StopGameMusicOnGameEntered() → PlayGameMusicOnJumped() → PlayJumpOnMainMenuEntered() → PlayMainMenuMusic

Player Camera Logic

PlayerCameraLogic StateOnPhysicsTicked → CameraLocalPositionChanged, CameraOffsetChanged, GimbalRotationChanged, GlobalTransformChangedInputDisabledInputEnabledPhysicsTickedTargetOffsetChangedTargetPositionChangedEnableInputDisableInputJoyPadInputOccurredMouseInputOccurred
PlayerCameraLogic StateOnPhysicsTicked → CameraLocalPositionChanged, CameraOffsetChanged, GimbalRotationChanged, GlobalTransformChangedInputDisabledInputEnabledPhysicsTickedTargetOffsetChangedTargetPositionChangedEnableInputDisableInputJoyPadInputOccurredMouseInputOccurred

Player Logic

PlayerLogic StateAliveOnPhysicsTick → MovementComputedOnPushed → VelocityChangedAirborneGroundedOnJump → VelocityChangedDeadDisabledOnEnter → IdleFallingOnEnter → FallJumpingOnEnter → JumpOnJump → VelocityChangedLiftoffOnEnter → JumpIdleOnEnter → IdleMovingOnEnter → MoveStartedFallingHitFloorHitFloorMovedPhysicsTickPushedKilledEnableLeftFloorJumpLeftFloorStartedMovingHorizontallyStoppedMovingHorizontallyJump
PlayerLogic StateAliveOnPhysicsTick → MovementComputedOnPushed → VelocityChangedAirborneGroundedOnJump → VelocityChangedDeadDisabledOnEnter → IdleFallingOnEnter → FallJumpingOnEnter → JumpOnJump → VelocityChangedLiftoffOnEnter → JumpIdleOnEnter → IdleMovingOnEnter → MoveStartedFallingHitFloorHitFloorMovedPhysicsTickPushedKilledEnableLeftFloorJumpLeftFloorStartedMovingHorizontallyStoppedMovingHorizontallyJump