[Official] New Terrain System

Hi all,

It’s time to add to terrains to the discussion of systems we’re upgrading!

As with our other discussions, we’ll start with a clean slate and see where it goes. We’ll summarize and add our own ideas later on, but we really want to hear from you all first.

As usual, it’s super helpful to know something about you when you comment because it helps us understand much better the use-cases and goals you’re trying to achieve.

Who are you?
What kind of game are you trying to build or would like to build?
How does terrain fit into that?
What use-cases, features, workflows do you have or would like to see?

Thanks!
Brett

------ edited by moderator as follows ---------
Locking this now as it’s redundant, and pointing people to the new forum for the purpose of terrain (also you should check beta forums):
Unity Blog

https://forum.unity.com/forums/world-building.146/

20 Likes

Who are you?

Hobbyist

What kind of game are you trying to build or would like to build?

Puzzle Adventure

How does terrain fit into that?

Want believable terrains of various types to travel through.

What use-cases, features, workflows do you have or would like to see?

I’d like to be able to sculpt terrains from a distance on large scenes and have the brush be responsive,
I find now I must be close to the terrain to make any real impact with the brush.
I’d like to be able to create overhangs and caves, to be able to adjust terrain height options without having to flatten the terrain.
To be continued…

2 Likes

Who are you?

I’m Elizabeth, sole developer in my tiny studio of one.

What kind of game are you trying to build or would like to build?

When it comes to terrain, I’m working on an large area outdoor sports game.

How does terrain fit into that?

Simply put? It doesn’t. I’ve had to completely disregard Unity’s terrain options in favour of a series of split meshes that I generate in a custom terrain tool. I need a lot of overhangs, caves, and other concave surfaces and that’s just not possible with the current terrain workflow. I also require a lot of special material cases for translucent surfaces.

What use-cases, features, workflows do you have or would like to see?

  • NORMAL MAP SUPPORT. Proper normal map support too, not one that makes my terrain look like it’s covered in a layer of plastic wrap.
  • Platform independent terrain tessellation. Don’t make me rely on DX11 for this. I want to target things other than just Windows platforms.
  • Object intersection tessellation. Let me put down a tree mesh with roots and be able to sculpt around the roots to have them more realistically interact with the terrain itself.
  • Realtime runtime terrain deformation with fast collision updates.
  • Better in-engine sculpting tools, or maybe even some (very basic) analogues to World Machine’s terrain functions.
  • Performance, performance, performance! It feels so finicky getting Unity terrain to perform well.
  • CONCAVE SURFACE SUPPORT.

Even if the terrain tessellation is pre-baked that’d be fine.

2 Likes

Who are you?

Hobbyist on personal projects and games. And then… I might help port a few games… several… okay a lot of Unity games…

What kind of game are you trying to build or would like to build?

3d Graphic Novel

How does terrain fit into that?

I plan on remaking concept drawings into 3d scenes. I have environment like, forests with campfire. Exterior houses. Interior houses. Barns. Caves. Train tracks. Bridges. Western Towns. And a smoke stack to create.

What use-cases, features, workflows do you have or would like to see?

I might have a scene for sections of the environment that link together. Some of the scenes might overlap or fade in and out based on proximity to the camera. I might want to edit the terrain for all the scenes together while logically when I save the various components save into their individual scenes.

I have a need for building props, vegetation and trees. Of which I’ll likely use content from the asset store.

It would be great if while working on the scenes there was a popup prop selector which would cycle throw all the assets that I’ve purchased and downloaded and when I select something it fetches it right out of the that package. Without the need of importing 5GB of art assets and only using some of it. Quick selection would keep the scenes leaner if it only imports the assets I need when I use them.

Most importantly I need to be able to publish to Android.

Who are you?
Indie game developer.

What kind of game are you trying to build or would like to build?
Endless runner with enemies that chase player.

How does terrain fit into that?
I would like to have pieces of terrain that can be placed and joined at run time.

