This document will outline how Minecraft runs and simulates its world. It will refer to various articles on the official Minecraft Wiki for more details. This wiki not only aims at new players but also at the significant technical community of Minecraft. Therefore, it provides accurate information about the gameplay but also about how the game engine works.
In a Minecraft world, objects have different representations to match their dynamism and complexity.
- Blocks are simple, slowly evolving and very light computationally
- Entities are complex, constantly evolving and more heavy
- Block Entities (AKA Tile Entities) are a hybrid approach to allow for more complex blocks
A Minecraft world is pseudo infinite (limited by integer and floating point limitations more or less). Therefore, loading is not trivial. The world is organized in chunks, some of which are loaded at some point in time. A good approximation is to consider that chunks are loaded when they are close enough to a player (the distance is a parameter of the server).
A single Minecraft server contains multiple worlds or dimensions.
The simulation evolves with constant time steps of 50 ms. Each of those updates is called a 'tick'.
Minecraft is a multiplayer game and therefore has its server and clients. The client acts as an interface between the player and the world. The approach is a relaxed authoritarian server in the sense that most things are totally controlled by the server while clients follow (and anticipate to some extend) their evolution but player movement and interactions are mostly decided by the player's client and only checked by the server to prevent abuse.
In this setting, there is no strong synchronization between clients and server (in contrast with Deterministic Lockstep approaches).