State machines
In life, as well as game development, state machines (or Finite State Machines (FSM) as they are more commonly called) are a core component for day-to-day running. At a basic level, they tell us exactly what we are doing right now, what we were doing previously, and what we can do next.
They are commonly used for:
Menu systems
Game-level transitions
AI/Behaviors
We can implement these within games in various ways, from the very basic (and generally hard to manage) to a more ordered system and beyond with full state managers.
A basic state machine is like a flowchart and looks something like the following diagram:
Defining states
In all implementations, we start with a collection of states: these define both what conditions/states are in the game and what we do when that state changes.
These states describe both what can happen when that state is active and what other potential states could result in an action from the current state. If we take the example from UnityGems, which describes...