by J Orwant
EGGG, the Extensible Graphical Game Generator,
is an experiment in automated programming By
concentrating on a particular domainÐ gamesÐ
EGGG allows users to create applications with a
minimum of programming effort We codi®ed the
similarities among games and game programs
into reusable software components that
decouple the rules of a game from its
implementation As a consequence, users can
create games merely by describing the rules to
EGGG, which then generates a fully functioning
game program In this paper, we survey the
design and implementation of EGGG and provide
some examples of games that can be created
with the system
P
rogramming is hard But programming for a par
ticular domain need not beÐassumptions about
the domain can be built into the language and into
whatever system (compiler, translator, interpreter,
or combination of all three) ultimately turns the pro
gram into an executable application
Games have several advantages as a domain for au
tomated program generation They have the right
amount of diversity (not too little, not too much);
many games can be easily represented with a small
set of rules; and the generated programs need not
be perfect to be usable
Classic games (poker, chess, tictactoe, rockpaper
scissors, and so on) are much more alike than one
might imagine, and these similarities were used to
create a universal game engine called
EGGG , the Ex
tensible Graphical Game Generator
EGGG is a pro
gram that generates programs: designers provide it
with the rules of a game, and the rules are rendered
into an actual computer game ready for play The Atari 2600 system revolutionized the game in
dustry in 1978 because of cartridges; previous sys
tems (with the exception of the Fairchild Channel
F) were able to play only a static set of games The
decoupling of hardware and software was made pos
sible by simpler and more ¯exible hardware com
ponents We take the decoupling further by creat
ing simpler and more ¯exible software components
Instead of decoupling hardware from software,
EGGG
decouples a game's implementation (the ªhard soft
wareº) from the rules of play (the ªsoft softwareº)
EGGG uses a highlevel language that lets designers
describe games in as few words as possible, while still
retaining the precision that the underlying engine
needs to render the language The language is ex
pressive (users can create almost any kind of graph
ical twodimensional game) and concise (statements
are short and powerful; debugging is easy because
users can see the entire game on one page)
The design criteria for the
EGGG language and en
gine follow, in decreasing order of importance:
cGame descriptions should be briefcEasy games should be easy to generate, and hard
games should be possible to generate
cThe EGGG engine should contain as little a priori
information about particular games as possible
r Copyright 2000 by International Business Machines Corpora
tion Copying in printed form for private use is permitted with
out payment of royalty provided that (1) each reproduction is done
without alteration and (2) the Journalreference and IBM copy
right notice are included on the ®rst page The title and abstract,
but no other portions, of this paper may be copied or distributed
royalty free without further permission by computerbased and
other informationservice systems Permission to republishany
other portion of this paper must be obtained from the Editor
ORWANT 00188670/00/$500 2000 IBM IBM SYSTEMS JOURNAL, VOL 39, NOS 3&4, 2000 782
E GGG :
Au tomate dprogramming
for game gene ration
cIt should be easy to create variationscThe EGGG engine and the games that it generates
should be portable across platforms
cThe games generated by EGGG should be easy to
modify
cEGGG should not take a long time to generate
games, and the games that it does generate should
not run so slowly that playability is affected
Game categories and descriptions
A taxonomy of games was developed for
EGGG and
is described in detail elsewhere 1Unlike most pop
ular game categorizations that focus on the struc
ture of the game, or game theoretic categorizations
that focus on information and probability, we focus
on what matters to a game developer: processWe
classify games according to the following attributes:
1 FreneticsÐwhether the game requires quick ac tion, or is timed (used to