Let's Get Physical. Also, a Bigger Picture.

I took a break from AI code today to reexamine the data. And as a result of some analysis, some chatting in the comments, and some testing, made some interesting discoveries.

First of all, I need to standardize my AI stats better. I'm having trouble conceptualizing them when coming up with values for how they're affected in an interaction. And a lot of this stems from having stat names which are not only abstract, but struggle to keep a standard of "more of this thing" vs. "lack of this thing." So I'm working on that.

I also realized that many of my interactions make an AI's life worse. Bear in mind that an AI is using an interaction to solve a problem, usually a deficit in some need. If they are hungry, they eat. If they want social contact, they chat. But with many of these interactions, they ended up worse off than when they started. And when I multiplied the effects of interactions, as I did yesterday, that problem just got amplified. AIs were experiencing crippling emotional distress in their attempts to satisfy needs, and quickly bottomed-out.

That said, interactions shouldn't be "freebies," either. If they don't come with a cost, there's no reason not to do them. A "freebie" interaction AI would probably just cycle through all their needs in a boring, machine-like list, and there'd be no emergent drama.

Probably the sweet spot, as far as my thinking has gotten me, is to make the overall net result of an interaction close to zero, if not zero. Probably slightly better than zero, to compensate for emotional and physiological decline, and to leave room for ship's duties in their schedules. This way, an AI has to keep doing interactions at a certain rate to stay satisfied, and the AI's job is to choose the most efficient ones. And since each interaction has pluses and minuses, it'll be a constant whack-a-mole.

Related to the above, I think my simulation so far has struggled a bit since it was only a partial picture. I only had emotional needs, food, sleep, and excretion simulated. If an interaction caused an increase in fatigue, say, there would be no way for me to balance that in the data without a fatigue stat. So the go-to Achievement interaction, furious push-ups, would have costs that never appeared in the game, making it hard to have a net-zero effect.

SOooo, I decided to finally take a crack at expanding the list of AI stats to something more like the final game will require. What are all the inputs and outputs for an AI? How does the rise and fall of stat A affect stat B?

Now, bearing in mind that this is a work in progress on both standardized naming convention and complete emotional and physiological simulation, here's the current thinking:

Name Description
NeedAchievement How much am I craving achievement?
NeedAltruism How much am I craving altruism?
NeedStomach How stuffed do I feel?
NeedAutonomy How much autonomy do I crave?
NeedBlood How much blood have I lost?
NeedContact How much do I need social contact?
NeedDefecate How much do I need to defecate?
Encumbrance Limit Can I carry more?
NeedEsteem How much admiration do I need from others?
NeedFamily How much do I miss family?
NeedRest How fatigued am I?
NeedNutrition How malnourished am I?
NeedFriendship How much do I lack friendship?
NeedHydration How dehydrated am I?
Infection Am I more sick or infected?
Intimacy Do I feel a deep connection?
Meaning Does this fill me with purpose?
Oxygen Does this wind me?
Pain Does this hurt?
Poison Does this isolate me?
Privacy Does this isolate me?
StatRads How many rads do I have?
Security Do I feel safer?
SelfRespect Do I feel proud?
Sleep Am I getting restful sleep?
SleepComfort Does this make me sleepy?
TemperatureBody What is my core temperature?

As you can see, my latest iteration only got about as far as hydration. And with things like Encumbrance and Rads, this may require a separate type of stat that is not a "Need." Unless we count things like "need to remove Rads" or "need to get help carrying something."

There's also the concept of "Ticks," which are timers that gradually increase certain Needs over time. NeedHydration, for example, would get worse over time, and better each time the AI drank something. And after adding some of these new physical Needs, I may need to have "Ticks" for several of these, as well.

It's a lot of data to work with. But having worked on AI in NEO Scavenger, it's not that much worse :)


linibot's picture

You don't really want the total sum to come close to 0, though, do you? This creates a very specific gameplay loop, one where many players' first instincts will be to either cause havock for the heck of it OR try and understand/wiki all the nuances and then super-optimize how they build and equip the place or manage their blobs. It makes efficiency/lack thereof too important, which is usually a rather finite source of fun. ;) There are too many games where the whole loop consists of getting better beds fast, conveniently placed behind doors, so you dont constantly lack sleep all the time. And they tend to only work for a short while.

Sometimes breathers are also nice, moments where for a short while things look on the up and up despite not having a perfect ship, so that when stuff happens the impact is more interesting. You want the poop need to be taken care of just fine for a while, despite only having one toilet inconveniently located, to the point where you semi ignore it - till the toilet breaks down, or till everyone is busy and then runs to it all at once, that sorta thing.