What use-cases, features, workflows do you have or would like to see?
Features I would like
1 - Nav-Mesh
a - Bake nav-mesh into terrain prefab that can be moved at runtime.
b - Join nav-mesh with adjacent terrain placed at runtime.
2 - Built in object-pooling for everything, including terrains.
3 - Tools for modelling seamless seems for terrains that can be placed side by side at run time where each side of the terrain can be joined with different sides of another terrain.
4 - Run-time deform of terrain and associated nav-mesh
5 - Run-time placement of objects / nav-mesh breaks. Not the same as placing nav obstacles, since multiple obstacles that block a path does not cause character to navigate around them.

Who are you?

Fat thing that’s not really fat, that lurks a lot on forums that people put up with because a) sometimes he’s helpful, b) they’ve no choice.

OR: Director at Simian Squared, purveyor of fine British console and mobile games.

What kind of game are you trying to build or would like to build?

We’re doing a game for Sony that will use a heck of a lot of Unity 5.

How does terrain fit into that?

We’ve actually done a few years research here from rolling our own ROAM back when it was vogue, to stitching together loosely culled meshes to using a water-like structure of detailed geometry close up. We’ve also used Zbrush and World Machine among other applications in our research. We do a lot of R&D as we like to put something new out there. Ultimately, the reasons for avoiding Unity’s terrain always came down to poor tools, poor performance and no overhangs.

This upsets us greatly, because we know that the number one best way to create terrain in games is within the actual game editor and not externally. The nature of terrain is that it must be modifiable with short notice to fit playability, situations that cannot be forseen etc, and this is the main reason generating terrain in external apps is a poor workflow that creates stress within the team.

What use-cases, features, workflows do you have or would like to see?

Idealistic futuristic next gen terrain request:

  1. It uses voxels and we can just fly around digging the perfect terrain. There’s a few asset store entries but they’re unsupported and not ideal. We would love overhangs. We’d love to carve a world offline and online.

  2. It just works beautifully with enlighten.

  3. We have choice of vertex based splatmap and texture based splatmap, vertex based lighting and shadow (which can update if we carve or add new geometry)

  4. Triplanar and other options supported, including a nifty feature to match the uvs of any object to the terrain so meshes “just work” and fit - like in Skyrim’s toolset.

In short, fine-grained resolution isn’t as important as a living and breathing terrain that feels organic and raw and realistic, and caves and other exciting things are within reach just with a few brush strokes.

Wacom support is an absolute MUST or artists can’t function so well. Adjusting the strength constantly isn’t much fun is it.

Toned-down existing style terrain request in the realms of sanity:

  1. Maximum performance.

  2. It just works beautifully with enlighten.

  3. We have choice of vertex based splatmap and texture based splatmap, vertex based lighting and shadow which updates. But importantly there must be hole support as people do like their caves.

  4. Triplanar and other options supported, including a nifty feature to match the uvs of any object to the terrain so meshes “just work” and fit - like in Skyrim’s toolset.

So that’s two options. The thing is, if you’re going to overhaul the existing terrain it has to be something pretty next gen for people to bother, or at minimum very flexible. That’s the thing about terrain made in game editors, you want to tweak all that. We also need some form of broad world navmesh support going on here too among other features supported by Unity.

Just some thoughts.

8 Likes

