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:
|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 :)