Development News

No News is Big News

September 28th, 2023

It's been a month! 

If you're in the discord following the Daily Kevin updates, you know things have been a bit quiet in there as well. Why the abundance of silence you ask?

First, check out the FAQ sidebar if you're not familiar with the project. Second, if you thought you knew what's up with the project, you thought wrong. Change is a comin'! Namely: Kickstarter news, AI news, and, well... "news" news. Here we go.

(third, optional option: get the previous update here)

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.

Just Kevin trying out his new dynamic pathfinding tools.

Things will look a lot less chummy once everyone has their AI programming done...


Way back in May shortly after this project cleared its initial prototyping, I had been planning on launching a Kickstarter campaign in October. Whether I felt ready or not, I knew it would be a great learning experience.

The months that followed ended up bringing a lot of surprises, some good (new job!), some not good (sick kitty now his last weeks or months). So despite my half-announcement last month, I've taken this month to reconsider things.

Whilst deep in my considerings, I came to realize that I now have both a) the motivation and b) the means to delay the Kickstarter until the project is in a more exciting place. So is it happening? Yes. Is it happening now? No. When will it happen? Some time in 2024.

New generation algorithm fills 90% of available space

Sometimes changing the generation algorithm can break the house. Break it REAL bad.

Old AI Model had to Go (Behaviour Trees)

It's been a minute since I talked about AI so let me update you on that. My ultimate goal here is to let YOU mod in some unique AI behaviour. There are two ways I plan to do that: 1) through simple data entry using pre-made building blocks, using zero coding skills, and 2) through a lua scripting approach similar to Zomboid (but more intentionally exposing the AI behaviours to modders).

To that end, I've been playing around to make sure these things are possible, while also making sure the AI model suits the game. If you don't care about video game AI, you can skip to the next section.

Still here? Alright. The first AI model I used was a strict behaviour tree. This is the AI model that was popularized by the first Halo game, and it is the model that Zomboid is building its AI with. Click on this image from Chris Simpson (Zomboid lead programmer) for a rundown of how that works.

An illustration of behaviour trees. Click the image to see the blog from lead Zomboid programmer Chris Simpson!

Behaviour trees are great. To oversimplify it, they're basically a big "if / else" tree of behaviour options. The AI simply looks down the tree at all of the options you gave it, and when it finds one that works, it runs that option. You can easily pop on new behaviours or entirely new chains of behaviour, all without ever needing to touch any of the previously-built behaviours (this is a key limitation of the Finite State Machine, another popular model). 

However, something felt wrong to me. I realized that in a procedurally generated game with an explicit focus on modding, the behaviour tree was still too rigid. For all of the different interactions that modded creatures might have with modded objects, things could get real messy real quick.

Let's say I'm a modder and I want to add some spooky portal for enemy AI to use. I would have to code the logic for what the portal does, as well as the logic for how the AI should act when they are using the portal. This means the code for the portal is in at least two places (the creature, and the portal). But it gets worse: The AI creatures and their behaviour are also procedurally generated, meaning it can be tricky to figure out exactly where you should put the new portal behaviour inside the AI logic. Surely this can be done cleaner?

Soon to be topical. 

Click the image for like 49 more Sims memes.

New Behaviour is here to Stay (The Sims / Smart Objects / Commodity Vendors)

Luckily, this tricky problem was solved way back in the year 2000 by The Sims. The Sims games have a tremendous amount of AI behaviour packed into them, a lengthy repertoire of DLC, and great moddability. Why aren't all games so moddable, you might ask? Well, The Sims has a huge advantage when it comes to modifying AI behaviour because they did something crazy: They didn't tell their AI how to behave!!!

Instead, The Sims packages its AI behaviour inside of its objects, or "Smart Objects." So for example, a sim doesn't know how to use a toilet. But, a toilet knows how to use a sim! This means toilet logic, fridge logic, and portal logic can all be stuffed into objects, and the AI simply go around the world doing what the objects tell them to do.

But don't worry, this doesn't mean we'll be seeing brain-starved zombies hanging out on the can. The AI isn't exactly empty or stupid: instead, it's only job is to determine what it "needs." In The Sims, this is pretty clear: a sim "needs" food, water, bladder, etc. So after it determines its needs, it tries to find objects that will satisfy those needs, and then it simply trusts those objects and does what the object tells it to do (note: if you find a toilet, dark portal, or similar item telling you what to do, don't do it. You are not a sim and that object is definitely cursed). Making these decisions involves setting "utility scores" to different objects based on their needs, but don't worry about utility scores too much today.

Instead, focus on this: A hungry AI needs food (food is a "commodity" here). A fridge has food (the fridge is a food "vendor"). So, the AI tells the fridge "I am yours to command," and the vendor (fridge) tell the AI exactly what to do to satisfy their need for food (commodity). Similarly, a vampire wants blood (commodity). A player character has blood (vendor). So, the character's blood can be given logic that says "HEY! You! I have blood! You want blood? Just come over here!" A zombie might not care about a blood vendor, because it has different needs (brains). But a vampire would be highly motivated to visit the player (just for a friendly bite to eat, you know?). 

But what if you're a modder, and you want to give players the option to build a character without blood? No problem! You can simply remove the blood component from the player, or you could even change the blood logic to taste like brains (make it a brain vendor). Now just by adding or changing code in this one place, you have effectively changed how every possible monster in the game might react to the player!

The best part is that if it's easy for modders to add or change behaviour, it's easy for ME to do it too. I have already finished implementing this new system and all of the previously existing behaviours are in there, running smoothly. Now I can't wait to quickly pile on some new behaviours in October!

Have you hear of "Snowball Earth?" Meet "Snowball Kevin."

This was my life for like 2 weeks while polishing the house generation algorithm... 🙃 

"News" News

September was a quiet month, as I completely skipped the mid-month dev blog. And you know what? I'll do it again!

I'm going to move the blogs to be the last Thursday of every month. This will help me focus on code stuff (like new behaviours), without feeling the itch to drum up new visuals and video content for you here. Less time talking means more time walking. So, I'm going to walk hard, and if you want to come along, I'll see you back here in a month!

Cheers all, and thanks for reading.

- Trombo

How To Keep Up With Kevin

Visit the TromboSpace discord for a small news updates and community chat about all sorts of games.

I also keep a mailing list now! New blog posts and major news only (about 1 message a month). Interested?