Gamut is not a commercial product so it lacks much of the polish found in professionally developed software. Gamut has been a testbed for the ideas in my thesis. The system uses new kinds of interaction and inferencing techniques which make it possible for the first time to create complete applications using only programming-by-demonstration.
Though being able to make video games without hacking code is pretty interesting in its own right. This being a thesis, the board game domain provides a number of hard problems that Gamut has to be able to handle. First, board games are interactive. That is to say that the developer is creating something that has to act on its own when the player sees it. The developer will not be available to check the computer's results as the game is played. Thus, the inferencing system has to be pretty good at getting the right behavior down as quickly as possible.
There are two basic kinds of inferencing that Gamut can do that makes it good at learning rules in board games. First, it can form conditional kinds of behavior between arbitrary objects. For instance, let's say one wants to build a Pacman-like monster. Sometimes the monster runs toward Pacman and sometimes it runs away (when Pacman eats a power dot). The thing that determines which way the monster moves has nothing to do with the monster per se. Instead, it depends on an arbitrary piece of application state. In the figure below, the monster's direction depends on an aribitrary toggle switch.
[FIGURE: Pacman decision]
The other kind of inferencing Gamut can handle concerns learning chains of expressions. Consider a board game like Monopoly or Parcheesi where players' throw dice to determine how far their pieces move around the board. Like in the figure below. Consider how one might describe the location where a piece is supposed to move. It would be something like, "the square which is the dice's number of squares away from where the current player's piece started." This description refers to the configuration of the board, the number on the dice, the current player, and other information. Furthermore, each of these items form a chain of expressions where the information from one item is needed to determine the value of the next and so forth. Gamut is unique in that it can create chains of relationships like this of arbitrary length.