I’m currently trying to create proper large-scale terrain in Roblox Studio and have been struggling to get the results I want. I’ve seen several Roblox games achieve high-quality, realistic terrain that closely resembles real-world locations like the Panjshir Valley in Afghanistan and the Swiss Alps, and I’ve been using those as reference while rebuilding an old project.
In the past, I posted asking for help with large-scale terrain, but I wasn’t satisfied with how that attempt turned out. I’ve tried multiple tools including Gaea, World Machine, heightmaps, and manual terrain building, but none have produced the look or accuracy I’m aiming for. I’m looking for updated methods or advice for making realistic, large-scale terrain, since most existing forum posts on this topic are now outdated.
I suggest you make a small form-factor version of the terrain you’re trying to replicate, and then resize it, as Roblox Terrain is fully resizable with using the transform tools, then add some touch-up to it!
I was thinking of that, but wouldn’t issues arise with rescaling as the terrain would become glitched while sizing it up? It also seems to be very unreliable compared to other methods.
I use to do this in the past, but I was unsure if parts and meshes could actually get the proper shape or design that I was looking for, especially when working with the more jagged and sharp mountains.
I’ve seen some people do some cool things with Gaea and World Machine, even custom heightmaps but there just is not any new or up to date information on how to use these programs properly on Roblox
The best method depends on the style you are going for.
Block terrain works best for games that I would deem to be a robloxian themed game. This means that it’s not real life, you aren’t doing a fantasy genre in the sense of whymsicality, etc…
Voxel Terrain works well for most middle of the road applications. This is waht you use for basica terrain where you can deal with not as good editing resolution but you want a smoother appearance than block. If you have a height map, you can get a pretty decent approximation for the terrain but remember that Voxel terrain only goes in 4x4 squares, meaning your not gonna get very precise with stuff like cutting terrain for roads and buildings.
The gold standard is mesh, the ability for high detail, works well with any style of game, and with the right tools, can be worked on easily.
That’s what I was referring to when I stated “touching” it up. By the way, have you tried just putting a flat image of the map on a baseplate and trying to outline it?
Yeah, but it hasn’t worked very well. I used a Google Maps to Heightmap tool, it ended up coming out very bad which is what prompted me to attempt to use Gaea instead, I was also looking for a better option for heightmapping from maps
If you want large scale, realistic terrain then you are going to be streaming mesh into your game.
Potentially you could use editable meshes and procedural generation, but every time I look at the editable mesh thread it seems to be people complaining of issues with it (it’s very new, probably needs some more development love and the community needs more experience with it).
The next problem is how you texture it, you are either going to be streaming in textures or procedurally creating editable images (only recently supported), but external images are still at 1k. meaning you need a huge number of them for a realistic look. Some landscapes you could cover in one material and then overlay feature meshes (e.g. cliffs).
You have no shader access so there is no splat mapping option. You could in theory use color vertices from an FBX (I’ve not tried with this), which might help with blending to meshes, but doesn’t help with textures.
If you do stream in mesh objects then you have to either keep them relatively small or use a separate simplified collider mesh for characters to walk on it.
I recently made this:
You are welcome to have a look / take a copy of the place (it’s un-copylocked). I think this is about as large a scene as you can have without encountering floating point precision issues (of course there are other strategies for that, but it was already complicated enough for me!).