Tools & Technologies

This area of EIS work focuses on enabling new possibilities for making and understanding media.

Much of this builds on our work on analyses and approaches. For example, a computational model of social interaction or of quests might build on our analyses of how those are represented in other forms of media and how they have been modeled in computer games and other computational media. Similarly, a tool for natural language generation or accessible game creation might build on design practices we have studied or explored in other contexts.

The technologies that result are often new computational models, enabling new types of computational media experiences. But they can also include technologies that do things like automatically create game maps from emulator play or that extract knowledge about build orders from RTS gameplay logs. The tools we create often aim to allow a broader audience to use our novel technologies to create new types of media. But we also create tools for tasks related to computational media, such as discovering relevant examples from the history of computer games or performing software studies analysis grounded in the operations of the software.

A visualization of the story sifter Winnow extracting narratively promising event sequences from gameplay

Story sifters attempt to automatically or semi-automatically extract nuggets of compelling narrative content from massive logs of game or simulation events. They're especially good at helping players make sense of the vast amounts of content generated by simulation-driven emergent narrative games, like The Sims and Dwarf Fortress. EIS has developed several story sifters, including Sheldon, Felt and Winnow, and several tools that aim to make the development of story sifters easier, including Synthesifter and Centrifuge.

A snippet of content from a StoryAssembler example story

StoryAssembler is a planning-based generative narrative system designed around the idea of intent-driven generation. The author of a StoryAssembler story specifies a list of requirements that any given playthrough of the story should fulfill, and the system plots a path through its library of available story content in order to ensure that these requirements are met. Moreover, unlike many other narrative generation systems, StoryAssembler supports generation of choice-based in addition to linear stories, allowing authors to write stories that respond dynamically to player choices.

Interruption Junction, a game by Squinky that uses Tracery for dialogue generation

Tracery is an approachable text generation tool and language. It's been used by middle school students, humanities professors, indie game developers, professional bot makers, and lots of regular people, too. Among other things, it's the language behind Cheap Bots, Done Quick!, which has been used to make a whole bunch of playful and artful Twitter bots.

Try it out in the online editor!

Three major processing elements of the Ensemble Engine

Social Simulation is a strand of EIS research focused on enabling legible and engaging playable experiences focused on interaction with simulated humans. The Comme il Faut (CiF) system is the foundation of the turn-based game Prom Week. One successor to this system integrates with the real-time reactive planning language ABL for the IMMERSE project. Another successor, the Ensemble Engine, improves the flexibility of CiF's action structure and the expressivity of its rules, while porting its core approach to JavaScript.

The Ensemble Engine codebase is open source.

A Gemini-generated game from Emma's Journey

Gemini and Cygnus are new technologies for game generation. Gemini is a pair of “twin” systems that both automatically analyze the potential experience and meaning of games and, using the same AI mechanisms, generate games that target author-specified experiences and meanings. Cygnus is a powerful new representation for games, employed by Gemini, that moves well beyond the games that can be expressed in the currently-standard Video Game Description Language (VGDL). Both build on EIS's analytical work in operational logics and proceduralist readings.

Code for adding Puppitor modules to a game

Puppitor is a game interface and set of state machines designed to create a playable model of character physicality in conversation. The core modules include a mapping from some form of keyboard-like input to a set of actions, modifiers, and cadences a given character can perform; a character specific "affect vector" used to track how much a character is expressing individual affects in a set, which are in turn updated by rules stored in a JSON file; and an animation state machine organized to allow quick switching of 2D animation frames based on the actions the player is performing and the emotional affects their character is expressing.

Placeholder Expressionist Thumbnail

Expressionist is an authoring tool for text generation. Influenced by Tracery, Expressionist is intended for non-procedural authors and utilizes generative grammars, which yield huge amounts of content with relatively little authoring effort. Where this tool diverges from Tracery is in its tagging affordance: authors can attach tags to chunks of content, and whenever chunks are used to build larger units of content, the result comes packaged with the tags of all the components. The generated content now comes packaged with author-defined tags about things that matter in the author's game and allows a game engine to request the kind of content it wants by specifying the tags that the content should come packaged with.

GameSage screenshot

GameSage is a tool that takes free-text input describing an idea for a videogame and lists the existing games that are most related to that idea. This tool utilizes the notion in LSA of folding in, whereby a new document that was not used during model training is fitted with a representation in the semantic space derived by the model. By treating the user’s input text (which specifies her game idea) as a corpus document (on par with the videogame Wikipedia articles we used to train our LSA model) and folding it in, we are able to derive an LSA vector for the idea. From here, we determine which existing games are most related to the game idea by using cosine similarity.

GameSage can be interacted with here.