Shadows of Doubt is a detective stealth game set in a fully-simulated sci-fi metropolis! There's been a murder and it's up to you to solve it by any means necessary, with the condition that you keep a low profile. A unique mix of procedural generation and hand-crafted design enables every room of every building to be explored. Be sure to wishlist on Steam, join our Discord or read previous dev blog entries here!
Hi everybody, welcome back to our more-regular-than-ever dev blog! This time we're continuing to talk about the citizen visuals; Miles the voxel artist will take you through his workflow of creating clothing. Take it away Miles...
Last blog I talked about making voxel faces for the citizens in Shadows of Doubt and the challenges that come with that. This week, we’ll be looking at the modeling of the citizens as a whole and their outfits!
If you follow us on social media, you may have noticed that the citizens’ wardrobe selection has expanded beyond trench coats and trilbies. Don’t worry, you’ll still find this dapper detective look around the city. However, you’ll also see a range of other outfits; from casual jeans and shirts to snazzy dresses and to classy suits.
In this blog, I’ll run you through what it takes to create a new outfit for the game and the decisions I make when designing them.
Creating the Outfits
All designs start with a little bit of research. Usually, this entails googling 1920-80s clothing and finding some simple inspiration there. However, I’ll often look up outfits worn by celebrities from this time, or I’ll draw inspiration from noir films, such as ‘The Maltese Falcon'.
To model an outfit there are a few important limitations that need to be addressed to get it working in Shadows of Doubts. For the purposes of procedural generation, every outfit, ideally, can be worn by every citizen and have a random colour. Therefore, when an outfit is modelled, it is modelled six times. Three times for each body type we have, and then another three times so that there is a masculine and feminine version.
To get the random colours, the model is first created fully coloured so I can get a good idea of how it “should” look. It is then manually grey-scaled to allow the code to recolour it properly, and with this, I create the colour map to select each area to be recoloured differently. Generally, the outfits have 3 colours to be replaced: red, green and blue, however, I’ll also use black on the colour map to maintain certain colours from the base texture before being recoloured by the code, like a white shirt or black buttons.
Once this first version is completed each model needs to be checked to make sure it works with the animation and other outfits that it’ll randomly generate with. The outfits replace the models for the arms, legs, body, etc. so making sure that they all align properly and there are no oddities sticking out when a character is walking is important. A good amount of trial and error is needed, going back and forth between Unity and Qubicle, chopping off voxels here and there to ensure the outfit works well. Generally, the tops and the bottoms, as well as dresses, are built from a standardised base design and this helps reduce the amount of trial and error needed to rework the outfits to a good standard.
With voxel models, the texturing and the modelling is often one in the same process. Particularly for lower resolution voxel models. It’s very easy to simply retexture while working in Qubicle. Moreover, the folds of clothing and the surface texturing is baked into the base texture model, rather than using polygons. This means combining the texturing and modelling processes is important because it’ll help me make decisions as to how to get a good clothing “look”.
While it is desirable to make all tops and bottoms work together to get a huge diversity of procedurally generated outfits, there are some cases where this simply wouldn’t allow for enough shape variation. The biggest cause of this is that the tops and bottoms need to sit flush at the interface of where they meet at the waist. If this interface differs between each outfit there’s usually some weird clipping when you start to mix and match them.
To get around this there are a few “complete” outfits, these are ones that cover the full body and don’t mix and match several pieces. It’s far easier to create a unique shape if the whole outfit works as one. The gold jacket and white trousers in the screenshot above is one such example. Another example is the dresses. Which also provided another significant challenge…
There are no custom animations for the outfits, therefore for dresses, the design must allow for leg movement without the model deforming to keep the fixed voxel shape. As a result, the dresses are made as a solid objects because this means as the legs split apart for the walking animation they appear as one continuous surface. If they were hollow, you would essentially see the dress split apart too when walking.
A similar design is used for the trench coats, but, as these maintain the models for the upper legs a weird little wall of voxels is used to hide when the legs split apart when walking. However, this may need further work if it poses an issue during sitting animations where you can see the underside of the upper leg models.
Other notable unique outfits are those that are used for specific professions. For factory workers, I’ve created some lovely work overalls to wear instead of getting their trench coats dirty! And then for the police officers, we created a somewhat dystopian twist on the traditional British police uniform. They’ve got the vintage smart black uniform, and custodian helmet, however, we’ve attached a riot gear visor. This helps enforce the idea that they’re privatised security and gives them an impersonal feel as it obscures their identity.
Recently we introduced glasses and hats into the character generation – I find they really help add a great amount of personality to the characters, with very little effort.
This will be a niche reference, but in continuation of our internal 'this citizen looks like x person' game: This dude really reminds me of British vocalist Richard Hawley - Cole.
We also have a huge variety of hairstyles. Conveniently the hairstyles are designed to work with any head shape as they all follow the same structure, unlike the clothing. This means any single hairstyle can be used for all 6 head types.
Lastly, shoes! The shoes aren’t part of the outfits as such, because they can be an important clue for your detective work. Currently, there are 3 types of shoes, your bog-standard kind, boots and heels. They have a higher resolution to the rest of the citizens’ outfits to allow you to distinguish the detail on them.
Cole has recently spoken in a blog post about generating the personalities of citizens: Colepowered.com Eventually we would like to tie this into the citizens clothing choices. Therefore, someone who is happy and outgoing are more likely to wear brighter and outlandish outfits. And we can then use this to tailor specific outfits to the personalities so that there is a broad spectrum of personalities encompassed by the clothing.
Thanks Miles! Tune in this time next month for more...