Initialize the GenServer State

Learn how to initialize the GenServer state.

We'll cover the following...

GenServer in the game.ex module

Until now, we’ve relied directly on the built-in start_link/3 function from GenServer to start new processes. However, we can do better.

When we run GenServer.start_link(Game, <initial state>), the idea that we’re starting a new game process is buried in the arguments. It would be much clearer if we could bring the Game module out front by writing Game.start_link(<initial state>).

To do this, we follow the GenServer pattern and define a public function that wraps a GenServer module function. This module function then triggers a callback.

Let’s start with a public start_link/1 function in the Game module and have it wrap the GenServer.start_link/3 function. One player will start the game and the second will join later. Let’s have ...