Putting the 'role' back in role-playing games since 2002.
Good Old Games
Donate to Codex
News Content Gallery About Donate Discord Contact
  • Welcome to rpgcodex.net, a site dedicated to discussing computer based role-playing games in a free and open fashion. We're less strict than other forums, but please refer to the rules.

    "This message is awaiting moderator approval": All new users must pass through our moderation queue before they will be able to post normally. Until your account has "passed" your posts will only be visible to yourself (and moderators) until they are approved. Give us a week to get around to approving / deleting / ignoring your mundane opinion on crap before hassling us about it. Once you have passed the moderation period (think of it as a test), you will be able to post normally, just like all the other retards.

Broken Roads - turn-based Australian post-apocalyptic RPG with "unique morality system"


I post news
Staff member
Jan 28, 2011
RPG Wokedex Dead State Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Wasteland 2 Shadorwun: Hong Kong Divinity: Original Sin 2 A Beautifully Desolate Campaign Pillars of Eternity 2: Deadfire Pathfinder: Kingmaker Pathfinder: Kingmaker



Our VFX and Technical Artist, Ryan Gee, does a lot of work to breathe life into our representations of Western Australia. In this blog, he discusses differences in vegetation from one end of the Wheatbelt to the other, how he created a tool to paint the correct biomes and unique wind patterns onto existing levels, and how he uses a "non-destructive" workflow to make collaboration between departments as easy as hitting "regenerate".

With Broken Roads being set in the Australian Outback, we knew it was important to create diverse and vibrant environments to immerse players in a truly Australian-flavored apocalypse. Australia has a huge range of flora and fauna that varies wildly by region, and many of which aren’t found anywhere else in the world. As the technical and VFX artist at Drop Bear Bytes, one of the coolest parts of my job has been helping the art and level design teams fill our apocalyptic world with trees and plants across the whole range of the outback, from forests to barren wastelands.

As a technical artist, I get to work in the wonderful area in between pure art, pure programming, and the mysterious art of level design. One of the immediate challenges we faced was how to fill large areas with dense vegetation (without having to place each bush and twig by hand), and how to vary the vegetation according to the different regions and areas of the game. As a Canadian currently living in Spain, I’ve not yet had a chance to visit Australia, so I started off on a virtual road trip, thanks to Google Maps.


After having visited each of the real-world locations of the scenes in the game, I had a nice overview of what each area’s vegetation looked like. Armed with this, I was able to make some categorizations of the various biomes, and typical plants, trees, and scrub. However, there was still the challenge of filling large environments with regionally correct vegetation, now that I understood what it should look like.

My solution was to create a custom tool, creatively named the Vegetation Tool™ (I’m not the best with creative naming). It allows our level designer, Luke, to paint in the density of vegetation across the scene, and then spawn vegetation according to a pre-defined biome. These biomes are made of a list of regionally correct plants, debris, grass, rocks, etc, and some information describing how they grow and are scattered. This creates a non-destructive workflow; it ensures everything is editable, reversible, and allows the art team to work on or change any individual assets without level design having to redo vegetation every time (just regenerate vegetation with the updated biome). Here’s how that works in practice:

The gray cubes show the painted vegetation density, which can be painted either by hand or according to a pattern as shown above. The tool in the video is using a fairly dense green biome, but this can be modified or swapped out for any other biome set, and just regenerated.

The generation process roughly simulates the root density of each plant, and how various plants form clumps as a result, collecting loose dirt, debris, and twigs around them. The generation algorithm can also adapt to other trees or objects that have been manually placed in a level if more artistic control is needed over their exact locations.

Creating this tool has allowed us to rapidly fill levels with the patchy, scrubby vegetation that’s common across the outback, and facilitates the workflow between level design and art production. However, placing vegetation is only part of the process: it still needed to be animated.

(Beware, there be technical dragons ahead)
Realistic wind animation proved to be a challenge, and the first version I came up with looked laughably like seaweed rippling underwater. However, we needed something with sufficiently realistic motion, customizability according to environment or game needs, and something that wasn’t too much of a headache for the art team to create models and textures for. Taking inspiration from a GDC talk that Guerilla Games presented on the subject, I came up with the current system.

First, there’s a global wind manager that controls the direction and strength of the wind in every scene. This allows each location to have different settings, and for those settings to be changed if, say, a dust devil or sand storm rolls in mid-quest. Below is an example of what the primary wind vector looks like in-scene:

The tree and vegetation models also have information baked into their vertex color channels: the red channel contains a mask, used if we’re animating cloth or something other than vegetation; the green channel contains an index value for each separate part of the tree, and the blue channel contains a value for overall flexibility. These are quick and easy to apply to each model, and the rest of the animation is done in a shader.

