Shadows of Doubt cover
Shadows of Doubt screenshot
Genre: Role-playing (RPG), Adventure, Indie

Shadows of Doubt

Shadows of Doubt DevBlog #23: Generating Citizens (Video Update)


Hi everybody, there's a fresh video update for you today! This is part one of two, and it's about how I'm going about creating the simulated citizens in Shadows of Doubt.

[previewyoutube="beGH92yvpEc;full"]

This is the first part of a dive into the way I've chosen to generate a simulated citizen's personality within the game world. It's been a challenging process, and often for little immediate gain. However, as the game comes together more and more, I'm finally seeing the fruits of this prior hard work.

The real goal of all this is to create a world with procedural characters (and environments) that aren't just window dressing. I'm super excited about the potential of all this as we continue to flesh out the game. In the next video, I'll talk some more about the tools we're using to do this, and show how everything talked about in this video manifests within the game world.

Shadows of Doubt DevBlog #22: Doors Galore

Doors! What are they good for?! Breaking and entering!

Everybody knows doors are the bane of every game developer’s life, so I thought I’d write about how I’ve been handling them in Shadows. This post may contain what I would consider some mechanical spoilers; that is, a few cool things it may be fun to discover in the game without reading about them first. If that bothers you then it might be best to skip this one.

The reason doors are difficult to get right is that by default, their real-life movement can be fundamentally incompatible with slick feeling first-person movement. The prime culprit is which way they open; in real life double-swinging, doors are pretty rare outside of a western saloon. In games though, we always expect them to open away from the player, so we don’t suddenly have a big wad of box collider coming towards us. If you’ve ever played a game where the doors open towards a player then you may have noticed just how awkward that feels. It’s a pretty easy fix though, just make them always open away from the person that opened them.

On the technical side of things, the doors in Shadows also act as my ‘culling portals’. As the game is procedurally generated, I had to come up with my own system for handling culling. The game has a lot going on, and there’s no way we can render everything in the game at any one time. The solution to this is only to render what the player can see. To help with this, Shadows of doubt breaks everything down into rooms connected with doors (even the streets are behind the scenes treated the same as rooms). Doors act as the portal between them and allows the game to create trees or groups of rooms that should be visible to the player. To cut a very long, quite boring technical explanation short; doors in shadows help me narrow down what can be visible to the player at any one time. Useful!


The game isn’t rendering a whole lot behind closed doors.

After getting the basics right it was time to move onto the fun stuff. Film noir loves doors. It loves passing notes under them, listening through them, and even peeking through their dirty keyholes. I wanted this game to celebrate the door too. Here are some cool mechanics and design decisions that I’ve put in the game to help achieve that:

Opening and closing are pretty simple, but when trespassing your character will automatically do it much more quietly.

You can knock on most doors, and if someone is home they should answer. Unless they’re asleep of course, in which case if you keep knocking your character will automatically knock louder until you’re banging on the door!



A lot of doors can be locked. If you have the key, you can interact with the handle to lock or unlock it. If you don’t have the key, after trying the handle you’ll get the option to lock-pick it!

Before you do that though, it’s always worth checking around; there might be a hidden spare key under the welcome mat or in a nearby plant!



Lock-picking is fairly straightforward, you just need to focus on the handle to increase the progress bar. You can look away to check if anybody might see you (it’s classed as an illegal activity), but the progress bar won’t fill. Super cool idea to add in future; brass doorknobs featuring real-time reflections so you can see behind you while lock-picking!



Lock-picks will run out and this display shows you how many you are going to need. They are easily found, however; both paperclips and hair clips can be used as lock-picks and are easily stolen without anyone noticing.

You can peek under doors too! Luckily most doors in the world of Shadows of Doubt are poorly-fitted and have enough of a gap underneath for you to see through! Useful for seeing if someone is home. This actually started as me getting the scale of the actual door a little off, I then realised it would make a cool feature.

More importantly, though, the gap is big enough to pass notes under. What a useful trope!

