Skip to content

A high performance, editable terrain system for Godot 4.

License

Notifications You must be signed in to change notification settings

tcoxon/Terrain3D

 
 

Repository files navigation

Terrain3D

A high performance, editable terrain system for Godot 4, written in C++.

Features

  • Written in C++ as a GDExtension plugin, which works with official engine builds
  • Can be accessed by GDScript, C#, and any language Godot supports
  • Geometric Clipmap Mesh Terrain, as used in The Witcher 3. See System Design
  • Up to 16k x 16k in 1k regions (imagine multiple islands without paying for 16k^2 vram)
  • Up to 10 Levels of Detail (LODs)
  • Up to 32 texture sets using albedo, normal, roughness, height
  • Sculpting, texture painting, texture detiling, painting colors and wetness, undo/redo
  • Supports importing heightmaps from HTerrain, WorldMachine, Unity, Unreal and any tool that can export a heightmap (raw/r16/exr/+). See importing

See the Wiki for project status, design, and usage.

Requirements

  • Supports Godot 4.1+. 4.0 is possible.
  • Supports Windows, Linux, and macOS. Other platforms pending.

Installation & Setup

Run the demo

  1. Download the latest release and extract the files, or build the plugin from source.
  2. Run Godot, using the console executable so you can see error messages.
  3. In the project manager, import the demo project and open it. Allow Godot to restart.
  4. In Project Settings / Plugins, ensure that Terrain3D is enabled.
  5. Select Project / Reload Current Project to restart once more.
  6. If the demo scene doesn't open automatically, open demo/Demo.tscn. You should see a terrain. Run the scene.

Install Terrain3D in your own project

  1. Download the latest release and extract the files, or build the plugin from source.
  2. Copy addons/terrain_3d to your project folder as addons/terrain_3d.
  3. Run Godot, using the console executable so you can see error messages. Restart when it prompts.
  4. In Project Settings / Plugins, ensure that Terrain3D is enabled.
  5. Select Project / Reload Current Project to restart once more.
  6. Create or open a 3D scene and add a new Terrain3D node.
  7. Select Terrain3D in the scene tree. In the inspector, click the down arrow to the right of the storage resource and save it as a binary .res file. This is optional, but highly recommended. Otherwise it will save terrain data as text in the current scene file. The other resources can be left as is or saved as text .tres. These external files can be shared with other scenes.
  8. Read the Wiki to learn how to properly set up your textures, import data and more.

Getting Support

  1. Most questions have already been addressed in the Wiki, especially Troubleshooting and Setting Up Textures.

  2. For questions or technical issues, join the Tokisan discord server and look for the #terrain-help channel.

  3. For technical issues or bug reports, search through the issues to ensure it hasn't already been reported, then create a new one. Use discord for questions.

Credit

Developed for the Godot community by:

Cory Petkovsek, Tokisan Games
Roope Palmroos, Outobugi Games

And other contributors displayed on the right of the github page and in AUTHORS.md.

Geometry clipmap mesh code created by Mike J. Savage. Blog and repository code released under the MIT license per email communication with Mike.

Contributing

We need your help to make Terrain3D the best terrain plugin for Godot 4. Please see CONTRIBUTING.md if you would like to help.

License

This plugin has been released under the MIT License.

About

A high performance, editable terrain system for Godot 4.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 65.4%
  • GDScript 20.3%
  • Shell 5.7%
  • GLSL 5.2%
  • PowerShell 1.0%
  • C 0.9%
  • Other 1.5%