TerraProc
A procedural terrain generation server with multithreading.
View the html docs online (with API reference).
Getting started
As usual, install the NuGet packages with
dotnet restore
and then check out the docs for the project you are interested in for more instructions.
Core library
See the TerraProc.Core project.
You can use it to build your own server interface or extend the generation pipeline.
Server
If you want to run the server, use the TerraProc.Server project.
It provides a gRPC and REST API interface to the generation core.
Unity Client
To use the Unity client, refer to the TerraProc.Client project.
Protobuf contracts
If you're interested in the protos used for the gRPC endpoint (and also in the client), you can find them
in the TerraProc.Contracts project.
Tests
The test projects are in tests/. For now, there are core unit tests testing the individual pipeline parts in
TerraProc.Core.Tests and core integration tests for the whole pipeline in TerraProc.Core.IntegrationTests.
The test are not yet completely comprehensive, but they cover the main functionality.
The server and client projects are not yet covered by tests.
Acknowledgements
I used various articles to figure out how perlin noise works and how to implement it.
The most helpful were Understanding Perlin Noise (along with the nice example
implementation), Improved Noise reference implementation,
The Book of Shaders,
scratchapixel.com,
The Perlin noise math FAQ
and also The Range of Perlin Noise.
Thanks to all the authors!