Hello Brett,
I guess you already know about us, so I’ll go straight to our project needs and feedbacks about the system. This is the system in Unity that really need a lot of love and the most hacked by all Unity users in order to get somewhat Okaish visuals. We are currently prototyping an open world game that features larges natural landscapes (using GIS and CIGI data). The terrain is 256 square KMs terrain. We also work with other sister companies that specializes in Simulation and Visualization applications.
So here are my needs and feedbacks about a new terrain system in Unity:
We need more tools to create natural terrains and faster, such as erosion, noise and the like algorithms. Better painting tools (colormaps that will generate terrain splats). Also a way to split large terrains into multiples chunks. We need procedural planting tools, just imagine adding grass, trees and rocks to 250squareKMs by hand, that’s insane. A tool that will let us use a mask to tell the engine where to randomly put grass/trees/details, etc, density, variation. An option to make terrain grass use the terrain color (this is a nice feature in CryEngine that adds a lot to realism).
Materials: Support for multiple splats (more than 4 layers) with all kind of custom settings and any custom material (we also need a better and more open terrain API). Leadwerks Engine currently have a very nice terrain texturing technology, I recommend to check it out.
Navigation: A way to make Navigation work on very large terrains is also a plus welcome.
Also please, fix batching, trees on the terrain doesn’t get batched (even when using the same trees everywhere). Results = 20000+ drawcalls, that’s insanely injustifiable. Make a better impostor (or billboard system), currently impostors doesn’t cast any shadows, it’s ugly when shadows pops in and the reason is because they are quads facing the camera, solution: let us chose between impostors and cross billboard trees that will cast correct shadows (and blend between billboard trees and trees meshes).
Side problem1: Double precision of coordinates (an option that we can tick on/off in per project basis).
Side problem2: You cannot cast way too far shadows otherwise the resolution will shrink and you’ll end up having tiny shadows resolutions = really ugly blocky shadows. Btw, this is an other area where Unity really needs to put some men at work onto it. Improve shadows please.
Lastly, Two features that will complement really well the new terrain system: an ocean system, an sky with clouds (time of day system). Why having a nice terrain and a ugly static skybox? If you really want some examples, take a look at CryEngine or Unigine (they both shares similarities in their terrain/ocean/sky system). I guess I don’t need to post any image or video?
Currently, is just impossible to create proper large natural landscapes in Unity the way you can do in other Engines and this is a huge problem for us and our sister companies.
I haven’t upgraded all my licenses yet and will probably not unless we see solutions to those problems described below.
Side note: We are currently evaluating Unigine and so far it have been a great experience managing very large and detailed natural landscapes.

Who are you?

Student, Indie guy

What kind of game are you trying to build or would like to build?

Large world rpg

How does terrain fit into that?

I need large terrains for the large world

What use-cases, features, workflows do you have or would like to see?

One of the big things Ive run into is performance and the inability to edit heights on a separate thread. I am able to tile the terrains very well in runtime but I need the ability to read the heightmaps on another thread and change them so I dont lock down the fps when loading in chunks of the world. Also, being able to edit multiple terrains at the same time would be nice

Bullet List

  • Read/Write in other threads
  • Multi-terrain editing
1 Like

Who are you?
Indie developer, head of LittleForestGames

What kind of game are you trying to build or would like to build?
Action/Adventure RPG (in first person)

How does terrain fit into that?
Terrain in the game is important, as the terrain would be something like OOT. Not a big map, but the feeling
of being able to go to different areas in the world.

What use-cases, features, workflows do you have or would like to see?
There are a few major things that are needed.

  • Voxel terrain (or at least the support for overhangs, cliffs, etc.)

  • Splatmaps

  • Normal mapping

  • Support for streaming multiple terrains (think Skyrim or any openworld game).

  • Triplanar support as said above, really needed

  • performance

1 Like

Who are you?
Hobbyist

What kind of game are you trying to build or would like to build?
World Survival

How does terrain fit into that?
Alter terrain (raise/lower), change the texture. A simplified voxel/digging system.

What use-cases, features, workflows do you have or would like to see?

  • If you do something voxel based, please make it separate from the heightmap based implementation.
  • More options as far as LOD, stitching, and updating the terrain. Smarter handling of these.
  • Vegetation that is not “melded” with the terrain. Vegetation can make use of the same height data, but remain a separate component.
  • Allow people to disable the separate components (like the terrain, or the vegetation) in case someone wants to use a substitute. Some may like the vegetation…but want to use their own terrain system. Right now, it’s either all or nothing.
  • Access to terrain/vegetation data on the main and other threads, via a nice clean well documented API. Open up the terrain system. Allow easier use of custom shaders and options.
  • The ability to atlas textures would be nice :slight_smile:
  • Nice to haves: nearby tesselation (DX11 is fine with me) based on a noise texture possibly.
  • Global colormap support.
  • Performance and memory usage.
  • “Holes” in the terrain unless there is a better way (depth mask or whatever).

