Greetings fellow wanderers, I’m Tom Jackson, a senior game developer at Bossa Studios. In Worlds Adrift I’ve been focused on gameplay and graphics programming; one big task of mine has been generating our islands.

Procedural generation has a key role in many video games, from something as simple as weapon stats in Borderlands and Diablo, to an entire galaxy of unique planets in the impressive No Man’s Sky. These are opposite extremes, whereas our use for procedural generation lies somewhere in the middle. We need it to help us generate content quickly, but not serve as a replacement for an artist’s keen eye for detail.

Trees, assets, rocks, and all manner of ruins and structures are still hand-crafted, but our placement, island terrains, cave structures and such will be procedural. Furthermore, for every island in the game, after our procedural pass, we will have had a person approve it and say “yes that’s great!” or add and tweak a few things, perhaps add a little special artwork just for that particular island or litter it with various visual storytelling goodies.

Games such as Elite and Minecraft take advantage of procedural generation for the purpose of creating effectively infinite worlds, but our goal is not to make the world’s biggest game. We still want the players to feel a certain level of intimacy, to feel like the world is one they can get to know and learn about, but that also always has things they will yearn to see. Perhaps you’ve heard about the famous sky whale only spotted by a handful of people and rumored to be near a certain island. Or maybe the map you found near a shipwreck shows an island crudely circled with the words “DO NOT GO HERE.” Maybe it’s a trap. Maybe it’s just too good and someone wanted to scare everyone away and keep all the best resources for themselves. Scenarios like this feel more exciting if the world is not actually infinite, and islands carry their own histories and stories you can experience by travelling towards them.

Another argument for the finite world is to target an ideal player density. That means the world will grow as players join, and we’ll be ready for that, but keeping intimacy is part of the plan, which means we can afford to have artists glance over our islands and change them as they see fit.

islandgentool2

So here it is, our island generator, purpose built from the ground up for Worlds Adrift.

This is a simulation of an artist-led island being created:

There’s a lot going on in the video above: A base size is chosen, a rough estimate is shown in the viewport, various settings are chosen, a random seed is picked, and then the base terrain is generated using a choice of coherent noise algorithms.

Tech Note
What is a coherent noise algorithm?

True noise, has no real pattern or system. Imagine the image on your TV when it’s just picking up static. The jumbled white and black spots are just noise. Coherent noise is something that is both predictable, and creates a pattern of usable information.

Compare these 2 images (both generated):

Custom Gallery: images not found

The one on the left has no predictability or pattern so cannot be used for much. It is purely random data. The one on the right is generated using Perlin noise (a popular coherent noise algorithm) that, given the same input, will always generate the same output. The coherence comes from the fact the values do not just jump from 0 (black) to 1 (white) immediately and in random fashion, thus creating usable patterns that lend well to terrain information such as caves and mountains.

Coherent noise and pseudo-random number generators are at the core of the majority of procedural generation techniques.

Once the terrain is generated we can carve it in a variety of ways, flatten areas out to make them seem man made, sprinkle them with objects, trees, water, etc, change the climate to create a different visual feel to the whole thing.

The video above shows an artist manipulating the island after the base shape has been generated procedurally, creating some flat shelves in the terrain (useful for landing ships on and repairing) and placing trees in specific spots. However there is a single button procedure that can generate entire islands from start to finish, randomising everything along the way.

After choosing a few colours for the climate type and generating some grass foliage for the land a close up view is required, something more akin to what a player will see in the game. We can enter the test mode at any time, run, jump and grapple hook around the island just as you would when playing the real game.

A final check to see the island looks attractive at different times of day, and it’s ready to go!

It’s a 1-click process to export the whole island and it’s ready to go into our Improbable powered world, where trees will become resources to be cut down and will regrow over time, fuel will be seeded into the island ready for extraction and players can start exploring another little (partially) hand crafted miniature world.

That wraps it up from me this time; if you’d like any more detailed information or more tech-heavy posts I’m more than happy to oblige. I had to hold back a little on this one to keep it readable and not geek out too much 🙂

Tom