Last but not least: Is a door in your way? Don’t like its flimsy poorly-measured craftmanship? If you sprint towards a door you’ll get the option to shoulder-barge it. It might take a few tries depending on its door strength, but it’s very cool and sometimes worth it. It may alert the neighbors though, and attract all kinds of unwanted attention!



That’s it! It’s amazing how much cool functionality you can build around something so ubiquitous. Got any more cool ideas I can put in? Give me a shout over on the Shadows of Doubt Discord Chanel. If you haven’t already, please wishlist us on Steam.

Shadows of Doubt DevBlog #21: How Voxels Saved the Project

EGX Rezzed digital is happening right now (26th-28th!) If you're a member of the press and want to get your hands on what was going to be shown at Rezzed, please get in touch!

From the confines of coronavirus lockdown, I bring you a brand new and over-due Shadows of Doubt development diary!

There have been points over the last 2.5 years in this project where I've felt like giving up; it's such a large ambitious project that at times it has felt like I had bitten off more than I can chew. I'll likely write about the challenges in more detail with another post, but for this one, I wanted to share with you perhaps the biggest saviour in terms of production viability: Voxels.



Back in the pre-art asset days of this project, when it was still a management game, I often wondered about what direction the art style would take. Realism was off the table due to workload, but I really wanted to explore a pixel art approach. As the game shifted to 3D, and then entirely to first-person, voxels started looking like the way to go.

This turned out to be perhaps the biggest decision in actually making this ambitious project actually somewhat do-able with a small team and small budget: The reason being that the turnaround of most art assets is minuscule in comparison to anything else.

It's arguable that the voxels are a little bit of a mismatch in terms of what people expect. They're associated with Minecraft and a general cartoonishness, which doesn't fit the tone of this project at all. On the other hand, they do effectively evoke a low-fidelity style, something which has recently taken off in some really, really cool projects that I adore. I think in an ideal world I would choose a low-fi, low ploy art direction over the voxels as it's more effective at conveying the atmosphere that I want. But crucially I also believe this would have resulted in increased turnaround time in regards to art assets. I'm happy with the trade-off.



When used in conjunction with the unity high definition pipeline it really pops. There's something about the use of voxels and modern render technology that makes something look really cool. I'm not sure how else to describe it, because logically the two should be at odds with each other? Maybe it evokes the way we remember old games of our past; always looking better than they actually did. As if they were brought to life, but not replacing that low definition that allowed us to fill the gaps with our imagination.

Voxels, then. After a bit of research, it became clear that the main contender of voxel software is MagicaVoxel, an extremely awesome bit of free software that pretty much all voxel artists use. Great, that's an easy decision then? Well no. Although it does a whole bunch of stuff really well unless they've changed it since I last looked at it, it doesn't do two very important things that I figured I needed early on in this project:


  • Be able to convert, or 'voxelize' traditional 3D meshes into voxels. This is important as I decided quite early on, to make this manageable I wanted to re-use some of the 3D building models I made for Concrete Jungle for this project.

  • Be able to output voxel meshes with traditional UV maps instead of an atlas. This was important as I wanted to make normal maps for my models, and not just have them all as a flat texture. This was important in order to move away from the cartoon flat visuals and towards the low-fi look.


Then office co-worker Nick Gunn, who works on Industries of Titan (which uses voxels to crazy-awesome effect) recommended looking at Qubicle. It can do both of these things and also has the added bonus of being quite good at optimizing meshes for use in Unity: Something which magicaVoxel at the time also lacked.



There was a short learning phase; at first, Qubicle being limited to isometric view really bugged me, but I soon got used to it. I also began to establish my workflow. What was the best way to go from nothing to a final in-game model? My original vision involved using a pixel-art setup in Photoshop to manually edit the outputted Qubicle texture maps. I would use a really cool colour indexing technique to make everything look more like pixel art than anything else. It kind of worked in practice, but it soon became clear that to produce effective art assets quickly, I really needed to be able to paint directly onto the model. Photoshop does have this capability, but frustratingly there is no option for using point filtering, so my pixel art was lost to a horrible soup of texture when projected onto the model in Photoshop.

