Previous Post

Course of Temptation Dev Diary #94

Next Post
no preview
DESCRIPTION

Hello friends! Happy Friday to all! "But it's Saturday" I hear some of you saying. Even so...

I've continued my work on NPC simulation stuff this week. It's still mostly backend stuff, but I've begun surfacing some of what gets simulated as a prototype Elkbook timeline, which I'll show in a moment.

I've seen some concerns about save file size, processing time, and all that. I share those concerns! I've been coding this pretty cautiously to prevent it from running away from us. For one thing, the worst case scenario I was testing in the previous dev diary really was the worst case — 2,000 NPCs all having a defined relationship with all other 2,000 NPCs. In practice, we can have plenty of stuff going on by capping the number of defined relations at 10 or 20, which drastically reduces data storage needs. Also, some NPC relations will be determined procedurally, which means they can have a value without needing to store anything new (a technique already widely used throughout the game to save on data storage).

I did try some other methods of arranging the data but I wasn't able to find anything better than what I worked out last week. There was one method I was sure would be the best, but it came out even larger, and had a ton of overhead besides! I'll likely keep trying different things, though I think where it is right now is pretty good. The methods involved are pretty self-contained, so it isn't hard to try different things.

The next task was starting to list out specific simulation events with prerequisites for picking them, which is almost completely but not entirely similar to the event picker that chooses which events fire in the game. Since these events are NPC-first, though, it's the existing people picker that does most of the heavy lifting.

There are data storage needs here as well — since we want to be able to see these simulation events as a timeline and see a history of them, we need to slim them down as much as possible and, at some point, cap how many we're storing. I used a similar trick here as I used with NPC relationship storage, so that a stored simulation event is just an inscrutable array of integers. Then, on demand, this array can be parsed into an entire event:

Here's a look at the very first prototype NPC simulation event timeline. This is just a proof-of-concept that I put into a plain passage, but in the long run, I envision this looking like a proper social media timeline. These are mostly fluff events (commentary on their classes and the time of year — I just wanted stuff to fill out the prototype timeline) but you can see one relationship change surfaced as well.

I want to spend the rest of today working on surfacing simulation events in the other way as well, namely by turning them into events that you can witness as you walk around campus. This won't make sense with every possible background sim event, but it will with some of them!

With that done, we'll have the very basics of the background simulation working — with just a handful of prototype event types, but still. After that, the task will be expanding the variety of simulation events, extending what they can do, and surfacing them with prose events and a revamped Elkbook.

But, next week, it'll be time to turn our focus to preparing the October update. There are a couple of things I have it in mind to look at, like making encounters work better in large groups, or adding a new seasonal event like homecoming. Anything you'd particularly like to see polished or extended? Let me know!

That's all for this week's dev diary. I'll be back next week with some talk about what we'll have in the October update. Please have a good weekend! And thank you as always for your support, it means a lot!

courseoftemptation PATREON 170 favs
VIEWS1
FILES1 file
POSTEDSep 19, 2025
ARCHIVEDJun 10, 2026