Are There Any Plans To Update Terrains?

This one's really directed at U3D people who read these, although any input from knowledgeable outsiders is equally welcome.

In looking over the questions for terrains, most of them (my own included) seem to be wanting to do things that involve modifying aspects of terrains at runtime. It also seems that although much of the guts of terrain objects are undocumented, there's a good deal of knowledge in the userbase on how to do these dynamic changes, although these techniques are always qualified with the caveat that the terrain object are undocumented and subject to announced change, which is likely to horribly break things, especially for games that use the webplayer.

My list of things I'd like to be able to do (all of which seem to be possible if I use undocumented calls):

  • Change heightmaps (the only thing that appears to be formally supported)
  • Change terrain texture/splatmaps
  • Change textures on trees/mesh objects
  • Add/remove trees/mesh objects
  • Change geometry of trees/mesh objects (as long as geometry prototype exists)
  • Add arbitrary non-visible attributes to terrains (subclassing, or wrapping class?)
  • Build new terrains programmatically (which is basically "all of the above"), although it'd be nice if this could be done either via an external tool, or by running a script within the editor from the command line.

So my question is this - are there any plans to make any of the undocumented methods official, or to introduce a new Terrain object that will have documented (and reasonably stable) methods for doing various terrain-altering things? I'll happily start work on my project using the existing undocumented techniques if there's a strong likelihood that it will become possible to achieve the same results using formally supported methods (even if it involves considerable rewriting of code) within the one year development window I'm currently allowing myself.

Al

The core of what you describe, modifying and building 'terrains' from code can be achieved by using the mesh class, and modifying it at runtime. While you would end up rebuilding much of the functionality of the existing terrain system, you'd likely have something more stable throughout any future terrain system changes.

Gambling on future software releases and their feature set is probably not a good idea, particularly if you forsee a year worth of effort going into this project. I know there are some planned updates to the terrain system, but I can't imagine you'll see anything major until the 3.0 release cycle, which I believe is in the 9-12 month timeframe. Even then, the core pseudo-announced functionality is merging the various Unity dev kits into a single Unity app. Furthermore, if you use undocumented calls, you might find the updates break your app in such a way that it becomes impossible to do what you want.

I'd strongly recommend either revising your project to work with the existing system, or, spend the extra time to implement the features yourself.