The shader calculates bending, based on height and flexibility, as well as detailed fine movements for leaves, small branches, and grass. The amount of bending is controlled by the global wind settings and texture, and offset by the index in the green color channel, to give individual parts of the tree their own sway and non-uniform movement.

One of the final steps in adding flora to our environments is adding grass. This posed a similar challenge to spawning vegetation, as it required an editable system that could be easily modified, but also quick to render to allow for thick fields in some of the lusher regions of the game. To this end I created the Grass Tool™ for easily painting grass into scenes, that can also be hooked up to the Vegetation Tool™ to automatically generate grass based on the same density settings as the rest of the environment uses. Additionally, the grass can be animated using the same global wind patterns as the rest of the vegetation, allowing for ripples of wind to flow through grassy fields.

The difficult part with rendering grass is that in essence, GPUs can render lots of grass, really really fast, but the problem is that everything else about the grass (like where it is, how big it is, its rotation, etc) starts on the CPU, and getting it to the GPU is really slow. To solve this, the grass is rendered with GPU instancing, which effectively bundles up all the information about the grass into one package instead of a zillion small ones, and lets the GPU do what it does best and sort out all the information for each piece of grass.

To make it even faster, we can use a technique called CPU binning (tech artists have very fun lingo). This allows us to limit the size of the package the CPU passes to the GPU (as opposed to passing information about every bit of grass in a scene) by roughly guessing what the camera can see at any given moment. This allows us to have hundreds of thousands of grass cards in a scene with minimal performance impact.

TLDR: GPU go brrr, grass go zoom.

If you made it through all that, thanks for reading! And if you just skipped to the tldr, thanks as well, just a little bit less. Hopefully this article provided a little glimpse into some of the tech that makes Broken Roads tick, and exactly what on earth technical artists do anyway. :)

Ryan Gee, VFX & Technical Artist
Drop Bear Bytes


I post news
Staff member
Jan 28, 2011
RPG Wokedex Dead State Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Wasteland 2 Shadorwun: Hong Kong Divinity: Original Sin 2 A Beautifully Desolate Campaign Pillars of Eternity 2: Deadfire Pathfinder: Kingmaker Pathfinder: Kingmaker



In early June 2022, we were excited to welcome a local high school work experience candidate, Will C., to join Drop Bear Bytes on our distributed journey through game development. During the course of a week, Will met with the leads of different departments and got insider insight into what it’s like to work across 3 different time zones, give a report in each of our daily standups, and provide reproduction steps for some of our more pernicious bugs.

We sat down with Will on his last day and asked him the hard questions. His responses are below.

What was the most unexpected aspect of your work experience at Drop Bear Bytes?

“That despite there being team members based all over the world the fact that you guys can still keep in touch regularly and always be up to date and connected.”

What's something you learned about one of the disciplines (level design, business, animation, art, narrative design) that you'd never thought of before?

“That even if you specialise in an area that with the modern tools being easy to use you can work on other areas of game design.”

As an RTS fan, what aspects of your playstyle do you think were most beneficial to your time playing Broken Roads, and which parts did you find difficult?

“I found that the skill system in its current state is obviously not finished but there are no clear explanations for the skills but obviously this will improve with time, but all around despite not playing to many RPGs the game was easy to get a handle on.”

Has this experience reinforced your desire to become a games programmer, or has it opened your eyes to other career paths? Why?

“It has opened my eyes to other possibilities like level design, but I will most likely stick with programming but not just programming.”

How well do you feel Broken Roads captures Australian flavour/characters? Did anything stand out in particular?

“You have captured the animals for sure. They are very well detailed and I do like the wombat rider (SPOILERS!!! - Ed) and definitely the slang as well, but I don't think that would have been hard, as most of you do live in Australia!”

Did you have a favourite location / scene in the game, and which characters did you enjoy talking to the most?

“My favourite location would probably be Merredin because it captures post-apocalyptic and people have reverted to the early 1900s. One of them was Jonesy before (SPOILERS!!! - Ed), and probably Mad as well. She was a standout character to talk to, especially at Bally Bally Hall because she doesn't like you at the start, but if you respond correctly she is like, "mmm," and begins to like you.”

Do you agree that you had the greatest work experience week out of anyone in your class, and in fact most likely the greatest of all time?

“I very much agree with the fact that I had one of the greatest experiences of all time. This was a great experience for someone who wants to make games. It very much opened my eyes. This work experience will be contributing to the graphics card I am saving up for.”

Give us a piece of wisdom to round out this interview - anything you want other people to know, that you think isn't talked about often enough.

