Skip to content

Study on the management of large quantity of rasterized voxels, to make a minecraft-like game, C++ and OpenGL.

Notifications You must be signed in to change notification settings

StormCreeper/Voxel_Game

Repository files navigation

Yet another try at re-creating Minecraft

I always loved Minecraft, and the way it works fascinates me. To me, it is the game you can be the most imaginative, using voxels as base blocks to create anything.

So naturally, I tried several times to do a minecraft clone to understand the inner workings of the game, my first tries were about the procedural generation, this one is about the back-end: mesh and chunk loading optimisations, block management and more.

I'm trying to make the fastest, most reliable, and most extensible voxel chunk system I can, so I can then be able to build a game on top of it.

Features

  • Chunk system, with loading, unloading, serializing and support for procedural generation
  • Basic frustum culling of the chunks (only in 2D for the moment)
  • Block descriptions manager, to manage the block textures in a kind of palette

ToDo

  • Project the 3D frustum onto the 2D plane to make it complete
  • Make the block management system load blocks from description files
  • Change the textures from an atlas to an array of textures to avoid texture bleeding
  • Better procedural generation (not the priority)
  • Block placing and destruction
  • Collisions and player physics
  • Change a vertex representation in GPU memory. Goal : from 8x32 bit floats to a single 32bit integer
  • Add ImGui for debug
  • Make an actual UI system
  • Tick system (20 ticks per second)
  • Make the chunk jobs queue update only when the player move a certain amount
  • Make a ChunkDealer class, that don't free the chunks memory, but resets them and re-use them

About

Study on the management of large quantity of rasterized voxels, to make a minecraft-like game, C++ and OpenGL.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages