More AI Design

Still plugging away at the new AI feature. The exact workings are a bit hard to nail down, but I'm starting to see a few neat opportunities.

Right now, I'm trying to setup a sort of needs vs. interaction memory for each AI that helps them decide who to interact with, and how, in order to satisfy their needs. On one hand, I want it to help them discover new things to try, and on the other, I want them to remember what works so they can do it again if they need it.

The system works top-down, starting with the AI's specific need from the existing stats I have in place (e.g. hunger, security, etc.). Then, I want the AI to narrow down the list of potential interactions to try that will satisfy that need. And finally, I want the AI to compare that list of interactions against known and newly discovered tools/AIs to see if any of them match.

My hope is that they'll be able to do this top-down search in a way a lot like you and I do, allowing them to adapt to what's available. And so far, this seems like it should be doable without too much building.

One of the cool opportunities I'm seeing is that I can use some of the item crafting properties from NEO Scavenger to tag objects in this game. NEO Scavenger already had a pretty good basis for describing item functionality with terms like "rigid," "flammable," and "liquid." If I copy these over and make them into conditions, like all the other stats in the game, I can use these in the existing interaction/trigger system. This could allow me to start tracking things like "items with the liquid and hydrator conditions tend to quench thirst" while "items with solid and absorbent don't quench thirst." AIs can start analyzing an item based on properties and their previous experiences to decide if a new item is worth trying.

Another cool opportunities that emerges from this is that I may not have to specify possible interactions for every object in the game. Instead, I may be able to simply define relevant properties on every item, and the AI may be able to figure out which interactions would apply. E.g. instead of AIs only ever sleeping on beds, they may discover a couch or even a stray pillow has the "cushion" and "flat" properties, and try sleeping on those instead. It could end up just being silly, or it could be really interesting.

The trick is going to be getting the AI to see this info. It's all floating in front of me right now, and I'm trying to organize it in a way I can use it. My brain's going in circles, though.

Fortunately, the weekend is upon us, so perhaps a break will help. Have a good one, all!