X157 Dev Notes

One simulant attempts to share insight with others.

ShooterCore Game Logic Dissection

ShooterCore defines a lot more functionality than it shows off. In addition to the one map it provides, it is also used by ShooterMaps to showcase more maps and experiences.

In this high level game logic dissection we’ll take a look at what makes the game do what it does. This isn’t going to get into details of animation, menus, music or other aspects of the game. This is purely focused on the logic.

Experience: B_ShooterGame_Elimination

The L_ShooterGym map activates the B_ShooterGame_Elimination experience.

Pawn Data: HeroData_ShooterGame

Pawn Ability Set: AbilitySet_ShooterHero

Adds default ShooterCore hero abilities to the pawn, maps which abilities should activate for which input tags.


Action Set: LAS_ShooterGame_SharedInput

Adds input bindings and key mappings pertinent to ShooterCore (e.g. show leaderboard, throw grenade, melee attack, etc)

Action Set: LAS_ShooterGame_StandardComponents

LyraPlayerController injections:

Component Parent Class Tick Group Scope
B_NiagaraNumberPopComponent ULyraNumberPopComponent_NiagaraText During Physics Client
NameplateManagerComponent UControllerComponent During Physics Client

Controller injections: (Player + AI both)

Component Parent Class Tick Group Scope
B_QuickBarComponent ULyraQuickBarComponent During Physics Client + Server

B_Hero_ShooterMannequin injections:

Component Parent Class Tick Group Scope
NameplateSource ULyraQuickBarComponent During Physics Client

Action Set: LAS_ShooterGame_StandardHUD

Slot ID Widget Note
HUD.Slot.EliminationFeed W_EliminationFeed  
HUD.Slot.Equipment W_QuickBar  
HUD.Slot.TopAccolades W_AccoladeHostWidget  
HUD.Slot.Reticle W_WeaponReticleHost  
HUD.Slot.PerfStats.Graph W_PerfStatContainer_GraphOnly  
HUD.Slot.PerfStats.Text W_PerfStatContainer_TextOnly  
HUD.Slot.LeftSideTouchInputs W_OnScreenJoystick_Left  
HUD.Slot.RightSideTouchInputs W_OnScreenJoystick_Right  
HUD.Slot.RightSideTouchInputs W_FireButton DUPLICATE SLOT ID
HUD.Slot.RightSideTouchRegion W_TouchRegion_Right  
HUD.Slot.LeftSideTouchRegion W_TouchRegion_Left  

Action Set: EAS_BasicShooterAccolades

Interestingly this is the only place where injections are made to base Engine code rather than to ModularGameplayActors-derived classes.

This action set is also the only one with an EAS_ prefix rather than LAS_ which I imagine is intended to illustrate that this is intentionally referring to GameStateBase rather than LyraGameStateBase for these particular injections.

GameStateBase injections:

Component Parent Class Tick Group Scope
B_ElimChainProcessor UElimChainProcessor < UGameplayMessageProcessor During Physics Server only
B_ElimStreakProcessor UElimStreakProcessor < UGameplayMessageProcessor During Physics Server only
AssistProcessor (C++) UGameplayMessageProcessor During Physics Server only
B_AccoladeRelay UGameplayMessageProcessor During Physics Client + Server

Experience Ability Sets

LyraPlayerState injections:

Component Parent Class
AbilitySet_Elimination ULyraAbilitySet

Ability Set: AbilitySet_Elimination

Ability Input Tag
GA_ShowLeaderboard_TDM InputTag.Ability.ShowLeaderboard
GA_AutoRespawn  

Experience Component Injection

LyraGameState injections:

Component Parent Class Tick Group Scope
B_TeamDeathMatchScoring B_ShooterGameScoringBase During Physics Client + Server
B_MusicManagerComponent_Elimination B_MusicManagerComponentBase During Physics Client
B_ShooterBotSpawner ULyraBotCreationComponent During Physics Server
B_TeamSetup_TwoTeams ULyraTeamCreationComponent During Physics Server
B_TeamSpawningRules UTDM_PlayerSpawningManagmentComponent Pre Physics Server

Controller injections: (Player + AI both)

Component Parent Class Tick Group Scope
B_PickRandomCharacter ULyraControllerComponent_CharacterParts During Physics Server

Experience Widgets

Slot ID Widget
HUD.Slot.TeamScore W_ScoreWidget_Elimination

Game Logic

Logic from LyraGameState injections

B_TeamSetup_TwoTeams logic

B_TeamSpawningRules logic

B_ShooterBotSpawner logic

B_AI_Controller_LyraShooter logic

B_TeamDeathMatchScoring logic

B_MusicManagerComponent_Elimination logic

Logic from LyraPlayerController injections

B_NiagaraNumberPopComponent logic

Base class ULyraNumberPopComponent

NameplateManagerComponent logic

Logic from Controller injections

B_PickRandomCharacter Logic

This component is injected into all Controllers for both Players and AI.

B_QuickBarComponent logic

Base class ULyraQuickBarComponent

Logic from B_Hero_ShooterMannequin injections

NameplateSource logic

Logic from GameStateBase injections

B_ElimChainProcessor logic

Base class UElimChainProcessor

B_ElimStreakProcessor logic

Base class UElimStreakProcessor

AssistProcessor logic

B_AccoladeRelay logic