Dev Journal: A Question of Intelligence
Added 2020-10-29 04:21:05 +0000 UTCI'm going to be a bit rambly here, but it comes around to explaining an upcoming vote near the end! I started intending to write this journal at least a week ago, but that came along with the thought, "shoot, I said last time I'd be putting out a vote soon for what sort of NPCs you'd like to encounter, I should pair those up so I can explain what's going on a bit and offer the vote along with it!" Because last time, I used my journal as a launching point for discussion on the Discord with mid-tier supporters to brainstorm some ideas there, to see what others might wish to see. I didn't get feedback from very many people on that, though, and most of what I got, I couldn't really apply to characters made this early on.
In fact, the point of what was possible within the prototype's current limitations became more pressing as I went, actually. I knew I wasn't ready to make a vote for what characters to include because there were still a lot of things up in the air for how detailed/customized characters would even be at this juncture. No sense asking if you want a smaller dom if "making characters sexually dominant or submissive" is pushed out past the cutoff for v0.01, let alone if "make NPCs actually have AI at all" is pushed to a later build.
I've been learning a lot and struggling with a lot of aspects of building this game that I suspected would be troubling, but that I hadn't thought would be quite as intensely involved as I thought. The more I've developed and built out all the stuff behind the scenes to make the most basic gameplay "work," the more I've found I need to restructure things I built behind me or question my plans and assumptions. Should I rebuild this thing to be MUCH more efficient and easier to build with from here, even if it assumes that X will never happen? I don't plan for X to ever happen, but what if I expand into that down the road? What if I do open this code to others someday and I want them to be able to have X?
It's all come down to learning where to draw the line and say "this is a placeholder, it's okay," and trying to build things to be modular enough that it won't hurt too much to change things in the future. The more I change how something works, the more I'll have to edit everything else that interacts with that thing, so if I don't plan well now, that means any changes in the future will create exponentially more work until it gets into "I can't add/change this because it'd be completely impractical," which always feels lousy.
But designing all of this has forced me to explore a lot of possibilities and specifics that I wouldn't have to face before, and try to account for all of them. When I was writing MVOL, I basically had full control over what was possible. I still tried to be very faithful in giving you the ability to do what seemed natural or reasonable, even if it turned into whole new massive sections of the game that neither you nor I originally expected to be in there.
But I still had the ability to just say "well, I don't like the direction this is going, so I'll nudge the possibilities as carefully as I can to keep things where I'd like them." When so much more of "what happens" is determined by systems and player choice, though, that opens an almost infinite number of doors into "what happens if X while Y? Does A break down when B happens? This system can handle X, Y, and Z, but if all three somehow happen at the same time, what would even happen then??"
And I mean, to a degree, I enjoy that sort of thing! Going through this has made me glad that I'm both the designer and the programmer on this project, because I can immediately understand the problems that come up, and rather than the programmer trying to glaze over some of these problems or make assumptions, I can tackle them head on every time and make sure the design is consistent throughout. It's just... exhausting, sometimes. And occasionally, disheartening.
A question I ran into recently was, what happens when a character dies? This is a system that allows combat, and includes the capacity for hand-wavy vore where "everyone's fine in the end," but technically, even though combat should usually end when someone is scared of reaching 0 hp and surrenders or runs, and even though 0 hp only means they're helpless, it's still built in that they die if they go very, very far into the negative. That's a natural part of some kinds of vore, and it also just makes sense that if you keep attacking someone forever, they won't survive. So... what happens then? What happens if they're in the middle of sex when that happens? It was really uncomfortable for me as a writer, as a designer, and as a programmer to try and reconcile my conflicting goals on that.
But this is part of why I've been slow to develop the story side of Project Wild One. The system is the Priority One of this project, and the story should be built to accommodate it moreso than the other way around. Which is pretty new for me! But in this case, I came to the conclusion that for this system to work, it needed to be in a "special world" of sorts with its own rules for these things. The lore I've got sort of half-formed in my head is fairly compatible with the idea that if someone dies, they'll "respawn" elsewhere, far away, and that unless their body is already fully vored, it'll just "fade away." It's obviously fantastical, but this is already going to be a pretty strong fantasy setting, so I can embrace that.
If someone wanted to make death a more prominent element in their system then that would allow them a different story, but this is the kind of gameplay I want to build, so that forces my hand on some things with the story. At this stage, that's no problem.
Still, it's been a lot to figure out, and sometimes it's been a bit too much for me. I haven't gotten work done as quickly as I'd like this month, partly because a lot of systems have turned out more complex than expected (I did finally work through the heinous math problems from before with a wonderfully overengineered solution that will still need to be expanded and refined later) and partly because some of it has pushed me too close to that line where I need to stop and get some air before I enter a bad spiral. I've been doing my best to keep getting work done without getting too close to that edge. The world has been a pretty bleak place lately, and while I've always tried to keep my head down and not pay too much attention to all of that, hiding from the news has become something of an obligation to my work and my personal health of late, as nonconstructive an attitude as that may be.
In short, things have been rough, and I don't have as much done as I wanted, but I'm still going. And that brings us closer to the matter of the vote I mentioned at the start: I'm trying to decide where to draw the line and ship v0.01.
I've built a lot of the basics for characters having their own stats and anatomy, and for how characters can interact, how things start and end, what the repercussions are, and I've put way too much work into a unified system for tracking and governing "things going into orifices and whatever's behind them" regardless of how large or small those "things" may be. Now I'm working on building a very simple text generation system so you can actually get descriptions of what's happening a little more friendly to the eye than "CH0001 ATTACK CH0002 - MISS" or something like that. I've had to relearn Regex for C#, which has been an interesting experience, and I'm finally doing a tiny bit of actual writing again, though it's less paragraphs and more single sentences for a few hundred different tiny situational specifics. Once that's done, I can finally start testing things and patch up however many dozens of smaller things I haven't yet accounted for to get the absolute baseline for playability between two characters.
It's still up in the air how much gameplay I'll build out around that in terms of being able to customize your character, how you encounter other characters, and including any kind of progression system for leveling up or gaining special traits and such, but I'm hoping I can hack together something for that as a placeholder without too much trouble. The main big thing I still see ahead of me that I expect to take a lot of time is building a real Artificial Intelligence system.
The easiest answer would basically be to just let you control both characters, so you can mess around with the interaction system, but I feel like that would take a lot of the fun out of it. This is already going to be a very sparse first prototype since most of the work isn't going to be very visible yet, but that would make it less of a "game" and more a "toy" to fiddle with for a few minutes, I think.
Now, most games in a similar vein to this can get away with very simple AI: randomly choose whether to attack or use a special ability, maybe use a heal if below X health or something, follow through on multi-turn attacks like grapples.
But this game puts a lot of choices in your hands, and does the same for every character. If I set an AI to "do something random from the list of options" it would act completely insane and self-contradictory. A somewhat better option would be to make each character have a crushingly simple AI with something like... "attack player until injured, then run away, refuse any other interactions" or "try to have sex with player, refuse any other interactions, run away after completing one orgasm," and that would be... better than putting them under player control, I guess? But it certainly wouldn't feel like "someone's there."
What I'd like to do for a first build of the AI is have some basic tracking for how the character "sees" the player. If it likes you and/or it's attracted to you, it's less likely to attack you and more likely to seduce you. If it's afraid of you, it's more likely to run. If its fear of you is very low, it's more likely to attack you or to use you for its own desires. It doesn't do things too "randomly" so much as following its own priorities, to help itself, or to help you if it likes you.
This would still be a very simple version of what I'm hoping to build down the road. It wouldn't have the ability to plan things out ahead of time or engage in story elements with you, or to remember how you've acted in the past and adjust its actions with that in mind, and it wouldn't have any clue how to interact with other NPCs. But I'm hoping it would at least feel enough like a person that you might actually find the character a little engaging while you're exploring the system.
Still, even that basic system would require a lot of work, building the groundwork for the game to "understand" itself and be able to "read" actions, then estimate how likely they are to succeed and how much it would like the outcomes, while only having access to partial information about you. And, well...
At this point, it's already looking like even if I skipped AI altogether, Project Wild One v0.01 is going to be going into early access in the middle of November at the very earliest. I knew it would be a front-heavy workload, and it's exceeded my more optimistic estimates on that front for getting it to even basic playability.
So my question is: where should I put the cutoff for v0.01?
Would you rather I cap it off ASAP with just letting the player control the characters so you can fiddle with the basic system for interaction and have full control? Or maybe you'd just rather Project Wild One is put back on the shelf that much sooner so I can go back to Matchmaker?
Should I go for a simplistic AI? This would still require some work, and that would all be stuff I'd be throwing away at the first opportunity to start building a proper AI as soon as I come back to this project. But it would at least offer baseline playability where you can play one character, "vs." an NPC of sorts, albeit one that would feel very "video game-y." A compromise.
Or do you think I should dive in and try to get the basic AI working? At this point, with how crazy everything's turned out to be, I have to admit that could add as much as another month to get it to even the most basic, working state, though I might be able to flesh out a few other things along with it. That would mean going even longer without a playable release, though, and that much longer till I return to sorting out Matchmaker's engine.
At this point, I could go with any of these, and it mainly comes down to what you guys want. You pay my bills because you like my work, and part of my thanks for that is that I try to ship it to you as often as I can, but that's hardest at times like this, when I'm building the systems rather than the content. When I transitioned to this new dev cycle I was aiming for "every one to two months," and this one is already pushing past two months despite my hopes and plans. Should I cut things off here and get back on track, or follow through on making v0.01 "properly playable" so you can get a proper glimpse of what I'm trying to do?
The vote will be coming up shortly after this, so please, let me know what you'd like me to do! I'm sorry it's come to this, and I'm hoping this kind of question won't come up often: Project Wild One is one of the most technically intensive projects I have on my list, and I've been learning a lot as a programmer going into it, so I'm hoping that "basic playability" won't be so far down the road for later projects even when I'm starting them from scratch. I've certainly learned a great deal with this project, and I suspect that, at least for future Unity projects, I could even copy over some of the things I've built in the last couple months to get things built and ready faster.
Phew, this has been a long one, hasn't it? I let it get a little pent up, I guess. Thanks for reading! I'll look forward to hearing from you!