In this case, my pursuit in crafting a game.
I won't bore you with the entire history, but to say that this was a long time in coming. Nearly a decade of time, starting with my dabbling in Python to becoming a full fledged C++ programmer capable of building something from scratch.
Without further adieu, I would like to introduce Atomata, an editable voxel engine.
So, Minecraft. But with arbitrary colors? |
The colors represent the level of octree that makes up those blocks. White being one block leafs. Golden yellow being 2x2x2 block leafs. Purple 4x4x4 and etc. So, wherever there are volumes with the same block type, they can be represented by a larger leaf of the corresponding size which only consumes the memory of a single block, but still represents that larger volume. (This also gives opportunities for optimizing processor time significantly, but that is for another time.)
The quick among you may note that if this was a more natural terrain, the surface would all be single block leaves, thus saving nothing in memory. But then you would be forgetting that this is a volume and not just a surface. Those larger leafs would find themselves underneath the ground and in the air above.
In the video presentation below, I'm testing with a 10243 block chunk. To represent this directly, would take well over a gigabyte of memory, but with an octree, it's a tiny fraction of that size. Even in the general case of a natural terrain, it's predicted to only take a few megabytes for this same volume.
All future videos, like the one above, will be posted on the Atomata YouTube channel.
Now, I only just started this project on December 14th (the fall semester had just finished). So, it clearly needs a lot of work. For one, it regenerates the entire mesh whenever a block is added or removed, which starts to stutter with each edit when the number of white blocks increases, unacceptable. Below is a list of things that need to be worked on, but not necessarily in any order. This is what I'm sticking with, no feature creep please.
- Optimize Mesh Generation
- LOD
- Infinite World
- Collision Detection
- GUI
- Textures
- Network Interface
- Modularity/Plugins
- Increased Resolution
No comments:
Post a Comment