Overhaul the Terrain System

SUMMARY: Think a Meshpart but instead it’s terrain.

I know a lot of devs want terrain changes, but that’s because it’s necessary, and as a roblox developer, it is currently just too hard to use terrain in live games. A lot of people want terrain materials to be able to be parts, but honestly I think it’s just time for a terrain overhaul to just redesign the whole thing.

At the moment, Terrain is managed on a per - level basis. Each roblox world has a terrain object that remains, for the most part, static. Unfortunately, it takes a lot of experience with studio and roblox to be able to make terrain objects dynamic - not to mention processing power. Here’s what I think we should do:

  • Make the terrain a dynamic instance

    • Creating multiple terrain objects in workspace would be a very useful feature.
    • Potentially applying physics to small chunks of terrain would be a neat plus
    • Voxels would operate in an environment relative to the bounding box of the terrain
    • Terrain colors operate on a per - instance basis, so red and yellow sand could be in the same level at the same time
    • Resolution defined by developer (I wouldn’t expect this to be able to change during run time, though that would be great)
    • LOD would operate based on the center point of the terrain, or if it’s large enough then use the method currently used
  • Better terrain tools

    • Sculpt tools, like we have now
    • Vertex grabbing
    • Built - in part to terrain conversion
    • LOD Customization
    • Tools to set water level & create ponds
    • Terrain Isolation mode would be nice

I think a lot of these features would really change a lot of developer’s minds about terrain and help them to turn to it as a resource to creating their games. I like it a lot but I don’t feel like it lives up to its potential on the platform, especially considering that meshparts and CSG don’t have a perfect collision fidelity at the moment. Ideally large terrains would still be viable and could act the same way they do now, though there would be terrain “regions” (let’s call them blocks not to get confused) that could be spawned and used elsewhere.

Edit: I forgot some stuff:

  • Terrain brushes to brush patterns and things of that nature onto the terrain (Ideally these could be programmed to paint on materials as well)
  • Heightmap importer

Edit: I figured I would leave my current advice on how to create good terrain in this post just so devs can use it:

  • Make it in Blender or outside roblox
  • Import it to roblox as obj using the old method (we want wedges, not MeshParts)
  • Convert those wedges to terrain

It’ll be paper thin and idk how to fill in the middle but it works pretty much so I’d recommend it.

28 Likes

Don’t forget stuff like this!

3 Likes

Ah, thank you.

The ability to change individual terrain colors rather than universially is an excellent idea, and should be implemented! This could be used to achieve an assortment of different biomes with the same “grass” texture within a map. I believe that this feature should work as “Terrain Brush Color”, in which would be accessible within the Terrain Editor tab. The user would be able to either choose the brush color via color wheel, or change the color code value to achieve the color that they want.
I really hope this feature can be added, it is needed! :smile:

4 Likes

Personally, I think ditching the voxel system and instead opting for a mesh-based terrain system would be much, much better.

Instead of having to spend hours upon hours upon hours just making a mountain that won’t even look good at the end, you could spend half an hour to an hour sculpting a mountain that would have perfect collision.

I don’t understand why the current terrain system forces intricacy on certain terrain materials, like Rock for instance - it ruins how environments using it look.

3 Likes

I too think the voxel system should go, but I think at this point we’re locked in. Roblox has been improving it for years now and they have updates planned that rely on it (e.g. vegetation).

1 Like

That is true, but Voxel terrain feels extremely limited compared to what you can achieve with triangle terrain or terrain systems in other engines - I mean, even Source ( an engine that’s almost 20 years old) has a better terrain system in my opinion.

A lot of my problems with terrain would be eased if we could select a vertex, or a voxel, or multiple, and modify it by pulling, stretching, bringing it back down, etc. Then have terrain brushes like the ones I posted a few months back for Z Brush.

Having to sculpt terrain from scratch is really tedious and takes way longer than it should - plus the bumpyness of some terrain materials ruins the overall look of a map.

3 Likes

Do you think it would be possible for roblox to deprecate the Terrain object without completely removing it? Perhaps, a “TerrainBody” class that acts as a Terrain object with added functionality? Something like this would also make it easier to integrate parts and terrain together. This way new projects get better tools, but old projects don’t become broken.

1 Like

I think that would be possible. They’ve deprecated things before without breaking games that relied on them - i.e. deprecating Value instances for whatever reason.