Dev Blog





Above is a single basic room in Gone Viral (our upcoming indie action roguelite). To add to the variety and challenge, much of the game is randomly generated out of tiles. Yay!

Random generation does, however, make it harder to make rooms look as sexy as ones with custom-made decorations placed by a human artist. Getting from a bare set of individual tiles to a fully procedurally decorated room takes more steps than you might imagine - so in case it helps others, let's walk through the steps we take to decorate our rooms.

Let's focus on just the floor of the room since it acts as the background to the gameplay. Know that we do other randomly generated decorating for things like the greenery and lights on the walls!


Here's a floor with no decoration and a basic textured tile. It has some subtle color variation and internal tile lines in an attempt to limit that repetitive feeling you can get with big tiled floors, but the lack of variation and highlights adds up to blandness at best.

Mass spawning identical copies with no variation? Boo! Let's break up the repetitiveness...


First, even a small amount of variation helps. Let's mix in two more tile variations; a whole tile and a chipped tile. Now we will occasionally swap out the original art with one of the new looks (on a weighted basis since some tiles look distracting if they are too prevalent). Additionally, we'll rotate all tiles randomly to give them that little extra push towards feeling organically placed.

This breaks up that repetitive feel but has it gone too far? Now the floor has variance, but feels muddy and almost too random - not like it was a room built by people.


Adding clean and consistent border tiles, especially ones that connect together like these grating tiles, does a good job of placing the randomness inside an intentional frame. We have a quick algorithm to auto-place these around walls and around barriers, which can be overridden by a designer if they would like to hand-place gratings.

Not only does this reduce the randomness of the room as a whole but it also borders it and constrains it to a specific area. Now it feels a bit more room-y!


Adding a spotlight to the center of the room pushes the constructed feel of things even more.

It draws the eye to the center while giving an even and predictable drop off as your eye moves to the edges of the room. This softens the randomness without actually reducing it directly.

We also add floor clutter at random, although heavily biased towards the edges of the room. This helps break apart the incredibly regular border tiles just a bit while adding another layer of light randomness over everything, including tile boundaries.


Finally we're fully decorated - time to spawn in our gameplay objects like rocks, barrels, and crates! Generally these can either be hand-selected or spawned from "pools" of possible room contents.

When working on the tiles and backgrounds we're not using a lot of brightness or saturation, but as each room element type gets layered on top, we highlight things that are interactive or important to the player. Explosive barrels, destructible crates, and coin rewards stand out from less-interactive but still destructible rocks, which of course stand out from the background of the floor.

Now we can see and appreciate the floor doing what it was intended to do: Be a coherent background, while still directing attention to the important gameplay elements of the room.

Our game relies on random generation to continuously give the player new and interesting experiences each time they play and our visual goal is to have these spaces be visually interesting while not taking focus away from the action of the game. These methods of using and manipulating our art let us do that without sacrificing the visual style we want.

If you found this interesting, please follow or even wish list us on Steam! Thanks! It helps quite a lot.