This is update is primarily just the addition of conveyers and the video below shows them in use as well as showing off the saving/loading, flying load speed, and more.
Saving and Loading /
Chunks and entities will now be saved to disk when they go out of the render distance or when the game is closed. The file names include the chunk positions so when I need to load data at a specific chunk location I can do a file lookup for what the filename should be. Disk read and writes are multithreaded which help with reducing hitching. The data uses Run-length encoding to reduce load times and file size. On average my chunk file sizes for 65k blocks are around 1-2kb.
Items and Trees /
Items are what the blocks turn into when you break them. They currently collide with other blocks but not other items. I have also added trees and imgui recently, the latter of which has helped a lot with testing and general UI purposes.
Mind the Gap /
It has been a while since I updated so here are some of the things I have been working on. I added a simple entity system, collisions, 3D world rotations and translations based on parent/child entities, imgui, inventory system, file system, and more.
Lighting and Procedural Generation /
I have made some significant changes to lighting and procedural generation. There is now a 24 hour game period where the sun and moon do a full rotation around the world. The skyboxes lerp between each other for a starry night or a lightly cloudy day.
Below is a quick video showing the chunk generation. The debug drawing slows the generation down considerably. The following are color definitions for the chunk states.
Red: Unloaded
Green: BlocksLoading
Blue: BlocksLoaded
Yellow: VertexLoading
Purple: VertexLoaded
White: Uploaded
Raycast and Ambient Occlusion /
The first gameplay elements are now added! I guess this is where it turns from engine to game+engine. Now you can remove and place blocks. I have also added ambient occlusion and have been tuning some lighting.
Speed /
I recently made significant improvements to the chunk generation speed and made a video flying through the world. In the beginning, I show the chunk debug colors that indicate what state each chunk is in.
Red: Unloaded
Green: BlocksLoading
Blue: BlocksLoaded
Yellow: VertexLoading
Purple: VertexLoaded
White: Uploaded
The Beginning /
I hope for this to be progress updates on the states of the game and problems I am working on. I don’t think there will be any consistency with updates but just whenever I feel there is something interesting or significant to share. Current state of the game has terrain generation and lighting working. The past few months I have started from scratch and am going full speed. Stay tuned for future updates.