Development News

On the Road to a Free Demo

July 20th, 2023

Did I shortchange you on the last dev blog? Let's remedy that now!

This is One Wicked Night. You probably know that this game is all about venturing into a haunted house to save your friend Kevin. But more than that, I want the game to create a new challenge for you every time you play. 

That means two things: a traditional difficulty progression, based on your discoveries and successes in the house; but also, a unique recombination of the house's many threats and designs for every time you play.

To that end, my past few weeks have been all about refining core feature systems now that all of the cornerstones are in place. This will be a huge help to me in the near future, as I dump content into the game to give flesh to these now-programmed features; but it will also make the game more mod-friendly down the road. For some examples, let's look at each game feature in turn.

   

FAQ For Newcomers

What's this game about?

Your pal Kevin has run into a spooky house on a dare. He hasn't come out. You need to go in and save him!


Okay but what's in it for me?

Well, friendship! Okay but also: A new house, new puzzles, and new monsters every time you play.


Can I play this with friends?

Eventually! I'm just a solo developer working at this part time, but once multiplayer is implemented I'll be launching an Early Access version of the game.

An early demo of the initial house generator.

The same house generator with textures, a bit of furniture, and a demo of some future furniture-positioning functionality.

1. Procedural House Generation

"The House" is the primary enemy in the game, so making sure it has a strong personality in every playthrough is a big priority for me. That is why the game is generated "procedurally" rather than "randomly": it's not just throwing up random walls, furniture, and monsters, but it is acting on rules and constraints that myself or modders can instruct it with (and maybe an optional Sandbox mode down the line?). 

Not only will The House produce logical room layouts and aesthetically consistent decor, but it can also drop hints and clues to foreshadow the challenges that await you further on: and if you can put the pieces together, you can increase your chances of survival. All of this is primarily handled by two major code pieces: the House Constructor, and the Plot Manager.

To help the code do its job, every wall, bed, lamp, carpet, toilet, etc must more than just a model: they will also need a set of rules so that the game knows how to use them. In this past development stage then, I have been trying to streamline these rules to be as efficient as possible. This means minimizing the amount of data that the Constructor needs, while maximizing the intuitive combinations of that data for greatest variation.

There are three main categories of content for the house: architecture (eg. walls, floors, doors), furniture (eg. lamps, tables, desks), and items (eg. flashlights, keys, skulls). Each category has its own rules and requirements, and this is what I've spent time streamlining. For modders, this means less text data to add with every upload. For me, it means putting tremendous amounts of content into the game will take much less time.

2. Player Controller

This code has been pretty constant from the beginning, and the refactoring I've done here is actually more about how the player can interact with AI. So, more on that down below. I did change up animation handling a little bit (again to make it more modular/moddable), and I've added some debuggers/cheats such as GodMode, MasterKey, NoClipping, etc.

Few programming tasks are as satisfying as finding a door implementation that you like. If you know, you know.

3. Doors and Puzzles (and the "Plot Manager")

Doors need keys. Some puzzles need "keys" as well (such as human skulls you can place on conspicuous pedestals), and other more complex interactions later on. And for One Wicked Night, all of these elements need to get increasingly more challenging as you progress through the house.

The code in charge of this is called the Plot Manager. The Plot Manager handles all things to do with pacing the difficulty, telling how and when to spawn keys, lock doors, or deploy new puzzles. Later it will also be responsible for spawning enemies, planting clues about the enemies and their weaknesses, and telling enemies how challenging they are allowed to be (remember, the enemy behaviour is procedurally generated too!).

Imagine how a horror movie ramps up tension over time, ultimately climaxing in some form of action-packed event (a great escape, a fight, something like that). That is what the improved and evolving Plot Manager will be bringing to the game.

An early demo of the WIP player commands for NPCs.

I also used Kevin to test out my early enemy AI. That was... unsettling. Not doing that again.

4. Companion AI and Player Commands

Kevin isn't your only friend! I haven't introduced the rest of your pals yet (although might have met Jane), but they will be helping you to find and rescue Kevin. And hopefully, all of your pals will make it out of the house too!

To help them survive The House and its monsters, your companions will have an advantage that the enemy AIs won't have: You. You can give your friends commands to help them help you, and help them survive. The difficult part here is in designing an easy way for players to interface with those commands.

For now, we have three commands to work with: "follow me," "stop," and "do something." This last command gives you a target selector that will let you click something for them to interact with (eg. "hide at that big furniture," "go over there," "search that cabinet").

Shortly after designing the code for your companions, I ended up upgrading the whole thing to do it all again on a MUCH smarter system. So let me tell you about that next.

I now use colour-coded Kevins for enemy testing, which feel much less like getting betrayed by the guy I'm trying to rescue.

5. Mystery Monster Development

Procedurally generated monsters. I've said it before here and there, but let me explain.

The monsters in One Wicked Night will be your familiar horror movie fare. I don't want to give too much away before the playtesters get introduced to the baddies, so I won't say much more than that. But a question remains in any case: which horror movies are we talking about here?

Many monsters have conflicting lore from different sources. Many of you know I am a huge fan of Project Zomboid by The Indie Stone, so let's talk about zombie lore. Do zombies run? Can they be killed? Will they regenerate? Can they infect you? These questions can be raised for all sorts of monsters, and in One Wicked Night, the answers to these questions will always be different.

Every time you face a monster, the game will change different elements of its lore and abilities. It will be your job to learn as much as you can about the monster before it finds you, or you may have difficulty escaping with your own life let alone Kevin's. 

And how will you face them? This is not a "run and gun" kind of game. You and your friends are children, and unarmed ones at that. You will need to quietly scavenge the house for anything that you think will be useful, and again, uncovering the monster's secrets will help you here. My vision for the "combat" in this game lies somewhere in between the hijinx of the Home Alone movies, and the helplessness of popular horror games like Phasmophobia. But the monsters? Not so helpless.

The AI system I have designed is able to create combinations of animations, abilities, monster stats, and behaviour profiles to produce a compelling and deadly encounter every time you walk into The House. It's modular, it can chain ability sets together, and it will continue to evolve as you play. So stay on your toes!

Next Steps

I am currently at stage 5 out of 6 on the Roadmap to Free Demo, which means most of my time is on developing the monster AI and a baseline for its progression over the course of a game. However, as I do so, I will be adding more and more content into the game as well (stage 6) so that I can ensure that the AI is built to handle any content I put in there. 

So basically, the heavy lifting on every major job for the code is now complete. My job now is to develop the game's progression, add in flavourful content, and design some scary monsters. All of which I am very excited for.

Remember to join the discord for small daily dev updates, or the YouTube channel for any little videos that might pop up between now and then. Thanks for reading and I'll see you again in two weeks! 

- Trombo


How To Keep Up With Kevin

Join the little crew on Patreon for special sneak peeks and truckloads of gratitude.

Subscribe the to mailing list at the bottom of the page for an extra secret with every dev blog...

Visit the TromboSpace discord for a budding little community that chats about all sorts of games!