This Master's report introduces GAMESMAN, a system for generating graphical parametrizable game applications. Programmers write game 'modules' for a specific game, which when combined with our libraries, compile together to become stand-alone X-window applications as shown in the Figure below. The modules only need contain information about the rules of the game and how the game ends. If the game is small-enough, it may be solved, and the computer can play the role of an oracle, or 'perfect' opponent. This oracle can advise a novice player how to play, and teach the strategy of the game even though none was programmed into the system! If a game is too large to be solved exhaustively, the game programmer can add heuristics to provide an imperfect computer opponent. Finally, the application can provide a useful utility to two human players who are playing each other, since it can be a 'referee' who constrains the users' moves to be only valid moves, can update the board to respond to the move, and can signal when one of the players has won.