“That if you want to go into game design/programming whether it's making your own game or joining a larger studio that people are helpful and are really nice and this experience will leave me with a lasting experience.”
Last edited:


I post news
Staff member
Jan 28, 2011
RPG Wokedex Dead State Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Wasteland 2 Shadorwun: Hong Kong Divinity: Original Sin 2 A Beautifully Desolate Campaign Pillars of Eternity 2: Deadfire Pathfinder: Kingmaker Pathfinder: Kingmaker

Cassandra Lee, our Mid-Level Concept Artist, recorded this video creating the portrait for Tilly, one of the younger characters in Broken Roads. It's been sped up to 4x in this timelapse - enjoy!

Music is 'Koorda' by Drop Bear Bytes' Audio Lead and Composer, Tim Sunderland, from the Broken Roads soundtrack.


I post news
Staff member
Jan 28, 2011
RPG Wokedex Dead State Divinity: Original Sin Project: Eternity Torment: Tides of Numenera Wasteland 2 Shadorwun: Hong Kong Divinity: Original Sin 2 A Beautifully Desolate Campaign Pillars of Eternity 2: Deadfire Pathfinder: Kingmaker Pathfinder: Kingmaker


This week we are showing off some of the work by our Mid-Level Concept Artist, Cassandra Lee. Cassy recorded herself creating this portrait of Tilly, one of the young girls living in a hidden community somewhere in Broken Roads. The recording has been sped up into the timelapse which you can see below. Cassy then describes her process and guides us through each step when creating the portraits you see in the game. Enjoy!



Each portrait is done using rendered images of the 3D model and 3D texture as reference in order to keep each portrait looking consistent with the model in game and to create a more efficient work flow.
I begin by importing the rendered images of the model and texture into my Photoshop file and making sure the character’s face fits within the specific guides set in the PSD template I created for myself. I will start by tracing over the 3D model’s face using symmetry at first to speed things up and then later without the symmetry tool on so it doesn’t look too symmetrical and unnatural. I use a tapered brush with a pencil texture to give it that sketchy drawn feel. I might keep the line art all on one layer or draw each element on different layers depending on what works best for me on that particular portrait.



Once all the line art is done I will fill in one solid color on a layer underneath with a big flat solid brush or using the lasso and paint bucket fill tool.
From here I create solid colors on separate layers for each element; the hair, clothes, eyes and so on and then clip each layer onto the main fill layer using clipping masks.
After this I add the rendered images of the 3D model and texture on top and play around with the opacity and adjustment layers until I find what works best for me. I add these images on top of the flat colors to add some ambient occlusion and the color palette from the 3D texture. This is a bit of a back and forth process as I figure out what works best for each portrait.


I start painting on each separate layer with a combination of different textured brushes. I usually start with the skin and face first to establish the direction of the lighting and the overall color tone and move out from there, using smaller finer brush details on the face and larger brushier strokes on the clothes, hair and other accessories. I will also add various multiply layers on top using the lasso tool to create hard cast shadows in areas where they are needed or soft linear dodge layers on the areas catching the light such as the cheeks, nose and forehead.


At some point I color in the line art layers by locking the transparency of the layer and picking a darker color that corresponds nicely with the lighter color that I’m picking from.
Throughout this process I am continually checking back and forth between my 3D texture reference to make sure the portrait is consistent and I am not forgetting any small details. Towards the end of the process I spend time on small details around the eyes, making sure the eyelashes, shadows and highlights within the eyes look good and make the portrait come alive.
One significant detail to add is subsurface scattering. I add an overlay layer on top of the skin and paint in some reddish brushstrokes along the rim of the nose and the edge of shadows to help bring in the effect of the sunlight bouncing through the transparency of the skin.
For Tilly I made sure to add in some cute freckles!


Now I duplicate all these painting layers and flatten them. On top of this one flat layer I paint in the last finishing touches. I add in separate strokes to indicate strands of free flowing hair and a cool toned rim light on the left side of the portrait, making sure the rim light is not painted as a solid line but helps inform the volume of the shapes I am painting. I ramp up the brightness and contrast with an adjustment layer and start adding in those last few bright specular highlights on the tip of the nose and one or two other places with a sharp edged lasso tool.
I might adjust the hue of the background color to fit better with the colors of the character. I end with a soft warm glowing gradient on a low opacity linear dodge layer on the right side of the portrait to give that feeling of warm sunlight being cast over the character.


You can see more of Cassy’s work on her Artstation portfolio at https://www.artstation.com/cassandra_lee, or follow her on Twitter at https://twitter.com/_Cassandra_Lee_
Top Bottom