World Generation

Going Global

I have for a long term had an interested in spherical maps. They're just so elegant.

Immersion Benefits

Firstly, due to it being a sphere, there is no boundaries to the map. There are no invisible walls that restrict you, no limitations to your adventure. Even going upward, something which few games allow you to do, you can look down and see a complete scene.

Scale Benefits

Secondly, the scale benefits. Roblox only allows you reliably render things within ~30,000 units of the center of the place before you start having noticeable graphics bugs. This means the maximum sized flat map you'd be able to have (assuming 1 unit = 1 ft) is around pi * 5.6 miles ^ 2, around around 101 sq miles. Now this isn't horrible, I mean GTA V's island was only around 30 square miles, and people think that map is massive. In order to make that map feel big though, they need to cap all vehicles at around 150 mph, when in reality some of the jets in that game should be able to hit 4-5x that much. If you were to instead use that 5.6 mile radius to create a sphere, you'd actually quadruple the size of the map! This means 400 sq miles, or around half the size of Rhode Island. Now say I reduce the size of everything in-game to be scaled so that 1 stud = 1 meter (which btw, I did a while back y'all just didn't notice lol). This allows more easier math in solving for things, and it also increases the size of the map by 3.28^2, or around 975%. All of the sudden instead of capping out at half the size of Rhode Island, you find yourself at 4,343 square miles, aka the size of Connecticut.

Now say that Roblox improves its stability farther out, like say all the way to 100,000 studs from the center. All of the sudden you can generate a planet the size of Alabama / North Carolina / New York. If I want I can even push it further by shrinking down the avatars even further, to around 0.06 units = 1 meter, which is the smallest you can get while maintaining the minimum detail size of ~16cm which the game was designed with. From there, you get a maximum planet radius of 1666 kilometers, which then translates into 34 million square kilometers. This would mean the map is larger than Asia, or approximately the size of North & South America combined.

Now, we obviously don't need that much space. However having that option available means that map size can be directly determined by server size with almost no upper cap. If you assume a player density comparable to GTA V for the map (around 1 player per square mile), then, assuming only 30% of a map is land, you only need a planet that's around 8632 square kilometers in size. This means a planetary radius of 26km, or around 26,000 units at current scale. This leaves a good 4000 units within the 30,000 stud rendering stability limit to use for stuff like upper atmosphere and mountain peak elevations. For comparison you'd require almost 2x as big a radius to handle this on a flat map - well outside the range of reliable Roblox rendering.

So yeah, putting a map on a sphere functionally removes its size limitations.

Rendering Benefits

One final benefit of a sphere vs a plane is the natural horizon dropoff being really helpful for rendering distant objects.

If you take a look at the above modded minecraft client, allowing for distance rendering, even when pushed to its limits at some point there is a hard cut-off of the rendering. This is because on a plane you should theoretically be able to see infinitely in any of the planar directions. However, when you are on a curved surface the farther out you go the more things seem to shrink down. If you go up higher you can see farther, but things always slowly fade from view. This means that the geometry of the map has a built in way to allow us to focus on nearby objects without breaking immersion. Heck, even looking at the planet from space will only show you half of it, and by that point you're so far away it can be easily rendered at low resolution. The truth is, a spherical planet is an open-world game dev's dream.

Procedural Generation

So the entire map will be procedurally generated, this allows for the types of scale we're referring to earlier, as well as for us to make rapid changes to the map as we need to. In doing so we unlock numerous benefits such as:

Unlimited Ways to Improve the Map

One of the benefits of making everything generated is that instead of writing down specific instructions, we're writing down general rules - an equation in all honesty. If we don't like how something looks, instead of having to erase a ton of hard work, we just adjust the equation and can change things dramatically.

Time Travel / Alternate Timelines

One issue with procedurally generated worlds is they have this bland sameness due to often relying on fairly basic swappable pre-made assets. To overcome this we're building things from the ground up, and in order to have a city that feels lived in and grounded, we need to simulate that process. This means generating history, from a global / international level, all the way to a local and ancestral level. Because of that we not only get better maps, but along the way will have done all the work to allow the map to be generated at any point in time, as well as to insert changes at any point to change the outcome. Because of this, we're able to allow players to travel through time, visiting different ages with different technologies, cities, cultures, etc, as well as to show them how their changes in the past effected the future by creating branching servers. Once players leave their timeline, the branch closes for the sake of system memory, but prior to that you have an essentially unlimited multiverse to explore.

Destroy Everything

One final, but quite impactful, benefit of procedural maps is that since we're constructing everything by code, it's all organized and tagged in the ways that hand-built stuff aren't. This means that it's super easy to implement destruction mechanics. SHL4 might be able to be fully destroyable, making it one of the most immersive experiences on Roblox.