Home

Note: This site is auto-converted from the classic version, which is forced to be unavailable, please expect issues including missing images, missing links, formatting and layout issues etc.


This project centers around creating a domain specific language (DSL) for procedural content generation (PCG) with grammatical representation. We formalize the grammatical content representation, design language features to facilitate expression the representation, implement the language with a translator to a general purpose programming language (C++), and show its application in different PCG problems. The DSL created in this project is called Grammatical Item Generation Language (GIGL). In this project, "item" is used broadly to refer to any content that are generated procedurally.

The initial motivation for the special interest in grammar based PCG comes from the observation that grammar can encode great variety with compact representation. An example of such representation can be seen in the figure above, which could be for an item in a gear-grinding type of games (like Diablo series or Path of Exile). In the figure, the top-left part is the description of the item to players; the right part is its underlying representation, a syntax tree following a grammar; the bottom-left part is the possible encoding of the randomized item generator in GIGL (the exact syntax may change through future updates on GIGL). In the right part, Circles are nonterminal nodes labeled with its type, rectangles are terminal nodes, triangles are productions labeled with the rule name ("nonterminal", "terminal", "production", "rule" are all terminologies from context-free grammar). Three types of nonterminal nodes and five rules are already able to produce this complex structure, and potentially a variety of others.

Programming Language:

Silver language (a DSL for langauge specification, by UMN MELT group).

Status:

Inactive (Latest Version: Version 0.8.5).

Borrowed Resources:

Silver and AbleC (C specification in Silver) from UMN MELT group.

Main Developer:

Tiannan "Fenix" Chen

Programming Language Tech Support:

Travis Carlson

Advisors and Acknowledgment:

Prof. Stephen J. Guy, Prof. Eric Van Wyk