ColePowered Games Ltd.
  • Navigation
    • Shadows of Doubt
    • Concrete Jungle
    • Older Projects
    • Jobs
    • Bug Report/Support
    • Contact
  • Search Icon
Search Icon

ColePowered Games Ltd.

The Game development adventures of Cole Jefferies.

Shadows of Doubt DevBlog #17: Ventilation Shafts

Shadows of Doubt DevBlog #17: Ventilation Shafts

September 6, 2019 colej Comments 1 comment

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. Citizens go about their lives independent of the player as you watch from the Shadows, in search of crucial information. Read previous dev blog entries here.

I’ve been working on quite an exciting new feature for Shadows this month: Procedurally generated ventilation shafts! If you don’t play many games then that might sound incredibly boring, but to any seasoned FPS or immersive sim player then hopefully that sounds excellent.

One of the biggest things missing from the gameplay right now is multiple ways to get in and out of locations: The choice-driven stealth gameplay I’m shooting for requires that the player is given a choice in how to infiltrate their places of interest. Before this update, there was only the front door, and in the future, there will be yet more options including fire escapes and windows. But one of the biggest tasks on my to-do list was these air ducts that the player can crawl through to get places they shouldn’t.

Originally the ducts appeared on the exterior of buildings by accident, but I figured they looked way too cool to get rid of.

Previously in the project, I briefly toyed with having a more realistic air duct system as described in this article. I have kept a few issues in mind, although in the end, I decided to prioritize gameplay over realism- and with that I decided to leave my air ducts at the mercy of procedural generation. The air ducts are completely procedurally generated within each building. Even if two or more share a similar floor plan then the shaft system within each will still be completely different, and your infiltration routes and options will be different too.

Going into the technical side of things a little: Basically, in the configuration settings I have for each room, I’ve added range variables for how many air vents can be added. For example, a bathroom might have one, or a kitchen, but less likely a lounge area. So when the rooms are generated they will also look for a place to put an air vent; often in the ceiling but sometimes high up on a wall or (less likely) closer to ground level on a wall. So now we’ve got all the points where we want the vents to be in the building.

Next up I map all the available space that the ducts can use. Mostly this is the space between ceiling and floors, but it can also cover spaces inside maintenance closets and even space outside the building. Now I have this space mapped out and the points I need to connect, I can simply use an A* pathfinding routine to connect points together- this becomes the path of the ducts. With every path calculation, I can weight already-placed ducts so the game won’t create air ducts which run immediately parallel to each other.

This is what the duct system looks like minus room and building models.

As with the walls/floors/ceilings, I have a different model for each possible turn/junction of duct- this is how it’s possible to create them. They all share the same material within unity, so I can easily combine them together to form one model and keep performance high.

It’s working really nicely! When inside the player can freely climb up and down vertical duct sections too. One last thing that I need to work on (aside from a couple of misc wall bugs) is enabling ducts to be discovered and mapped on the minimap. It would be cool to maybe be able to discover blueprints that map out the ducts and vents of the whole building- adding incentive to research your places of interest before infiltration.

Anyways, that’s it for this update. Progress is going nicely on the game- next up is a focus on improving the AI some more and fleshing out the side mission I showed off a few weeks back. Stay tuned for more soon!

Twitter
Follow
Facebook
RSS

Development Blog, Police Department Game, Shadows of Doubt

Post navigation

NEXT
Shadows of Doubt DevBlog #18: Scripted Missions in a Procedural World
PREVIOUS
Shadows of Doubt DevBlog #16: The Game is Afoot!

One thought on “Shadows of Doubt DevBlog #17: Ventilation Shafts”

  1. Avatar Jack Elliott Merlot says:
    September 13, 2019 at 12:12 pm

    Wow! Cool concept, but I admit the thing that really impresses me are the renderings giving a few different perspectives on your algorithmic implentation using generative code.

    Those renderings are great! I am not a graphics guy so I just love seeing this stage of development. I have heard of Unity but never had any chance to see what it’s like. Thank you!

    Reply

Leave a Reply Cancel reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

About

Indie Games developer, currently working on detective simulator game ‘Shadows of Doubt’. I also made Concrete Jungle.

Twitter
Facebook
Instagram
YouTube
IndieDB

Development Blog

  • Shadows of Doubt
  • Concrete Jungle

Previously on ColePowered…

  • October 2022 (1)
  • March 2022 (1)
  • December 2021 (1)
  • October 2021 (1)
  • August 2021 (1)
  • July 2021 (1)
  • June 2021 (1)
  • May 2021 (1)
  • January 2021 (1)
  • October 2020 (1)
  • July 2020 (2)
  • March 2020 (2)
  • January 2020 (1)
  • December 2019 (1)
  • November 2019 (1)
  • September 2019 (1)
  • August 2019 (1)
  • April 2019 (1)
  • March 2019 (2)
  • February 2019 (3)
  • January 2019 (1)
  • November 2018 (1)
  • October 2018 (2)
  • September 2018 (1)
  • August 2018 (1)
  • July 2018 (3)
  • June 2018 (2)
  • April 2018 (1)
  • August 2017 (1)
  • May 2017 (1)
  • March 2017 (1)
  • January 2017 (1)
  • December 2016 (1)
  • September 2016 (2)
  • August 2016 (1)
  • September 2015 (3)
  • August 2015 (1)
  • July 2015 (1)
  • June 2015 (3)
  • May 2015 (4)
  • April 2015 (4)
  • March 2015 (4)
  • February 2015 (4)
  • January 2015 (4)
  • December 2014 (5)
  • November 2014 (3)
  • October 2014 (3)
  • August 2014 (1)
  • July 2014 (1)
  • June 2014 (1)
  • May 2014 (2)
  • March 2014 (3)
  • September 2013 (2)
  • July 2013 (3)
  • June 2013 (3)
  • May 2013 (2)
  • April 2013 (4)
  • March 2013 (4)
  • January 2013 (1)
  • December 2012 (1)
  • November 2012 (2)
  • October 2012 (1)
  • August 2012 (1)
  • July 2012 (2)
  • June 2012 (2)
  • April 2012 (4)
  • March 2012 (2)
  • February 2012 (3)
  • January 2012 (3)
  • December 2011 (2)
  • November 2011 (4)
  • October 2011 (2)
© 2023   Copyright. All Rights Reserved. Designed by Freepik