Jon Orwant's EGGG: Automated Programing for Game Generation (IBM Systems Journal) is about generating games from a high-level (abstract) language. The cited paper is based on his dissertation (MIT, 1999). This is interesting work for many reasons; one aspect is that in order to design such a language, you need to worry about the features of games.
Jon describes EGGG's purpose as:
(letting) 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 expressive (users can create almost any kind of graphical two-dimensional game) and concise (statements are short and powerful; debugging is easy because users can see the entire game on one page)...
Jon gives the design criteria as follows:
- Game descriptions should be brief.
- Easy games should be easy to generate, and hard games should be possible to generate.
- The EGGG engine should contain as little a priori information about particular games as possible. It should be easy to create variations.
- The EGGG engine and the games that it generates should be portable across platforms.
- The games generated by EGGG should be easy to modify.
- EGGG 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.
It turns out that Ramesh Srinivasan et al. (MIT Media labs) have an idea of a Community Compiler. Their idea is based on Orwant's work in as much as they hypothesize a similar high-level language that could drive generation of "communityware".
Ramesh sees EGGG as important for several reasons. One of which is that it decouples the rules of a game from its implementation. With a Community Compiler, they imagine empowering participants with the ability to experiment and iterate on community design. Or in their words:
we hope that community members engage in the “iterative process of trial and error” and achieve fluency about the domain: their community.
Echoes of Lambdo-Moo perhaps.
Is a hypothetical "virtual world compiler" powerful because it could on the fly generate customized worlds for communities of participants. An uber instancing machine? For those of you familiar with John Arras' work, he has demonstrated at the last two MUD-Dev conferences work with automatic world generation algorithms. Here, I imagine there to be a fundamental similarity and yet a basic difference: should community be first shaped by world, or vice versa?