Interaction Mapping, Condition Triggers

Now that I've got a better handle on how to make UI stuff happen, I've been making pretty good progress on the editor.

By the end of the day, I was able to get an interaction to display on the screen, with arrows pointing to downstream interactions it can yield, and each of those pointing to their respective yields, et al. It was also able to loop back onto itself, if appropriate (e.g. sleep cycle). Clicking and dragging would update the interaction's position, as well as all connected arrows.

The editor would also clear the screen and start mapping anew anytime the drop-down in the top menu was changed.

The next thing I'm looking into is adding UI widgets for each condition trigger (CT) on an interaction. There are CTs that describe things that happen to the petitioner/requester in an interaction, those applied to the granter as a result of being asked, as well as those that might happen as a result (used by AI in determining which interaction to seek next).

The way I picture it, any time a user chooses a new CT from the drop-down on an interaction, it adds a new CT widget below it to allow the user to select another one later. And deleting a CT removes it from the list, moving all CTs below it up one. (Like adding/removing rows in a spreadsheet).

And if I can get that to work, perhaps I'll add a widget to allow editing of the CT in a pop-up, which will update all game data referencing it. And if I get that running, I should be able to quickly edit the CTs for a given interaction. I'll also need to do a similar thing to the list of required/forbidden conditions on each interaction, as well as the ability to add a new downstream or upstream interaction.

And then, get back to editing game data. E.g. figure out how AI can seek items (food) from an object (fridge) that dispenses things which grant a stat boost (hunger). Probably a data reformat to make it easier to read/search in plain XML wouldn't be amiss, either.

Lots of work! But it's good to be doing actual work again, instead of flailing ineffectually with libraries.


matsy's picture

Sounds like you're back on the road of progress which should hopefully make for some more interesting reading! ;)

I'm really interested to see how you approach the AI of seeking food!

Please excuse my waffle below, my imagination ran away with me.

I'm dreaming of the AI finding out where the kitchen/canteen is through other crew interactions or searching for itself if that fails, and then eventually finding that there is no food in the fridge so it starts looking in other objects such as cupboards. Then other locations such as quarters and searching for food hidden in other objects such as beds belonging to other crew members, with the moral question if they should steal it or not. Spawning from this crew interactions of wanting to find out who stole their food.

Although I feel like that maybe a tad out of scope with what you're looking to achieve right now...

dcfedor's picture

Glad to hear I didn't scare you off with my tantrum :)

Your waffle may be pretty grand in scope, but it also sounds cool! I particularly like the stealing food aspect, as that plays into the crew drama/tension goal I have.

The AI I have in mind right now can query the current ship for nodes that provide a desired condition (e.g. something that reduces hunger). So this might undermine the "discovery" aspect. But there may be ways to filter the result list the query returns. Right now, AIs also have a "relationship" list which has relationship stats for everything the AI worked with in the past. So perhaps the AI can only choose from those that are on the list?

Then, the trick would be figuring out how to get stuff onto that list. One obvious source would be anything the AI can see (e.g. in the room). Perhaps conversations, as you suggest, might also feed that list.

Definitely food for thought! (Pun intended.)

Dan Fedor - Founder, Blue Bottle Games