I explored some other options, but frustratingly I couldn't find anything that allowed me to UV paint and that didn't force the texture to be blurred. In the end, out of ease more than anything else, I decided to import my pixel art colour palettes into Qubicle and just use that to make the texture maps too.

Actually, after a brief adjustment period, I grew to really like it. It's pretty simplistic — nothing fancy. But it has the essentials, plus it's quick and easy to add noise, which is nice as it again makes it easy to avoid the flat surfaces that look cartoon-like. It was probably the tool I was looking for all along for both modelling and texturing. As I grew more used to using it, prop creation time reduced dramatically, and now most basic props can be created from scratch in under an hour, and for smaller things about half that.

[previewyoutube="HO2yBNIHgPY;full"]
This sideboard took around an hour to go from nothing to working in-game model with wood colour variants and functioning cabinets and drawers.

Unfortunately, Qubicle doesn't let you output the texture map alone, so my workaround for creating multiple maps involves exporting my original model with a colour map texture, then duplicating it in Qubicle and turning it to greyscale and creating a heightmap with it. Then, I export this as a separate model (and along with it it's UV texture). I sometimes do this a third time to create a smoothness or metallic map too. Then it's a case of putting all these textures together into a unity material (unity can automatically create a normal map from a height map) and we're done!



The final bit of magic sauce I use is a special custom shader than can colour things without needing a whole new texture. I've talked about it in the past here, but what it does is allow another texture map to define unique colours to apply to the model. So for example, I can take a model of a bed and apply a special texture map to it that keys out the pillows in red and duvet in green, with the rest black. The shader will colour black areas with the base texture map, which will be the same for all bed model instances. The red and green keyed areas, however, will draw colours from my pre-defined colour pallettes which consist of 5 colours and are generated for each individual room. This is how the game can generate interiors with colours that are complementary to each other. With enough assets and this technique, I hope that we're able to move away from the cookie-cutter effect you see in many procedurally generated games.



At the moment you've probably seen the same few props hanging around in my screenshots, but over the course of development during the next year or so you should see this greatly expand. Not least because we're planning on adding a 3D artist to the team this year.

Anyway, that's my 3D asset workflow, I hope some out there found it useful and/or interesting. I'm really excited to see the game environments grow into more unique and interesting. Don't forget to wishlist, and join our Discord if you're interested in the project— it really helps!

Update Regarding EGX Rezzed

What an awful time we’re going through. I hope everybody reading this is safe, practicing social distancing and washing their hands regularly.

Up until a couple of weeks ago, we were planning for this week to feature the first public demoing of Shadows at EGX Rezzed in London. Due to obvious reasons that’s no longer happening. The event has been moved to July 2nd, and although I feel this may be a little optimistic given the situation, we will keep a close eye on it and see how things pan out.

Given this then, and my lack of development updates recently (mostly due to prep for this), I’m planning on upping my content in the coming weeks. I’ve got several new features that I could easily write a dev blog entry about, and we’re long overdue a new video or two! The game has been coming along really well during the first quarter of the year, and I’m really keen to share the progress with you all, Rezzed or no Rezzed. Hopefully, this will be a distraction for us both. Take care all!

Shadows of Doubt DevBlog #20: Roadmap 2020

Happy new year! For this update, I figured I'd look back at last year's roadmap and evaluate where the game is, and where it's going this year.

This time last year was a weird time for the project. After a rush to get the game into a playable state by Xmas, I took a long hard look at it. I spent the bulk of last year's roadmap post talking about how the game was lacking cohesion and frankly felt underbaked and not fun. Something had to change, the game wasn't suddenly going to become more fun by just ploughing through like I had been doing (out of blind hope and optimism more than anything).

