SamuKata
Lithier
Lithier

patreon


Dev Journal: Just a Theory

The Great AI Overhaul’s first build is nearing completion! I’m feeling a little ragged at this point, but overall I’m feeling pretty positive! Let’s take a quick overview of how work has progressed, first.

Last time I dropped a public dev journal, I was nearing a critical point: I had enough of the absolute basics, the skeleton of the new system, built up that I was finally going to be able to compile it soon. I did manage that soon after, and it was pretty exhilarating to see this beast come to life! I developed some tools for testing it, for making the game take spreadsheets, turn it into data… and then turn it into different spreadsheets for me to see that it was processing all the little details correctly, that I didn’t have any typos ruining anything or the like. And I could run a report and get details on what a character was “thinking” at a given moment!

It was still very rudimentary, but there’s something visceral about seeing years of concept work and months of coding actually move, actually live. As of that moment, I had made NPCs that, speaking purely in terms of programming, were already far more complex and thoughtful than any character in MVOL had been. This has been the strange task I’ve assigned myself: to make programming itself pretend to think, to feel, to interpret your actions and make judgments based on those interpretations, then choose actions based on those judgments. The closer I get to achieving it, the more I’m ready to look back and admit, with a laugh, that I was a little crazy to try this.

From there, though, there was still so much to do. The most obvious task was to find a way to turn this basic system into something that actually influences gameplay so I could ship a new version-- the initial build was purely a system for collecting data into the most basic information like “X likes having sex using their dick” or “Y tries to hurt me.” Developing the right way to collect and interpret all the basic information into more complex ideas like “it is safe to have sex with X” was a big next step, let alone getting to something actual useful like “I should try to tempt Y into having sex because they are appealing and might be willing but don’t seem too interested just yet.”

Those are the sorts of concepts I was just building today, in fact! For a while I was struggling because the gap between the information I had available and what the NPCs need to act with any kind of intelligence was pretty huge. But the most discouraging part was: I knew I would want to take a great deal more time building all the systems for how AIs would actually “think” and “feel” with the input they were given, but for now, I needed something simple and fast… except nothing with this system could be all that simple at this point. Meaning that I’d have to do a lot of work… that I’d then have to throw away and replace, maybe even in the next version right after this.

Writing “throwaway” code always drives me nuts. That’s part of why I hated adding anything to the old AI system, because I knew it would all be replaced before too much longer. I was getting discouraged trying to find a good way to handle it without being wasteful, and I finally settled on a compromise.

The system I’m developing now is sort of a “rough draft” for what will come later. I’m building my first guess at how the proper AI system will process more complex ideas as sort of a quick and dirty version using the limited tools I have right now, and I think it will still make a big improvement-- and hopefully teach me some things about what will work better as I test and refine it. The downside is, this will take more time to complete than if I really just hacked something together purely to get it out the door. The upside is, hopefully it will make things a lot smoother for the next version, and you’ll get a better v0.08 to play in the meantime!

Now that I have the basic system in place for how “Theories” (the basic “how true is this” unit an AI builds out of its input) interact with each other, the next step is to start plugging Theories into the existing system for how the AI makes decisions. I’ve started doing a little of that, and as I get deeper into it I’ll be building more Theories to try and handle whatever information I can find that could augment that system further. Basically, I’ll go through the Theories I have built and see where they can be useful to the existing AI, then I’ll go through the existing AI to see what other info they could use and build some more Theories to try and provide it.

Once that’s done, it’ll be time to test it all and see how characters actually behave, but I think we’ll be nearly ready to release after that. It will basically be a matter of whether this makes a big enough change on its own for the release to feel “worth it,” or if I need to find some extra bits to add on just to make it feel exciting as a new version. We’ll see! I have a few ideas for ways I could “show” what characters are thinking, but most of them would require a significant amount of extra work, but again, I’d want to replace them later. If I’m lucky, the AI will be improved enough that I don’t need to add any “throwaway” work to show how different things are!

Overall, at this point, I’m feeling like I’m maybe 80-90% through the process for this version. I’ve definitely had moments where I just felt sick of dealing with this system and wanted to hurry up and get it shipped, but right now I’m making a pretty good pace getting things added and fixed up! Hopefully I can keep this good momentum going long enough to see it out the door in a state I’m happy with!

Overhauling the AI for Project Wild One has been a tremendous challenge, and I can’t even say that I’m done with the bulk of it, but in some ways, I’m hoping that I’ve passed the hardest of it. I’ve finally managed to transmute a great mess of very abstract ideas into actual, working code, and I’m pretty happy so far with how much flexibility and nuance it can show while also being fairly simple and elegant. It’s set up such that I should be able to make a lot of significant changes and additions in the future without having to just rewrite everything, and hopefully, the work I’ve done here will provide a solid foundation for tons of great things yet to come. I still have so many things I want to add and expand before it feels remotely “complete” or even “ready,” but with just a few last bits, it should at least be ready enough for an initial release.

I’m proud of what I’ve accomplished, and I think I’ll be reaping the rewards of this work for years, as it opens the way for so many other things I want to do with this game. But I couldn’t have done this without you, my supporters, keeping me fed and sheltered while I flail at code all the time. Thank you for your support, and for your patience. Thank you for believing in me, even when I decide to take the deep dive and bet on my being able to survive it on stubbornness alone. I can’t say this job is easy, but I’m incredibly grateful to be able to choose the things I care about and really just pour myself into accomplishing them. So, thank you. Thank you for putting a little of your bread on my table, for putting in your own work on something real out there, so I can craft a dream for you in here.

I’m looking forward to seeing how you like this, once it’s ready.

Comments

We all believe in you! Keep it up but don't exhaust yourself <3

ravn


More Creators