Sunday, April 23, 2023

Acuitas Diary #59 (April 2023)

I've continued my two-pronged work on Narrative understanding and on "game playing." On the Narrative side this month, I did more complex term grounding - specifcally of the word "obey."

My working definition of "to obey X" was "to do what X tells you to do." This is interesting because there is no way to infer directly that any given action qualifies as obedience, or defiance ... the question of whether someone is following orders (and whose orders) is always relative to what orders have been given. So proper understanding of this word requires attention to context. Fortunately the Narrative scratchboard stores that sort of context.


In addition to simply inferring whether some character has obeyed some other, I wanted to make derivative subgoals. If one agent has a goal of obeying (or disobeying) another agent, that's a sort of umbrella goal that isn't directly actionable. Before the agent can intentionally fulfill this goal, it has to be made specific via reference to somebody else's orders. So when this goal is on the board, the appearance (or pre-existence) of orders needs to spawn those specific subgoals.

In short it was a whole lot more complicated than you might think, but I got it working. Eventually I'll need to make this sort of relative word definition generic, so that new words that operate this way can be learned easily ... but for now, "obey" can be a case study. The Big Story needs it, since part of the story is about a power struggle and which leader(s) certain characters choose to follow.

Game-playing still isn't demo-ready, but it's starting to feel more coherent. I worked through all the bugs in the code that responds to simple description of a scene, then began working on responses to goals/issues. It was fun to leverage the existing Narrative code for this, the way I'd wanted to. In the Narrative module, that code serves to predict character actions, analyze *why* characters are doing things, and determine whether characters are meeting their goals, whether their situation is improving or worsening, etc. But as I'd hoped, a lot of the same structures are just as effective for control and planning.

For example, let's say Acuitas is playing a human character and is told "you are hungry." Something like this unfolds:

New issue: <self> is hungry
Problem solving: <self> eat food
Prerequisite check: if <self> does not have food, <self> cannot eat food
Test: Does self have food?
New issue: <self> does not have food
Problem solving: <self> get food
Prerequisite check: if <self> is not colocated with food, <self> cannot get food

... and so on. The chain continues until some actionable solution is found.

A funny note: another one of the prerequisites for eating, at least in the traditional sense, is "character must have a mouth." This turned up as an obstacle in early tests, because I had apparently neglected to teach Acuitas that humans have mouths. Ha!

Until the next cycle,
Jenny

No comments:

Post a Comment