godot_voxel/README.md
2017-04-01 20:34:44 +02:00

2.0 KiB

Voxel Tools for Godot

C++ module for creating cube-esque voxel worlds in Godot Engine.

Example screenshot

Setup

Install the contents of the repo in a folder under "modules/", named "voxel".

IMPORTANT: if you clone the repo, Git will create the folder as the repo name, "godot_voxel". But because Godot SCons scripts consider the folder name as the module's name, it will generate wrong function calls, so you must rename the folder "voxel".

Features

  • Fully editable terrain (see demo: https://github.com/Zylann/voxelgame)
  • Compact voxel storage using 8-bit channels like images
  • Data segmentation using blocks of 16x16x16 voxels (so the world can be theoretically infinite)
  • Calculates meshes based on grid of voxels. Only visible faces are generated.
  • Vertex-based ambient occlusion on voxel edges (comes for free at the cost of slower mesh generation)
  • Mesh-based physics based on Godot (high generation cost but works at decent speed)
  • Simple interface for deferred terrain generators (block by block)
  • Optional profiling information

Ideas TODO

  • Automatic terrain generation (currently not automatic)
  • Voxels can be of any shape, not just cubes (not fully accessible yet but present in code)
  • VoxelStreamer node to put on players so terrains know which voxels to load around them
  • Support internal threading
  • Support saving and loading through helper classes
  • Promote classes to Node and Resource for better editor experience
  • Helpers for structure generation (anything that is bigger than one voxel)
  • Convert any imported meshes to Voxel-ready meshes (to comply with a few optimizations)
  • Generate Mesh resources from voxels so they can be used in the editor as MeshInstances
  • Import resources from other editors like Magicka-voxel
  • Volumetric grid algorithms: fluids, pathfinding, lighting...
  • Smooth meshes with the Transvoxel algorithm
  • Seam-free level of detail (LOD)
  • Ability to bake terrains if we don't want them to be editable in game