Adding Caves to my Micro Voxel Engine (Devlog #3)
▲ 58 r/VoxelGameDev+1 crossposts

Adding Caves to my Micro Voxel Engine (Devlog #3)

Enjoyed implementing caves in my Micro Voxel engine this past week. Nothing too fancy, just stacking a few features on top of each other:
- typical stacked noise functions
- feature generators which deterministically spawn additional voxels following some pattern. Using this for the larger stalagmites. They do a downward and upward fill.
- erosion pass to create random crevices and cutouts.

Still a lot more to do! i like the idea of Cave biomes, and would also like a wider variety of generation types. Large caverns, walkable straight tunnels, cleaner surface caves etc;

At the moment the generation can look quite scrappy in places, but hey ho!

youtu.be
u/MGMishMash — 7 days ago
▲ 102 r/VoxelGameDev+2 crossposts

Voxel Engine #2 - Basic Mechanics, Placement, Lighting Engine

Another 2.5 weeks of dev on my new Voxel Game engine. Lots of iterative improvements to the engine and implementation of the basic core mechanics.

I don’t see these mechanics as being the fundamental basis of the game, but rather just the baseline essential requirements for an interactive sandbox which deeper mechanics can be built on top of.

— Placement System —

I enjoyed working on a placement system last week. The system supports two kinds of placement:

- World Blocks: directly writes voxels to the world grid as part of the terrain. Designed for structures, although no build tooling yet so it’s basically unusable 😅

- World Anchor Entities: certain items spawn entities in the world which support their own mechanics. These entities can either be anchored to the terrain, or to other entities.

I was happy with how anchoring turned out. For terrain, entities must retain a sufficient base attachment, depending on size. Items such as Torches can be freely placed against other entities (e.g trees, fenders posts rocks) and are invalidated if their source anchor is destroyed.

— Lighting System —

Currently supporting a form of Global illumination by implementing a coarse light propagation grid of probes around the player. Each frame propagates light sources through the grid, and applies occlusion while also weighting propagation based on local voxel occupancy.

The video only shows this working for terrain. Entities are supported, but currently having issues with flickering when compositing entities local occupancy volume onto the world grid.
In this case, entities only sample the probes, but the next update should fix this.

Colour propagation is also supported, and emmisive materials will also trivially work. Color transport manipulation will also be possible (e.g surface color reflection and filters (like stained glass), but not yet implemented.

My priority initially was performance. Lighting calculation currently only takes 0.3ms in a 16ms frame.

— Device —

Currently running on Apple M1 Pro between 40-100 FPS. Stable Memory usage around 3.5 GB Shared Memory, with GPU voxel data taking 2.9 GB of that.

Will need to improve memory as the game scales and to support discrete GPUs with lower absolute VRAM, but that will come in time :)

youtu.be
u/MGMishMash — 13 days ago
▲ 96 r/VoxelGameDev+1 crossposts

New large scale Voxel engine in C++ and Metal

One week into development of my new Voxel engine after years of not working on personal projects! Not quite sure where the game will go just yet, but enjoying building the engine :)!

So far, my goal is to achieve a large sense of scale and immersion, and lean into more primitive and exploration driven themes, where traversal of new biomes and terrain requires skill and preparation. (At the very least, hopefully a peaceful and immersive walking simulator)

Current world scale is 16km x 16km x 1km, with four biomes and mountains/canyons. Uses around active 4-5 GB atm with a moderately low 150-200m viewing distance, and not yet particularly well optimized outside of LODs and instancing.

Voxel scale is 0.2m, so lots of memory and perf challenges 😅. The far world background mesh generates a very coarse version of the world.

youtu.be
u/MGMishMash — 26 days ago