Quick Start

Like what you're seeing?

Support us as a GitHub Sponsor and get instant access to all our assets, exclusive tools and assets, escalated support and issue tracking and our gratitude. These articles are made possible by our GitHub Sponsors ... become a sponsor today!

Introduction

This article will in-a-nut-shell key features and concepts of the Unreal engine to help developers get a quick understanding of the engine's fundamental features. This is not meant to be a deep dive on anything just a bullet list with notes of things you should understand as an Unreal Developer.

Game Instance

A class that acts as a manager for the game's global state and persistent data. You can create your own Game Instance by creating a new C++ class or Blueprint derived from GameInstance.

If you use Heathen's Toolkit for Steamworks you would already have similar but derived from SteamGameInstance.

Unlike other objects this object doesn't unload or reload, it is persistent at all times and can be "got" at all times using either Get Game Instance or if your using Heathen's Toolkit for Steamworks ... Get Steam Game Instnace. this makes it a handy place for global events, error dialogs, system settings, session data that needs to persist over level loads, etc.

As this is a global, starts early and persists thing, its also handy for managing your games subsystems, player inventory for example.

  • Always available, part of the game client

  • Global State Management

  • Persistent Data

  • Subsystem Integration

  • C++ or Blueprint

Game Mode

As its name suggests the game defines the nature of a game mode i.e. capture the flag, king of the hill, etc. Every level defines the Game Mode applicable to it and its the Game Mode that is responsible for enforcing the enforcing game rules, selecting player spawning, defines the default classes used for things like the player controller.

See your World Settings in your level to set the current mode and its defaults

The Game Mode is the "authority" of the rules the game is running under at the moment and as such is only available on the server. If you a single-player game then your client is also a server, if you're a P2P host e.g. running as a Listen Server ... then you're a server ... but in a traditional Dedicated Server multiplayer game no client will have any access to Game Mode at all.

  • Only available on the server

  • Defines Default Classes for controllers, pawns etc.

  • Handles player spawning rules

  • Manages Game State

  • Handles Level Transition

  • C++ or Blueprint

Game State

The current state of the game, differs from Game Mode in that this is replicated to all clients. Its generally used to carry info relevant to all clients for example a score, status, etc. as well as providing reference to active Player States.

  • Always available, but is owned (authority) by the server

  • Replicates (syncs) data from the server for the game

  • Used to manage server data that all clients should see (score, timers, status, etc)