Provide more flexible/easy to use terrain API

As a Roblox developer, managing terrain via scripting is extremely difficult. From the messy API to straight up lack of certain functionality, trying to figure out how to work with the terrain system (as well as what you can and can’t do) is a massive pain that slows development. The basic lack of a way of easily managing only a few cells and also retrieving data about those cells (position, material, occupancy, etc.) is enough to make anyone go crazy.

As just one example, from what I can gather (because documentation is nearly nonexistent for it), Terrain:ReadVoxels() currently returns two tables. One table contains material info for the read voxels and the other contains occupancy info. But these tables are not formatted in any way that makes sense, so to actually figure out this info you must do this. However, this issue does not lie with ReadVoxels() alone, but is rather the result of a failure to implement any sort of manageable structure for terrain cells.

A way to eliminate this issue entirely is to give us a cleaner interface for accessing contents of terrain cells. Whether this comes in the form of a TerrainCell object which contains all material, occupancy, and location data for a cell as well as new methods for easily editing and managing terrain cells or some other solution, it is sorely needed. As long as terrain stays the way it is, working with it will be slow, tedious, and painful.

12 Likes