Also, please clarify if you are talking about the terrain only, or vegetation/trees also. Currently they are tied together. If you are talking about vegetation also:

  • Rotatable trees (1 byte would give enough accuracy).
  • Individual colliders.
  • For billboards, at least allow custom texture resolutions for the billboards (too low now), and please fix the “bowing”
    issue where the trees bow towards the player when you tilt the camera.
  • Better vegetation shaders! Right now grass especially can look horrible unless you use AA or don’t mind not having shadows.
2 Likes

Who are you?

Architecture Vis Studio

What kind of game are you trying to build or would like to build?

No games, but architecture presentations from small to very hughe sizes

How does terrain fit into that?

Bad as it works now:
In architecture scenes we have streets, stairs etc… all not really possible with terrain

What use-cases, features, workflows do you have or would like to see?

  • use custom mesh with sub ids / materials
  • must accept materials with custom shaders, (Shaderforge, Marmoset,…)
  • rotatable

Who are you?
Indie studio. Echoboom.com

What kind of game are you trying to build or would like to build?
We have a flight simulator right now, but we have a whole bunch of games on pipeline that we would love to build but terrain is real slow.

How does terrain fit into that?
Flight simulator… terrain… need to say more? www.dogfightplay.com

What use-cases, features, workflows do you have or would like to see?

Right now, we can’t use the unity terrain system because it is incredible slow. We build for mobile, and although the terrain runs fine on hyperfast mobiles and regular desktops, on the average phones as soon as you plug a terrain with a few trees the frame drop is huge. We have to use 3d meshes for it all. It doesn’t make sense to us because in theory the terrain should be more efficient than having huge 3d meshes all around.

To us, the quality it has right now, trees, shadows and all that, could be improved but we are ok with it. What it’s a big no-no is the performance. With that performance it doesn’t matter to us what is improved because we simply cannot use it.

Voxel Farm in Unity :slight_smile:
If not,…performance.

Who are you?
Marcus Lear-Jones - Indie game company

What kind of game are you trying to build or would like to build?
(M)MORPGs - from fantasy to post apoco

How does terrain fit into that?
It’s the majority of stuff you stand on.

What use-cases, features, workflows do you have or would like to see?
Two Separate types of terrain:-

  1. A realtime deformable voxel based terrain
  2. A static high performance terrain

As people have already said; terrains must:-

  1. Be capable of holes/caves/overhangs
  2. Have shaders with colourmap, normal maps, specular maps, height maps (see RTP).
  3. Wind systems that are scriptable
  4. Trees that work day and night, don’t “bend” into view, have believable billboards - currently terrain trees make me cry.
  5. Vegetation that doesn’t look like a cardboard model stuck on the terrain. Believability is the key.
  6. Beauty - Cryengine style jaw-dropping beauty. If players’ jaws don’t hit the floor, it’s not good enough.
  7. Shadows and ambiance - will GI make this good? If you’ve got low ambient and a sun/moon(s) as light sources, the shadows waver and blob their way across the terrain and models like a bad migraine. Horrible, truly horrible.
  8. Rivers and roads tools (better water for rivers and oceans out of the box).
  9. Built-in systems for seamless terrains.
  10. All of the above with PERFORMANCE. Use as many threads as it takes, just blow us away with the performance.

Sorry for being so disparaging about the current terrain system. I’m a huge Unity fan (company style and product), and I want to see it being the best. Terrain is what all of our customers/players see most of, so it’s got to be great. Currently it’s fallen a long way behind.

1 Like

Who are you?
Amateur Indie guy

What kind of game are you trying to build or would like to build?
PC games Third view RPG (later FPS exploration game)

