Any application/game has some activities that are considered the core activities.
In gaming industry, this is called as the core-loop. We will use the nomenclature for any application that has some core activity that the user needs to perform.
The core-loop is where the user is expected to spend most time. Any other activity is supposed to be supplementary in nature.
There are 3 formats for the multiplayer core-loop implementations:
- local core-loop (for async multiplayer games)
- turn-based core-loop
- real-time core-loop
1. Local core-loop:
In this model, the main core-loop runs on the client without any other requirements. This is very similar to a single-player model where the player plays the core-loop as though he's the only player or against a simulated AI running locally.
The AI can be tweaked based on the attributes from the opponent whom the AI represents.
At the end of the loop, the game generates some scores that are used as a challenge to the opponent.
In this model, the multiplayer functionality is outside the core-loop.
2. Turn-based core-loop:
In this format, each player in the session takes turns and the actions that each player can perform may depend on the actions of the previous player as it may modify the global state of the game - say, picking up a card from the deck which then becomes unavailable for the next player. Essentially, the global state becomes a shared resource among all players.
This continues throughout the game session with each player taking turns.
3. Real-time core-loop:
This format is generally used for real-time strategy and role-playing games where the virtual environment in the game session keeps getting updated continuously. The objects in this environment may not have definite fixed positions.