Spirit AI: Tightening the Feedback Loop in Character Engine

Aaron A. Reed
Spirit AI
Published in
4 min readJul 5, 2019

A key way for developers to become more efficient is finding ways to shorten the time between making a change and seeing it in action. In coding, this is sometimes called the “edit-compile-test loop”: if after making a change to code you need to sit through a lengthy recompile, a staging process, a reboot of an engine and a reload and reinitialization of a project — all to just see if the single change you made works — this is much less efficient than if you can skip or shorten any of these steps to get more immediate feedback.

Hence this relatable classic.

In the latest version of Spirit AI’s Character Engine, we’ve introduced a new feature for testing a natural language project directly within the authoring tool. This can significantly shorten the loop for certain kinds of projects, making it quicker and easier to try out the conversational interactions you’re authoring in a bare-bones format. For instance, if you’re working on a Unity game, you can skip the whole process of manually exporting your project, switching tabs to Unity, restarting and waiting for your game to reload.

Authors can now easily switch between the Plot and Game tabs to test their content in action.

You can also see some basic diagnostics about the input and response: for instance, we can see that the natural language classifier rated the player’s statement “I’m a friend, I swear it!” as most likely to be an Assertion. This kind of info has been exposed previously in debug messages (such as on the Unity console) but you might have needed to fiddle with log levels, or sort through a swath of debug messages from your own project, to find it. Having it front and center makes it easier to evaluate how Character Engine is understanding what you’re saying, and how NPCs are deciding how to respond. The current diagnostics information is limited, but we hope to improve it in a future release with a more elaborate sidebar that lets you trace each step the engine took in handling a player input and deciding on a response, to help diagnose situations where you see a response you weren’t expecting.

“Analysis. Why did you say that?” (Image from and copyright HBO’s Westworld.)

(Interestingly, in implementing the Play In Editor functionality we’ve created a powerful abstraction that will make it much easier to communicate between arbitrary Character Engine instances and displays going forward, which will allow us to support exciting features like standalone CE debuggers, integration with third-party testing tools, or even a browser-based or mobile UI for diagnosing CE games running somewhere on the cloud! But one step at a time…)

Play In Editor helps you understand your project’s small moments and individual interactions, but what about the bigger picture? We already offer a few views that show you things like how much of your knowledge model has been filled out, or (if you’re using “events”) how they fit together on a timeline…

…but we’ve been experimenting internally with more kinds of visualizations. For instance, what if you could see all the fragments of content you’ve authored and the ways they fit together?

Experiment showing data from a Character Engine project: orange dialogue lines link to blue content fragments that help customize their performances, sometimes governed by green states from the game engine.

This opens up new ways of grasping the “big picture” state of a Character Engine project with a complex possibility space. You might want to filter a visualization like this in many different ways: only showing content for a particular character or emotional state, or a particular scene, or for how different scenes can connect to each other. Each such filter gives you a different way of understanding the narrative possibility space you’re creating, and provides another key method of shortening the “edit-compile-test loop” of authoring dynamic character conversations.

This has mostly been a forward-looking post, but as we continue improving Play In Editor and other aspects of Character Engine (and its authoring tool), we hope to keep making strides towards further tightening the iteration loop, and helping authors of digital characters master a whole new kind of editing and revision.

--

--

Aaron A. Reed
Spirit AI

Writer and game designer interested in the future and history of interactive narrative. https://aaronareed.net/ https://igg.me/at/subcutanean