During the last two months, I spent about 2 – 3 weeks working on optimizations in order to reduce the world’s loading time. The aim is to reduce the time required for blocks to pop in the world, which shouldn’t be mistaken with the FPS (frame per seconds).
Since we continuously add new content in the game, this optimization work needs to be done regularly to keep the game playable.
Before diving into numbers here are the key steps of our engine, that we optimized, and their definition:
- Generation: A logical block model of the world is generated
- Sun: All the areas reachable by a vertical sun are computed
- Light: The lighting of each block is computed, using the sun and light blocks information
- Geometry: The final geometry, which will be sent to the graphic card, is computed
The last measurement (loading 80m) is easier to understand. It represents the time really needed by the game to fully load, at the maximal view distance. The sum of the engine’s key steps can be greater than this time, because it is parallelized.
As you can see, a first set of optimizations was already included in the multiplayer version, and more have been implemented since. Globally we already divided the loading time by two!
Note: These measurements have been done on an i7-4820K @ 3.7GHz with 32 GB RAM and a NVIDIA GeForce GTX 960 using the universe seed 1.