I recently finished this tropical island map for Mind Over Mushroom. The game doesn’t use a grid for movement like most other tactics games, so this allows for some interesting, organic looking maps.
The map starts off in Blender as just a simple flat plane. I first cut out the basic shape of the island’s shoreline, then extrude it upwards.
At this point the island is starting to take very rough shape. The goal at this stage is to just block out the basic, underlying form of what will become a raised, grassy center area ringed by cliffs and ramps. It looks kind of messy and chaotic at this stage, but that won’t be a problem.
Since this island has a lot of cliffs, ramps will be needed to allow characters to move between the beach and what will become the upper, grassy part of the island. The ramps are extremely simple to make at this early stage, but later they will be a source of much fine-tuning.
This is where things get interesting! It’s time to add the modifiers – the key to the low poly style I want the island to have. In order to achieve the look I want, I use a couple of different modifiers working together in a stack:
- Subdivision modifier – This adds a bunch of extra geometry, while still basically following the mesh’s initial form. Without it, the other modifiers wouldn't really have enough vertices to work with to get interesting results.
- Displacement modifier – This nudges each vertex around in a random direction. All that extra geometry that the Subdivision modifier added has made the mesh look artificially smooth. This modifier will fix that, making it look much more organic, irregular, and natural looking.
- Decimate modifier – The real low poly magic! This modifier smartly collapses nearby vertices, reducing the total number of triangles in the mesh. Because the vertices were already moved around randomly by the displacement modifier, we get some very interesting looking results when they start collapsing.
All of these modifiers have a bunch of different settings to fiddle around with, so some experimentation is required to find what looks best for whatever specific type of low poly style you’re trying to achieve.
Once the modifiers are set up, I separate each type of terrain (sand, grass, and cliffs) into different pieces. Once separated, the modifiers act on each part individually, which allows me to fine-tune the settings for each one.
This also gives me the chance to intersect the “boundaries” of each type of terrain in ways that very clearly visually delineate them (such as hanging the edges of the grass over the cliffs). This helps to make everything feel like it has some “volume” to it, which I think can be a big part of making low poly environments look nice.
Once all the modifiers have been applied, the real work begins. The modifiers are great at achieving the basics of a low poly look, but they’re messy. Making things look good in-game, especially where the different parts intersect, requires a whole lot of manual clean-up work.
Now that the mesh is done, it’s time to import it into Unity! The island really starts to come to life once it gets some color.
It’s now time to start populating the island with stuff. I had made these low poly palm trees before starting work on the actual map itself, so it was really satisfying to finally see them arrive in their new home :)
While the aesthetics of the map are very important, this is a game after all, so it’s crucial that these objects are placed in ways that will allow for interesting gameplay. Placing a big rock at the beginning of this ramp nicely splits the area into three separate paths (as indicated by the blue navigation overlay), providing some cover for any characters trying to go up or down the ramp.
After quite a bit more work positioning the rocks and trees, and adding a bunch of grass and small plants (and a couple starfish), the map is finally done!
If you want to subscribe to the Binary Jellyfish newsletter to receive important announcements about Mind Over Mushroom, you can do so here.
Thanks for reading, I hope you found it interesting!