I've reached these points in projects before, where you have to merge your hopeful, ambitious plans with what's realistic, workable, and most importantly, fun. To start the year, I decided on some crucial changes: Specifically, the management angle just wasn't cutting it (why leave it to other detectives to do fun detective stuff). So that was ditched in favour of making the project a purely player-driven game. Stealth was to be the new driving gameplay mechanic that created peril and made things exciting.

Turns out that was the right move, as this immediately removed a lot of janky complexity and allowed me to focus on what this game has ended up becoming: A stealth game where you break into places you shouldn't in search of clues and information. This substantial pivot as first described in the January blog post was much more work than I realised at the time of writing however, as almost all my targets were pushed back. In fact, last year's roadmap reads more like this year's. This is not uncommon in gamedev though: It's so hard to predict timescales. Something you thought was going to be quick takes ages and vice versa. More frequently than that though, the little bits that you barely ration time for, end up piling up and taking large chunks of your time.

It's not all doom and gloom though, the game is lightyears ahead of where it was this time last year. Not only is it properly playable now, but it's also fun and extremely atmospheric. I've got a much more solid idea of what it is and what needs to be done now, and the development progress is gaining a lot of momentum. Most of the more complex systems are functional, and the development itself is easier-going as a result. The project has entered the fun phase of development; where the things you've worked hard on are coming together and you frequently catch glimpses of the fruits of your labour.

2019 was the year this project progressed from a collection of vague but cool ideas into something real and playable. I'm really pleased about that, as this project in the early days was tough going— there were several times I almost chose to ditch it in favour of something simpler.

Here's what actually happened in response to my plans at the start of the year, goal-by-goal:

"Switch the project to unity’s HDRP."

I did this! It went smoothly and took about as long as I thought it would. In December I updated to the latest HDRP/Unity version and it's looking better than ever. Success!






Very recently I've been experimenting with new volumetric lighting and fog in HDRP.

"To make the stealth interesting, I need to start thinking more about the environments. Rooms and buildings need multiple entrances and exits (think air vents, windows, fire escapes etc). I’ve got plans to overhaul the generation of interiors that I’m super excited about."

Mostly did this. Air vents are in, but that's about the only alternate entrance/exit. Most of Q1 was spent working on the last sentence— refactoring the way the game handles environments. I ended up making a pretty nifty floor editor along with procedurally generated interiors, an essential addition to the game, which was well worth the time. This took up the remaining quarter though, and I didn't get the fire escapes or windows as entrances/exits done.

"I want to get a Steam page up as soon as possible."

I did this one, although it arrived after Q1. I wanted to at least have some gameplay to show before I set up a page.

"April 4th: Rezzed 2019. I’d love to demo the game at Rezzed, but getting something presentable enough to demo in time will be very tough."

Didn't manage this, getting something decent by April 2019 was a tough ask and I'm glad I didn't try and rush anything. Knowing the state of the game in Q1 last year, it would have ended up a mess. I'm pleased to say the game is in a much better position this year though, and we're thinking of demoing at Rezzed 2020! (Btw Rezzed is an indie-focused game show in London for those who aren't familiar).

"Expansion of citizen models and visuals; there’s a tonne of data being simulated but none of it is visual right now because I only have 1 basic character model."

I've been holding off on this one for ages, as the plan was to hire someone to make character models. As the funding we need for this hasn't materialised, we've still got the basic models and (lack of) animation from this time last year. The characters are starting to feel off as they're so far behind the fidelity of the rest of the game. There's a decent chance they are improved before demoing at Rezzed this year.

"Expansion of exterior models- there’s only 1 building model in the game at present."

No other buildings yet, but I've been working on getting the framework for them right. I'll be looking at adding new buildings very soon, and I'm quite excited about it! A fail though in terms of my goals.

"Expansion of AI behaviours. What I have is a decent foundation, but I need to work on their routines to give the player more interesting stories to discover."

