Go to file
Marc Gilleron 488ca3e6fd Fixed Vector3i != operator 2017-08-28 01:44:12 +02:00
screenshots Added screenshot and feature list 2016-05-04 14:52:41 +02:00
.gitignore Added project: first working prototype, but lots of TODOs 2016-05-01 15:00:02 +02:00
LICENSE.md Added license 2016-07-28 00:21:21 +02:00
README.md Update README about smooth terrain 2017-04-07 23:44:26 +02:00
SCsub Removed useless line in SCsub 2016-05-05 21:09:13 +02:00
config.py Added project: first working prototype, but lots of TODOs 2016-05-01 15:00:02 +02:00
cube_tables.cpp Moved moore neighboring to cube tables 2017-08-20 15:37:07 +02:00
cube_tables.h Moved moore neighboring to cube tables 2017-08-20 15:37:07 +02:00
register_types.cpp Added smooth voxels (untextured at the moment) 2017-04-06 23:44:11 +02:00
register_types.h Added project: first working prototype, but lots of TODOs 2016-05-01 15:00:02 +02:00
transvoxel_tables.cpp Added smooth voxels (untextured at the moment) 2017-04-06 23:44:11 +02:00
vector3i.h Fixed Vector3i != operator 2017-08-28 01:44:12 +02:00
voxel.cpp Update to latest Godot 2017-08-27 15:52:14 +02:00
voxel.h Got rid of SurfaceTool in the cubic mesher, moved cube tables in their own file, tweaked their winding 2017-08-19 21:10:31 +02:00
voxel_block.cpp Use VisualServer directly for mesh instances 2017-08-20 18:37:08 +02:00
voxel_block.h Use VisualServer directly for mesh instances 2017-08-20 18:37:08 +02:00
voxel_buffer.cpp Clang-format 2017-08-13 01:19:39 +02:00
voxel_buffer.h Got rid of SurfaceTool in the cubic mesher, moved cube tables in their own file, tweaked their winding 2017-08-19 21:10:31 +02:00
voxel_library.cpp Removed useless variable 2017-08-15 21:37:08 +02:00
voxel_library.h Removed useless variable 2017-08-15 21:37:08 +02:00
voxel_map.cpp Fix wrong block size mask value 2017-08-20 17:45:44 +02:00
voxel_map.h Moved VoxelBlock to its own file 2017-08-20 15:48:55 +02:00
voxel_mesher.cpp Got rid of SurfaceTool in the cubic mesher, moved cube tables in their own file, tweaked their winding 2017-08-19 21:10:31 +02:00
voxel_mesher.h Got rid of SurfaceTool in the cubic mesher, moved cube tables in their own file, tweaked their winding 2017-08-19 21:10:31 +02:00
voxel_mesher_smooth.cpp Don't parse smooth voxels if the buffer is uniform 2017-08-20 19:15:36 +02:00
voxel_mesher_smooth.h Clang-format 2017-08-13 01:19:39 +02:00
voxel_provider.cpp Clang-format 2017-08-13 01:19:39 +02:00
voxel_provider.h Expose things to the editor, first iteration, might be buggy 2017-08-15 02:24:52 +02:00
voxel_provider_test.cpp Block size is no longer a constant 2017-08-20 15:17:54 +02:00
voxel_provider_test.h Clang-format 2017-08-13 01:19:39 +02:00
voxel_raycast.cpp Clang-format 2017-08-13 01:19:39 +02:00
voxel_raycast.h Clang-format 2017-08-13 01:19:39 +02:00
voxel_terrain.cpp Update to latest Godot 2017-08-27 15:52:14 +02:00
voxel_terrain.h Use VisualServer directly for mesh instances 2017-08-20 18:37:08 +02:00
zprofiling.cpp Clang-format 2017-08-13 01:19:39 +02:00
zprofiling.h Clang-format 2017-08-13 01:19:39 +02:00

README.md

Voxel Tools for Godot

C++ module for creating volumetric 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)
  • Support for minecraft-style terrain using voxel types
  • Support for smooth terrain using Transvoxel http://transvoxel.org/
  • Vertex-based ambient occlusion on voxel edges (only cubic mode, 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)
  • Dynamic voxel loading (finite or infinite maps)
  • 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...
  • Seam-free level of detail (LOD)
  • Ability to bake terrains if we don't want them to be editable in game
  • Migrate to DLScript (needs reworks to keep low overhead, but that would be really, really nice)