How does terrain fit into that?
Main payable area to explore to find dungeons and towns.

What use-cases, features, workflows do you have or would like to see?

  • Extended terrain shader : Better Normal map, specular maps option for rocks and grass floor texture (Wow have terrain specular from years), Glow map option for lava , poisonnous swamp etc …
  • Voxels and editor tools : would allow caves and avoid distortion UV like we have in standard terrain on slopes and cliffs
  • performant grass and trees shadowing
  • advanced terrain LOD
  • perhaps terrain chunck system to allow really big terrains, only chuncks terrain near player beeing displayed.

Who are you?

ShadowKind Games

What kind of game are you trying to build or would like to build?

Large openworld RPG

How does terrain fit into that?

It’s about 75% of the game.

What use-cases, features, workflows do you have or would like to see?

Tree system is irrelevant as we’ll be using SpeedTree with Unity 5.0, what we do need is or nice to haves:

-Performance: Streaming, streaming and did I mention streaming again for tiles? (I’ll update this section with a list of others tonight, so keeping blank for now).

-Origin shifting: So when absolute camera position is far from origin, it shifts back to zero.

-Stitching: The ability to stitch multiple tiles together to create the size required for open worlds.

-Expandable per tile shader support: Correct use of normal map per splat, support for multiple layers within Unity 5.0’s default shader system. Set the layer preset (amount of layers) to something around 10, that would usually cover the basis. Must also cover the use of color maps (see worldmachine or any varient, as this is what most people use).

-Tool expansion: Noise Tool, Valley tool (Sinkhole / flatten), Erosion tool, sculpt tool.

-I’m not sure how people are using SpeedTree with UT 5.0, but I hope you can batch vegetation and trees.

-Better vegetation shaders (not necessary but would be nice).

-Ocean and river shaders (same as above)

-What would be REALLY nice to have is a TOD system (like you have in UE4 and CE), the skybox system is a bit long in the tooth. Still not necessary but a nice to have… Reason I mention this is two fold, one a template for correct use with Enlighten would be great, secondly it’s great for beginners or advanced users to expand on.

2 Likes

Who are you?
Hobbyist and general tinkerer

What kind of game are you trying to build or would like to build?
The requirement for a better terrain came when I was trying to build a modern ‘remake’ of 3D Ant Attack.

How does terrain fit into that?
I really wanted a ‘realistic environment’, but procedurally generated. A major part of this would be the ant’s tunnels which would be a major area of exploration in the game. Generating the landscape procedurally would allow re-playability and allow the player to ‘own’ his game as it would be unique to him.

What use-cases, features, workflows do you have or would like to see?

  • Support for tunnels, caves & overhangs without having to resort to hacks like a depth-mask shader.
  • Being able to create the entire terrain from code is essential as most things I do are procedurally generated.
  • For this specific game there is no requirement for real-time modification (the game was not to be about digging or crafting, as I felt this would detract from the feel of the game and overcomplicate it)
2 Likes

Who are you?

Indie Game developer

What kind of game are you trying to build or would like to build?

Multiplayer RPG

How does terrain fit into that?

The terrain is the foundation of the game.

What use-cases, features, workflows do you have or would like to see?

  • Performance

    • Better billboards and vegetation brushes
    • Wind effects for mesh foliage
    • Erosion features to create more realistic terrains
    • Finer control for brushes
    • Support for multi-terrains and paging
    • Spline based river placement with flow (like Torque 3d)
    • The ability to link textures to vegetation so you can place TextureA and assign a billboard or mesh to the texture and have it generate wherever the texture is placed (like Torque 3d).
    • Better water with much better performance for both Pro and Free.
    • Ability to make overhangs and holes.
    • Better built-in shaders for the terrain and vegetation
    • The ability to place roads and paths easily on the terrain
1 Like

Instead of a terrain engine could I ask for a procedural planet builder? :wink:

1 Like

+1. Everything here, also performance.

1 Like