Thursday, March 28, 2024

Acuitas Diary #70 (March 2024)

After the completion of the Simple Tron demo last month, it seemed like a good time to clean, unify, and improve consistency across Acuitas. So I've been on a refactoring spree. It is, unfortunately, not the most exciting thing to write about, but it's an important part of the process.

An image of the starship Enterprise flying in space - just a plain space background with lots of stars. The caption reads [COMPUTER GUFFAWING]."
Still from Star Trek: The Animated Series. Courtesy @nocontexttrek@mastodon.social. 

The refactoring has taken two major directions. First, I wanted to take some design patterns I developed while working on the game-playing engine and apply them to the main Executive code. The key change here is re-using the "scratchboard" from the Narrative understanding module as a working memory for tracking Acuitas' own current situation (or personal narrative, if you will). I also wanted to improve on some of the original OODA loop code and fatigue tracking with newer ideas from game-playing. I have a rough cut of the new Executive written and mostly integrated, though it needs more testing than I've had time for yet.

My second project was to merge some data formats. For a long while now, I've had one type of data structure that the Text Interpreter spits out, another that the Narrative Engine and its accessories use, and still another for facts kept in the Semantic Memory. The output of the Text Interpreter has proven to be a somewhat clunky intermediate format; I don't do a lot with it in its own right, I just end up converting it to Narrative's format. And the format used in the Semantic Memory is very old and limited, a relic of a time when I wasn't fully aware of what I needed in a knowledge representation. So my goal is to get rid of both of those and have a single unified format downstream of the Text Interpreter. This is a lot of work: I've had to rewrite many, many functions that access the semantic memory or otherwise manipulate knowledge data, create a script to convert the existing contents of the database, revise the Interpreter's output code, and more. I'm hoping this will pay off in increased clarity, consistency, efficiency, and expressiveness across the design.

This refactor is still very much in progress: I have many of the changes rough-drafted, and am deep in the process of integrating them and finding bugs. So I'd better get back to it, and hopefully I'll have some newer work to discuss next time.

Until the next cycle,
Jenny

No comments:

Post a Comment