C++ World Generators
World generators are a central part of voxel plugin. You have 2 ways to create them:
using C++
using Voxel Graphs (pro only)
Included World Generators
The plugin includes several world generators that can be used in the free version. If you are not familiar with C++, it is highly recommended to use these instead of writing your own generator!
How to use example generators
You can find example maps with the different generators under Examples/Maps/ (check Examples for more info).
The corresponding generators are under Examples/VoxelGraphs.
For example, open Examples/Maps/VoxelExample_Planet_Map.
You should see something like:
Under the generator, you can change its properties like radius, noise strength...
List of included generators
Cave
Large underground cave under some mountains
Cliffs
IQ Noise
Simple IQ noise map
Planet
Small planet example
Ravines
Map with simple 3D noise ravines, could make a fun map for a multiplayer shooter
Ring World
Classic ring world
Creating a new C++ World Generator
Creating the class files
Click Add New/New C++ Class
Choose None
Name it MyWorldGenerator, and click Public
Click Create Class. Visual Studio should open. If not, please refer to the UE4 documentation on creating a C++ class
Implementing the class
You should now have 2 files: MyWorldGenerator.h and MyWorldGenerator.cpp.
In Source/YourProject/YourProject.Build.cs, add the "Voxel" dependency to PublicDependencyModuleNames:
Now, replace the content of MyWorldGenerator.h/.cpp by the code at
For both, make sure to remove the #if 0
and the #endif
. They are here to avoid naming collisions when you reuse that example.
Using your World Generator
Set your voxel world World Generator to Class and choose MyWorldGenerator
You can also add MySeed to the Seeds map of the voxel world
Set your voxel world Material Config to RGB
Hit play: you should see a world with hills.
To have bigger hills, create a blueprint inheriting from MyWorldGenerator:
Right click content browser, new blueprint class
Expand All Classes and choose MyWorldGenerator
Open the new blueprint, and in Class Defaults change Noise Height to 100
Set your voxel world world generator class to that new blueprint
You should now have much bigger hills
Sphere World Generator
Change GetValueImpl to:
Workflow
I recommend disabling Hot Reload and enabling Live Coding instead. Also consider getting Resharper C++ or Visual Assist.
Technical details
GetValueImpl and GetMaterialImpl can be called at any time from any thread. They must be thread-safe, and always return the same value.
To check if your GetValueImpl is helping, use voxel.renderer.ShowChunksEmptyStates 1
Example of result:
Here only the red chunks are actually computed, the green chunks are skipped.
Last updated