The AI has been expanded a lot since this time last year, in fact, they've been completely rewritten. They are much more dynamic and react to the player properly making stealth possible, although they are still very janky. Big improvements but nowhere near a finished state.

"December 2019: First early access version. This is a best-case scenario, but it’s something that I’m going to be aiming for. I’m not going to force this one- I won’t release anything that I’m not happy with or something that’s unplayable."

I knew this was very optimistic even at the time, but December seemed like such a long way away! Not in 2019, but dare I say early access in late 2020 is looking a little more realistic? No promises or I'll have to write my 2021 roadmap as apologetically as this one!

There are loads of 'smaller' completed features I didn't write about in last years post though: Revamped UI, procedurally decorated apartments, performance optimizations, elevators— the list is extensive.

So what's the 2020 roadmap?

Quarter 1 2020

Polish up the game with the goal of presenting it at Rezzed in London at the end of March. This means fixing bugs, adding a couple of smaller features and brining stuff that's 'half-way done' up to 'pretty much done'. Get some more content in there, hopefully, some new characters models and animations along with more environmental items and at least 1 new building to make the city more varied.

Quarter 2 2020

Flesh out the gameplay features. CCTV, hacking, tracing phone calls. Foundations of the skill systems and progression. Cool detective stuff that opens up the gameplay.

Quarter 3 2020

By this point, I should know if early access by the end of the year is feasible. If it is then it will be a case of adding content throughout this quarter until I feel we have something that's worth your time and money.

If we are able to hit early access this year, the first build will likely feature the first story mission (already done but not polished), or 2 plus a nearly-complete sandbox experience. By that, I mean enough varied side missions and incentives to progress skills/items. There's a couple of cool ideas that I've kept under wraps in terms of what the player can progress towards, but I'll write about that another time instead of spoiling it here.

Quarter 4 2020

Gearing up for EA. Polishing, fixing bugs and adding minor content. Playtesting. IF we don't hit EA this year, we should by this point at least have a pretty solid date in mind for when that's achievable.

That caps off my new roadmap, and I'm feeling pretty good about 2020! Don't forget to wishlist the game on Steam if you haven't already, and head on over to our Discord server too.

Shadows of Doubt DevBlog #19: Designing a Detective Toolkit

Hi all, I’ve recorded a new video update! This one talks about the interface changes I’ve been working on recently, and how they are effectively a detective’s toolkit that allows the player to manage their case.

[previewyoutube="kJgpYbkGyZ4;full"]

Shadows of Doubt DevBlog #18: Scripted Missions in a Procedural World

Hi all, it’s been another while since the last update. The game’s at a good point now where it makes more sense to show you cool stuff rather than simply write it, so here’s the first Shadows of Doubt video update! In this one, I talk about how the game’s scripted missions work with the game’s procedural world. Enjoy!

[previewyoutube="IjCKKHkhakY;full"]

Welcome to the Shadows of Doubt Steam Page/Community!

Hi everyone! It's been a while coming but we finally have a Steam page for the game, along with all the community features Steam provides. Hopefully, you are reading this because you're interested in the game- I'll try my best to provide frequent updates on here, as well as on several other portals such as Discord and IndieDB (more links below).

I'm really excited to be able to work on this game; it's kinda my dream project. So far it's been funded entirely by my last game Concrete Jungle, although I am currently looking for a publisher to team up with, so if that's you, please get in touch here.

I should say upfront the game is looking a lot further along than it actually is- at the time of writing this I'm still ~2 months off something I would be happy to call the first internal alpha build, so to those eager to play, please realize it'll be a while yet (at least a year)! BUT I'm super excited to share the development journey with you all.

Full list of links below! If you're looking to read some more about the game, I've been keeping a fairly regular development blog for the last year or so: That's a good place to start!



Sites


Official website
Company website
Press Kit

Social Media


Discord
Twitter (developer)
Twitter (game)
Twitter (company)
Facebook
Instagram
YouTube

Development Blogs


IndieDB
TIGSource

Mailing List


Subscribe