In life, as well as in game development, state machines (or Finite State Machines 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 the following:
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: