3d Voxel engine C#

 

This is a project currently in progress. I hope to finish it this year. It is a personal dream I have since I was 12 years old to build a certain RTS game.

Right now the engine features:

– Weather system: clouds generate and move slowly across the landscape.

-Year cycle: The landscape changes with seasons. Trees, ground and clouds change textures suiting their season. Each day the sun goes up and down (representing one season).

A nice extra to mention are the shadows of tree tops moving across the ground at sunrise or sundown.

– Fog of War system: works together with the weather system, where units go clouds dissipate.

(FoW is read from alpha textures, using pixel coordinated maps translated to world coordinates)

-Flowing water: water is measured per voxel, and treated in a seperated thread (multi-threaded).

The user is able to dig out an empty lake. When connecting the empty lake through a ditch with another filled lake will cause both lakes to merge. Water flows through the ditch becoming a river, and balancing out the water level.

-3d Pathfinding: Units can walk across terrain. Also using a weight per voxel system, meaning units find the best path to walk taking trees, water and any other form of voxel in consideration. Units can swim to their destination!

-3d automatic procedural generated content system: Trees, Buildings any object you can find on terrain can be randomly generated. All 3d meshes (3d shapes) are merged (including texture atlasses) to single meshes after generation to maintain maximum performance.

-ui system in openGL, probably going to be changed later.

-landscape : Created a unique algorithm to shape the landscape. The other algorithms like Marching, Doo-Sabin, Catmull Clark turned out to be less suitable.

-150 draw calls per area viewing (6 x 6 x 2 chunks, 16 x 16 x 16 voxels per chunk). Meaning this is even suitable for mobile devices!!

 

The application is written in C# in Unity3D, Multiplayer component with Photon.

Role: everything

Development time: 3 months.

Team: 1 member

Year: 2015