It’s been a lot of ups and a lot of downs, but development on The Big One is moving steadily. I’m up to my elbows in Project Wild One, building out the Interp-Theory Mind to finally be a complete, handcrafted, end-to-end system for turning input into decisions in a logical and emotional way.
That’s the short version. I’m still working on it. I had a lot of problems early on, but it’s going pretty good right now. I can’t say I’m almost done or anything though, I’m still in the meat of it. Want the long version? Read on.
Last time I put out a public dev journal, I shared a lot of frustration about my health. I was totally out of commission for a long time thanks to some strange bug, maybe Covid, maybe something else. It had hit pretty shortly after I started working on the new update, and when I finally started feeling good enough, I wrote out that journal talking about how excited I am for this update and how important it is.
Then, I got sick again. But this time was… different? It felt like something terrible was happening in my head. I’ll spare you the suspense– it looks like anxiety may have been the central cause. Maybe even for both bouts of illness. It felt a little obvious in retrospect. A doctor gave me a clean bill of health physically, and asked if I was under any unusual stress. I told him, “well, I just finished a big write-up explaining how I’m taking on the biggest, most difficult, most important challenge of my entire career. So… yeah, I guess so.”
I went into more detail about all this on the supporter dev journal I dropped a while back, but basically: I’m not really sure how much of all of this came from anxiety and not any kind of physical bug, but it certainly seems like it was at least a decent chunk of it. I’ve been building this whole thing up to myself and to everyone for literal years both as incredibly important and incredibly difficult, and in the end, it looks like I may have psyched myself out more than I thought possible. I was pretty frightened I’d had an aneurysm or something for a bit there.
But I adjusted my medication, worked on it with my therapist, and I’m feeling a lot better now. I was gradually getting actual work done again at long last when I dropped that last journal, and I’ve been ramping up steadily since then. I’ve lost a lot of time, but I’m pretty happy with the progress I’ve made since then.
So, enough about me, let’s get into the good stuff!
There are several interlaced stages to building the first complete version of the ITM. The first stage is a lot of raw concept work. The partial system I had built could take input, interpret it, and turn it into Theories that track the NPC’s understanding of the world. Condensing all of those abstract concepts into a way to identify what the NPC wanted and some basic way to plan how to act to get what it wanted would require at least one major new piece, and I had no idea how that side of things would even work. I’d speculated, but it was time to mentally build something that would stand up to every possible situation and demand I could think of.
When I last checked in with my supporters, I had most of the idea in place, and I’d finally cracked one of the last big challenges in the concept stage. It was time to finally start actually coding out the last major Tool.
I call this whole system the Interp-Theory Mind because it is an engine that gives each NPC a large array of Theories to track its own understanding of the world, fed by a swarm of Interps generated by each event that happens in the world. So I write code for one Tool, like the Interp, and then I fill a spreadsheet with specs for the many different Types of that Tool an NPC might need to use. The game loads all of that, and generates instances of each Type when the right situation comes up.
The next step after Concepting was to build the new Tool: the Course, as in “course of action.” (I guess technically I could call it the Interp-Theory-Course Mind now, but that’s kind of a mouthful.) And while I was working on that, I started realizing I needed to dip into the next stage: Expanding.
The previous version of the ITM was made to be expanded, of course. I made it to be a starting point, and I had a lot of ideas for what it needed that I’d set aside in favor of getting to the most basic, working version possible as quickly as possible back when I was working on all that. Now, I need to flesh out more features and systems for the existing Tools so they can handle more complicated stuff.
A quick example: I need to have at least one Course for each possible combination of sexy bits between you and another character. Do you like pussies or butts more? Do you know what they like better? Do they like some things in their butt, but not others? You need a way to track each of these individually. If I wrote a Type of Course for each possible combination, it would be a bulky mess to edit, especially if I included stuff like hands and tails and so on too. I needed a Course that could automatically generate variant instances for those combinations instead, so I could just write one Type of Course, then it would pull the relevant info from Theories and only talk to the relevant Actions. Much easier to adjust in the long run, and doesn’t force tons of extra work if I want to add, say, tentacles or something later.
Just one problem: Theories were built the old, clumsy way. I wrote a Type for “I like using my dick,” another for “He likes using his butt,” and so on. Along with building a way for one Course Type to generate variants based on what pieces are involved, I needed to build a way for Theories to do the same and replace all those clunky Types altogether. Which meant I also needed a good way for them to read Interps and only accept the ones matching the pieces they care about.
And once I was done building the Course Tool, it was time to start experimenting with actually writing Course Types– knowing full well I’d immediately run into issues where the Tools I had weren’t enough. So I transitioned into Expanding to meet the demands of the Mind Design itself! I’ve gone back and Expanded how Courses work, along with Theories and Interps several times over by now, and things are finally starting to shape up.
As I write this, actually, I just had an immensely satisfying moment: I piggybacked that variant system I mentioned to also handle the occasional situation where a Theory wants to talk about third parties– usually each Theory only keeps track of “You” and “The Person You’re Thinking About,” but if you want to think “That guy is attracted to that other guy” or “That guy is in danger from that other guy,” you’ll occasionally need to track two other people in the same Theory, and that wasn’t possible in the original design. But I tried adding a new way to generate variants for Theories to handle those situations, and it compiled and worked the first time with no errors! …If that doesn’t sound fucking amazing to you, you’re not a programmer.
I’m sure I’ll still have to Expand the mechanics to handle a few more issues, but at this point, I’m finally entering the last major stage of the process (before a lot of minor stages, that is): actually designing a Mind. Oh, is that all?
The Tools are built, and I have a lot of Types written up, but the more I work on developing a large-scale, start-to-finish concept of the Mind, the more I’m going back and replacing and refining a lot of the stuff I’d written before. This stage is where I enter a really interesting mix of technical and artistic challenges: I have created an incredibly sophisticated canvas, brush, and paint set, and now I need to finally, actually use them to render a portrait of the Mind.
With the previous version, I wrote a lot of stuff as guesswork, as “maybe this information will be useful,” and now I have a better idea of what information I actually need, it’s becoming clear I need to organize things better. I need to develop internal practices for how information is handled to prevent duplication of inputs or any other weird issues. I can’t hold every single piece of it in my head at once, so I need to be able to “work with my past self” in a consistent manner where I can rely on things to work how I think they will.
And piece by piece, I’ll make the simplest possible approximation. I have so many ideas I’m excited to implement for this Mind that I’ve put aside as too complicated for now, to come back to later. I’d love to have each Mind vary by personality, so different characters follow different logic. I’d love to develop a Trend system for tracking things like “every dragon I’ve met is scary, so this one will be too!” or “this guy reminds me of someone I had a really good time with, so I find myself sort of attracted to him.” I’d love to generate each NPC with a background that gives them past experiences and expectation to rely on, maybe even traumas and complexes. It would make for such a rich experience!
But right now, I have to hold myself to the basics. Simple concepts of morality. Dynamics of power between characters. Internal needs and desires, what sates them, and what they motivate us to do. I’ve been holding off on making new Actions you can take waiting for this system to be in place, but I suspect I’ll be adding and changing several Actions this update to better work with this Mind as it fleshes out.
Honestly, a lot is probably going to change with this update. I’ll be forced to keep it minimal and slapdash at first so the update doesn’t take absolutely forever, but this system is made to connect to just about everything. Rather, almost everything I’ve built so far has basically been waiting for this system to finally slot into place.
But that’s enough ranting for now. I had a pretty rough start, but things are going much better now, and I’m feeling optimistic. There’s still tons to do to build the Mind itself and then hook the rest of the game into it properly before I can ship it, but I’m just glad to be on a roll again.
Thank you for your patience, and for reading all of this. I’ve been saying for ages this will be The Big One and it’ll take time, so I won’t apologize for how long it’s taking, though I do deeply regret the time I lost toward the start. It means the world to me that you guys still stick with me and support me through all this– both with me, and with just… the world being what it is. Thank you.
And stick around. I’m cooking up some good fucking stew.