Terrain work has been taking up a significant portion of my development time lately, so to say I’m looking forward to improvements is an understatement. There are important features for terrain work and then there are foundational features for terrain work, which is to say, features that are absolutely required for the terrain tool to be viable for nearly any project, and I mean nearly any project literally.
Foundational (necessary) Feature List:
Height Map Layering
Height maps must be able to be layered and blended in order to create natural and detailed landscapes. Hand authoring these features is a massive time sink and usually leads to inferior results, these features are the literal foundation of terrain design in most projects. This is where it starts and what everything is built from.
Procedural Texture Placement
Subsequently, textures need to have the same functionality. This takes what would be hours or days of work and editing by hand and achieves better results nearly instantaneously and with exponentially faster iteration times. The ability to retain hand painted features while swapping out procedurally placed textures should be included.
Procedural Item Scattering
I believe this one was confirmed above, but wanted to emphasize its importance. Scattering objects based on height specifications like angle and different mask features is vital, as is the need to randomize terrain object/item properties like (preferably per-vector) scale and rotation. This has been a necessity in modern game development for the better part of 20 years. BGS’s Oblivion from 2006 is one notable early example of this functionality.
Without these features listed above specifically, there would be little point in moving forward with any terrain updates, as barring these would necessitate either asset band-aids or more developers to simply move on (rather than over) to UE4/5.
Other extremely important but non-critical features would be:
Terrain Texture Blending on Terrain Objects
Terrain texture blending on rocks, trees, and buildings is essentially standard practice in the industry, and barring custom solutions that require significant development time to code and implement, this leaves the task up to artists, increases the project size, and increases overall design and project complexity.
Procedural Height Map Generation
If a developer is using third-party software to create premade height maps, or not creating procedural landscapes at runtime, then this would be less important, but it’s still not only very important but an emerging feature in more and more games, from indies to AAA titles, but very specifically the types of games that developers who use or would like to use Unity make.
Grass/Object Scattering on Terrain Objects
This is less important than previous features, but is an issue that developers have been dealing with for many years, and solutions are either entirely new workflows with highly questionable and buggy results, or simply less polished and attractive games. It needs a solution at some point, but other features should be higher priority.
I am currently using Map Magic to achieve some of these results, but this has required me to build essentially a very delicate house of cards that requires careful calibrating for each terrain, and with a workflow that does not entirely play nice with Unity, and I have had to build my own functions for things like blending height maps and aligning textures to those height map blends with masking out other height maps and painstakingly transforming texture positions and scales to align. Below is an example workflow for an extremely simple scene and what is required to achieve those very simple results, and trust me when I say that there is a lot more that goes into it outside of these nodes, and all because these are not Unity-native and integrated features:
And the very simple scene being barely held together by it all:
This is not unlike Unreal’s workflow with Material Graph for something like terrain/object blending, except that workflow is simpler and integrated into Unreal’s ecosystem and updated accordingly, and with the ability to expose variables in the Details (Inspector) window, like is possible with Shadergraph. But achieving basic terrain capabilities should not be this complicated nor rely on other developers to patch this basic functionality in, it needs to be standard to Unity.
I think it is extremely underestimated just how much the Terrain tool has held Unity back and held back development of virtually any project that features outdoor terrain of any kind, so I’m very cautiously optimistic that this is a positive development in finally getting these necessities.
World building is essentially what games are, easy and intuitive worldbuilding is probably the reason Unreal is in the position it is in, so please lets get this right and keep building on it? I know “bad habits die hard” and those habits are probably the result of people who don’t read these forums, but we need to see improvement and consistent delivery and not the slow silence that follows feature death and uncertainty.
I think cautious optimism is warranted, but there’s a lot of catching up to do.