Potty Training the AI

Back to code today. Yay!

I picked up where I left off last week with the AI's decision-making bug. It turned out to be as simple as expected. Just switch the petitioner/granter in the code block where the decision was made, and the correct AI was now deciding whether to grant the request or not.

While fixing that, though, I was having trouble selecting the AI and the item involved in the interaction to see their debug info. And since that will also be a frustration for the eventual player, I decided to improve that. After a bit of polish, clicking on things in the ship will now do three things:

1 - select the top-most item first (i.e. depth sorting)
2 - cycle through each item below it as the user clicks subsequent times
3 - Reset to the top-most item if the cursor moves to a new grid square mid-cycle.

Once that was done, I turned my attention to toilets and pooping. After some thinking, and some asking around on Twitter, I eventually settled on the following criteria:

A toilet is:
- a container
- waterproof
- has an opening greater than 10cm across

It's crude, and will probably need to change over time. But for now, it distinguishes the toilet from the floor, walls, beds, and (debatably) other crew. So how did it work?


No, Akiko! No!

Not exactly what I was hoping for. But then again, I haven't setup any filtering for SeekFood yet, so any item is a valid target. What I haven't yet seen, however, is what the AI does when it tries SeekPoop on a random shipboard item. Assuming it chooses the toilet as the best option, we're good!

Though, that might have to wait until tomorrow. Hang in there, Akiko!


Malacodor's picture

I'd be less vague and give toilets a 'toilet' property. Other criteria should only be looked for if there's no working toilet present. Waiting for an occupied toilet to become available should also have a higher priority than looking for alternatives.

I suggest another criterion for toilet alternatives: feces. This is intended to make the crewmen pee in the same corner or poop into the same bucket as others. People are more likely to use places that are already dirtied, and a real crew would most likely agree upon using one specific spot to keep the mess localized.

Ran around with a clown mask before it was cool

Fins's picture

"Poop" term will not do, i think.

There is emotion to most words of any language, "background feel" if you like. "Poop" comes with abundant ties to kids, moms with babies, and young ladies raised in nearly sterile environments, if you get my drift. Neither is exactly the expected crew members of a space ship, i guess...

So, when i see that "StatPoop" on that screenshot, i instantly realize how wrong the term is - since "Stat" part of it comes with massively different emotional "color" than "Poop". "Stat" is linked, for most players, subconsiously, to precision, consideration, intellect. Most players won't clearly realize all that the way i do, but i'm quite sure many of them will have the game's athmosphere a little bit "worsened" because of such a strange term. The game would "feel" a little bit less "real", i mean. Very little bit. But why keep it, if it's possible to have more... fitting term for the thing?

If overall athmosphere is to end up somewhat scientific, "feces" would probably be the best. "StatFeces" is surely more "organic" term of itself, to me, than "StatPoop". If game's overall athmosphere is to be satiric or humorous, then perhaps "Dung" would do. Or even "Shit". I'd like the latter the most, but then it's me with my cynical and liking-toilet-humor twisted mind... :D

And overall, there may be some other term, one of mentioned here or even yet different from all those.

... our lifestyles, mores, institutions, patterns of interaction, values, and expectations are shaped by a cultural heritage that was formed in a time when carrying capacity exceeded the human load. (c) William R. Catton, Jr

dcfedor's picture

@Malacodor, I think that'd work (having a "toilet" property), but I was trying to avoid labeling things too explicitly, so AI could surprise the user with their choices sometimes.

In some ways, this system works a bit like NEO Scavenger's crafting system, where a recipe lists ingredients with objective properties rather than subjective or specific names. This allowed the player to use resourceful substitutes in a pinch, and I think AI could do the same. But, even in the crafting system there were "toilet"-like properties when I couldn't come up with more broad rules that worked. So that's always an option here.

As for AI choosing better/worse toilets and waiting, this may be handled by a mixture of the AI's learned experience and some hard-coding. The AI may form attachments to certain toilets if they have better experiences in them than others. And if I want to separate normal vs. desperate toilet use, I could have interactions for each that only get triggered at different stat thresholds. E.g. normal poop urge only allows normal toilets, while diarrhea would allow emergency dumping in a looser definition of "toilet."

@Fins, that's an excellent point. A more serious sci-fi tone is definitely something I'm trying to maintain, and UI language is as much a part of that as others.

In this case, I may go with StatDefecation, since it communicates the idea in terms of the AI's needs rather than just a substance. Similarly, I should rename "StatFood" to "StatNourishment," for example. (Instead of "StatHunger" because I may want to finally try tackling the decoupling of hunger vs. starvation. It was something I hoped to do in NEO Scavenger, but never had time, and in a spaceship drama game, gorging, binge-eating, and other food-related psychological behaviors would be right at home.)

Dan Fedor - Founder, Blue Bottle Games

Fins's picture

"Nourishment" is not so good, though. "Nourish" is too wide a term, it has not just food about it, but, say, grooming, combing, telling a tale for the night, and lots other things, - like, injecting a dozen various chemicals into one's system daily, for example. The latter was the case with yours truly was 6 years old, for over a month, - doctors said, afterwards, that my condition at the time was known to have ~70% mortality rate even when fully cared for (it was heart's muscle inflammation of traumatic origin).

I survived, because overall nourishment doctors gave me, up to and including psychological - was excellent. ;)

... our lifestyles, mores, institutions, patterns of interaction, values, and expectations are shaped by a cultural heritage that was formed in a time when carrying capacity exceeded the human load. (c) William R. Catton, Jr