Entries in UDK (1)


Advanced Unity Terrain Creation

I've been working on some art tests for an open-world exploration game and I thought I would share some the resources I have found that help in creating some extremely detailed and realistic terrains in the Unity 3D engine. The main point is custom shaders. Unity's built in terrain shader leaves something to be desired, but there are ways to work around it.

At some point I might get around to creating an actual tutorial, but until then here are some useful links for those of you who would like to get results similar to the images seen above:

  • World Machine - The program I used for generating the terrain.

  • World Machine to Cryengine tutorial - This one is very long and detailed. Even if you aren't using Cryengine I highly recommend watching this to learn how to make effective, realistic terrains before even worrying about importing into a game engine.

  • World Machine to Unity tutorial - This one is much shorter, but specifically references using World Machine and importing into Unity with custom splatmap support.

  • Tom's Terrain Tools - These are a set of tools specifically for Unity that help with importing custom splatmaps generated outside of Unity.

  • ATS Colormap Terrain Shader - This was my starting point for creating a better terrain shader in Unity. Most of the credit for the shader really does go to the creator of this. I simply made a few additions that reduced the visible tiling and improved the support for multiple terrains. The biggest thing here is the addition of a colormap, normalmap, and individual normal maps for each detail texture.

This whole process requires a TON of tweaking and testing. A great deal of artistry is required to get it to look just right. The shaders and terrain generators won't do everything for you, but they get you a much better starting point than if you were to use the built in terrain tools in Unity. If you want to get started coding your own shaders I would recommend you open up some existing shaders and just trying to make a few small adjustments. By doing this I was able to eventually understand what each component was doing and start to work towards the exact look I wanted.