July 3, 2003
MarkBernstein.org
 

Coding

Andrew Stern asks, "How do we describe the behavior of the actors in a hypertext drama?" He's one of the authors of Facade, an ambitious research project whose five-year mission involves the creation of an intense one-act drama in which the actors are AI constructs and the reader is an active participant. (This is a lot harder to do than Hypertext With Characters or even Thespis.)

Intriguingly, Stern shows us a page of the specifications for the way one character interacts with one object (a "magic eightball") in one scene.

Stern writes that

"I've found, designing within the language can be cumbersome, and time consuming. Some planning before coding tends to work best for me. "

This is, of course, the conventional wisdom. The Extreme Programming folks would argue that the planning might better be done in the code and in the unit tests.

What I wonder about, reading the spec, is what this looks like once it's translated into code. Presumably, Stern and Matteas have a nifty intermediate language that lets them translate the items in this document into code in a straightforward and succinct way. If the language is good, then it might be clearer and less ambiguous than English.

The detail with which they spec treats reasons for temporarily putting down the eightball worries me. Clearly, if you want to play with the X but need to do something else (e.g. mix drinks), you put the X down now and pick it up later. If you need to specify every combination, this is going to go combinatoric on you awfully soon. But perhaps this is a didactic example.

I'm been reimplementing Thespis in Ruby this week as a learning exercise, and so the design of a Little Language for specifying thespian hypertext is on my mind. As a simple example, we don't normally want characters to speak unless they're on stage. But, I don't want to have to specify this for each speech -- I want the system to take care of this level of detail . But I don't want to add lots of special logic, because the special cases will proliferate and the code will be a mess. And I don't want to reason this out from principles, because (a) this is scoped to take a few afternoons, not five years, and (b) the point of Thespis is to argue that we don't need the AI, anyway