In Roblox, terrain is a unique feature that allows you to easily create organic shapes that blend material textures together nicely. The material of the terrain also ties into the physics system. Mesh parts are able to produce similar shapes but have the following downsides:
- They can’t blend materials the same way terrrain does.
- Mesh part terrain can only have one physical material.
- And most importantly, you need expertise in an external modelling program to make terrain this way.
The terrain system has it’s own limitations however.
- Depending on your needs, voxels may not offer enough control.
- You can’t break your terrain up into sections.
- You can’t load / unload sections of you terrain by moving it around the datamodel.
It would be really nice if terrain behaved more like a part which you can move and rotate around a level. It does inherit from BasePart
after all.
The current terrain system operates as a singleton which manages a single big chunk of terrain for the entire level. The terrain system would benefit greatly if it were broken up and offered the ability to place multiple terrain objects in a level. The vision is that different terrain objects can overlap the same space and terrain within those objects can be edited without affecting other terrain objects.
Moving forward, this will also open up the opportunity for new ‘terrain-type’ instances to be added. In most cases, the current voxel based terrain does not offer enough control or it is an inefficient way of representing your desired terrain shape (Think big flat sloped area, it could be most efficiently represented as a single polygon). New terrain-type instances can include a ‘heightfield terrain’ instance or an even more malleable ‘arbitrary vertex terrain’ instance. The desired material can be painted onto the surface the terrain. The existing voxel terrain would become its own ‘voxel terrain’ instance.
If Roblox is able to address this issue, it would improve my development experience because it provides more control with how I use terrain. This control will make it easier to create even larger worlds by A: allowing work to be split up into smaller sections, and B: offering more efficient ways to represent our terrain.