-
Book Overview & Buying
-
Table Of Contents
-
Feedback & Rating

Game Development Projects with Unreal Engine
By :

Consider a situation where you want to be able to pause your game. All the logic and implementation required to be able to pause the game will be placed inside a single class. This class will be responsible for handling the game flow when a player enters the game. The game flow can be any action or a set of actions occurring in the game. For example, game pause, play, and restart are considered simple game flow actions. Similarly, in the case of a multiplayer game, we require all the network-related gameplay logic to be placed together. This is exactly what the Game Mode class is there for.
Game Mode is a class that drives the game logic and imposes game-related rules on players. It essentially contains information about the current game being played, including gameplay variables and events, which are mentioned later on in this chapter. Game Mode can hold all the managers of the gameplay objects, it's a singleton class, and is directly accessible by any object or abstract class present in the game.
As with all the other classes, the Game Mode class can be extended in Blueprints or C++. This can be done to include extra functionality and logic that may be required to keep players updated about what's happening inside the game.
Let's go over some example game logic that goes inside the Game Mode class:
In the next section, we will look at the default classes provided by Game Mode.
In addition to itself, Game Mode uses several classes to implement game logic. It allows you to specify classes for its following defaults:
DefaultPawn
class, the Spectator Pawn Class specifies the pawn responsible for spectating the game.You can either use the default classes as is, or you can specify your own for custom implementation and behavior. These classes will work in conjunction with Game Mode and will automatically run without being placed inside the world.
In terms of a multiplayer game, when many players enter the game, it becomes essential to handle logic to allow their entry into the game, maintain their state, as well as to allow them to view other players' states and handle their interactions.
Game Mode provides you with several events that can be overridden to handle such multiplayer gameplay logic. The following events are especially useful for networking features and abilities (which they are mostly used for):
On Post Log In
: This event is called after the player is logged into the game successfully. From this point onward, it is safe to call replicated logic (used for networking in multiplayer games) on the Player Controller class.Handle Starting New Player
: This event is called after the On Post Log In
event and can be used to define what happens to the newly entered player. By default, it creates a pawn for the newly connected player. SpawnDefaultPawnAtTransform
: This event triggers the actual pawn spawning within the game. Newly connected players can be spawned at particular transforms or at preset player start positions placed within the level (which can be added by Dragging and Dropping the Player Start from the Models Window into the World).On Logout
: This event is called when a player leaves the game or is destroyed. On Restart Player
: This event is called to respawn the player. Similar to SpawnDefaultPawnAtTransform
, the player can be respawned at specific transforms or pre-specified locations (using the player start position).The Game Mode class is not replicated to any clients or joined players. Its scope is only limited to the server where it is spawned. Essentially, the client-server model dictates that the clients only act as inputs within the game that is being played on the server. Therefore, the gameplay logic should not exist for the clients, but only for the server.
From version 4.14 onward, Epic introduced the AGameModeBase
class, which acts as the parent class for all Game Mode classes. It is essentially a simplified version of the AGameMode
class.
However, the Game Mode class contains some additional functionality that is better suited for Multiplayer Shooter type games as it implements the Match State concept. By default, the Game Mode Base is included in new template-based projects.
Game Mode also contains a State Machine that handles and keeps track of the player's state.