In my head it would also probably make more sense to think in terms of tiers, where needs of higher complexity (ie NOT food, sleep, hydration) are simultaneously more difficult to balance (cause they affect/are affected by more things) and have a lower progression curve. People's sense of meaning of life just doesnt change twice a day. (If it does, you need a ship shrink. :D ) In fact that may be the sort of spot where personalities may make more impact than daily interactions. Then again, that creates the problem of "empty time" in some games. Balancing is a complicated pain in the behind. ;)

Anyway, this may simply be a worry for another day, it is a case of balancing after all, so I'm probably jumping the gun. :)

P.S. On your list, poison/privacy have the same description. Just being pedantic. XD

NEO Scavenger: FAQ
10 Ways (not) to Die - A beginner's guide

Anase Skyrider's picture
Anase Skyrider

I'm glad our conversations had that much of an impact.

On the front of the topic of "a standard of "more of this thing" vs. "lack of this thing."", I like that you managed to get a bunch of them on the same track by describing them all as "Needs", which means you want to keep them all empty. This is a lot more intuitive to read how it works. It's still all a bit inconsistent to read, and I think I know why; the ones that aren't needs--like security, where it's not "the higher the number on the bar is, the more the person needs to fulfill that desire"--aren't labeled "StatX" like "StatRads" is. Considering how the rest of everything else is read in a game-y/developer way, with "NeedX", everything else having a plain name is off and feels inconsistent with the rest of the names (especially in how the "more of this thing" vs. "lack of this thing." feels). Great progress so far, though. Not to be a Debbie downer :P

One thing I noticed that seemed lacking is boredom and stimulation, as well as willpower. After a while of having nothing to do, you get bored. And people, based on their tastes, will have different things to stimulate them (which could be determined by personality traits). An introvert would do just fine being stimulated all alone, but an extrovert would get a penalty to stimulation done alone, and would gain a bonus to interactions that involve other people. Along with that is willpower; a sort of mental stamina. Someone with a particularly low willpower cap would be unable to feel the motivation to do a lot of things in a whole day, and thus would resort to relaxing a lot more.

Malacodor's picture

Most people like a regular daily routine, like always eating and sleeping at the same times of day. This could be implemented by adding needs for eating and sleeping that depend on time instead of hunger/sleepiness (in addition to the existing system). If it works out as I hope this will make the AI to act more like civilized humans and less like pleasure-seeking monkeys.

Furthermore, I'd add an environment stat. Living in a dimly lit, smelly and loud place makes people very unhappy.

I also miss "NeedSex".

Ran around with a clown mask before it was cool

dcfedor's picture

@linibot, I think what I was trying to say is that there is some "sweet spot" when balancing the effectiveness of individual interactions. If an interaction is too effective, AIs will rarely want for anything. If it's not effective enough, AIs will gradually degrade over time until they bottom-out in every stat and stay there. The "Goldilocks" point will cause stats to yo-yo in a satisfying way.

And all of this has to account for the time AIs will spend servicing their own needs vs. jobs on the ship. So while net-zero interactions would be ideal in a world where all hours of the day were free time, a slightly higher outcome means they can ignore their own needs long enough to get meaningful work done. Or else that work satisfies needs (which is something I'm exploring).

@Anase Skyrider, you are correct that the consistency and scale break down after the "Needs__" on the list. Though, that's just because I haven't gotten around to standardizing them all yet. Basically, I've only revised the first half of the list so far :)

Re: boredom, stimulation, and willpower, it's possible that there are some things not covered by the above. However, it's also possible that they're covered indirectly. "NeedAchievement" may be referring to one's need for mental challenge, while "NeedContact" refers to the need for social stimulation.

Willpower might not be a stat, but rather a collective average of the distress levels across multiple stats. E.g. if "SelfRespect," "Esteem," "Security," and/or "Autonomy" are low enough, they are stressed in those ways and less able to exert their will. (Just as an example.)

And a third way these things may be modeled is in the interactions themselves. Activities which fight boredom may simply bolster certain stats, so people appear to need stimulation periodically, but are just satisfying deeper needs by doing these activities.

It's a pretty versatile system, but some things may just need their own stat. And we'll need to see things in practice to know for sure.

@Malacodor, routine will definitely be in there. Sleep is already setup to hit an AI with a "SleepComfort" boost around the same time every day, to simulate melatonin surges when the typical sleep time is approaching. AIs will find it easier to sleep at their usual times, and may even run into issues staying awake if too comfy.

As for "NeedSex," that's what "Intimacy" is for. It's a slightly broader category that includes deep emotional connections, as well. (E.g. love, romance, sex)

Dan Fedor - Founder, Blue Bottle Games

Malacodor's picture

Since when has sex anything to do with emotions? ;-b

Ran around with a clown mask before it was cool

dcfedor's picture

Hm. Euphoria? Anxiety? Desire? Excitement? Regret?

I'd say a lot :)

Dan Fedor - Founder, Blue Bottle Games

Malacodor's picture

These feelings are all optional, one can also have sex without them, especially alone.

Ran around with a clown mask before it was cool