Emerson: Scripting for Federated Virtual Worlds
CGAMES, 2010

We introduce Emerson, a scripting language for virtual worlds that are seamless, scalable, and federated. These worlds present a number of unique challenges. Most importantly, scripts that specify the behavior of the world are distributed across many hosts and users may generate and host scripts. These constraints imply features not common in other systems, such as frequent use of asynchronous message passing for basic interaction between entities, a lack of trust between entities inhabiting the world, and live-editing of entities in the world. Emerson addresses these challenges with three core design concepts: entity-based isolation and concurrency, an event driven model with concise and expressive pattern matching to find handlers for messages, and strong support for example-based programming within the live virtual environment. Our prototype implementation of Emerson, based on the V8 JavaScript engine, demonstrates that a variety of applications can be easily written in Emerson in a live system.