Research on the Sirikiata Virtual World

Vision

The Sirikata project is researching how to design a next-generation virtual world platform. The goal is to allow users to see and interact with a large, user-generated world, something which is impossible with current technology and algorithms. For example, virtual worlds today impose a "fog" past which you cannot see, or design their scenery such that you cannot see far, using winding passages or canyon walls.

Last summer, a team of nine CURIS students wrote new applications for Sirikata, ranging from an online bank to an in-world Wikipedia that allows someone to look up more information on any object in the world. This summer, we're building on what we learned from this application-level research to focus on core software systems.

Research

Achieving the seemingly simple goal of letting someone see and interact with the entire virtual world requires tackling a large number of unsolved research problems. For this summer, we have identified five research projects for you to work on. These five projects cover a broad range of subjects, including human computer interaction, networking, distributed systems, and graphics. Research over the summer is not limited to these five. We are open to a different idea or project you'd like to pursue. Our initial five ideas:

  • Distributed physics: The goal of this project is to have a distributed physics simulation by the end of the summer. If a world is too large or complex for a single server, Sirikata dynamically splits it across servers. Currently physics, such as collisions, only operates within a single server. This means that if there is a large object, such as a building, that lives on one server but which overlaps onto the region of another, the system will not correctly handle collisions. Correctly handing collisions involves having servers maintain shadow copies of remote state for which they receive updates (e.g., if the building moves), computing physics using this remote state, and resolving any inconsistencies that might arise when two servers try to simulate the same event and obtain different results due to slightly stale state.

  • Emerson scripting interface: The goal of this project is to have a useful and innovative scripting interface by the end of the summer. Emerson is the scripting language in Sirikata. It introduces several novel programming abstractions. For example, a single script can simultaneously control multiple virtual world objects. Each object might respond differently to message or events. Emerson also includes execution sandboxes as a basic programming abstraction, so that you can easily download and execute new applications from foreign objects yet know they will not violate your private data. How one represents these abstractions to a programmer is an open question.

  • Client graphics performance: The goal of this project is to greatly improve how complex a scene the Sirikata client can display. Because it depends on user-generated content from a huge variety of sources, a Sirikata client must display a much wider range of graphical models than centrally authored systems such as games do. Currently Sirikata conditions -- preprocesses -- content when someone uploads it to the Sirikata content distibution network (CDN). Currently, however, the client has remain mostly untouched. This effort is research because Sirikata introduces a new wrinkle: clients dynamically load content from the Internet. This wrinkle means that models have to trade off between their rendering simplicity (number of polygons and draw calls) and their file size, which can be wildly different.

  • World sound: The goal of this project is to incorporate a distributed sound engine into Sirikata. Most games and virtual worlds today use purely local sound: you cannot hear anything very far away. But sound is a very important part of a shared experience. People on distant virtual city blocks should both hear the police siren, or the helicopter overhead. One can't simply open n-squared audio connections, however. Instead, the system must somehow aggregate sounds from regions of the world and mix them in a hierarchy. While a conversation three blocks over not audible, a siren is.

  • Scene aggregate generation: Aggregation is one of the techniques Sirikata uses to allow you to see and interact with the entire world. The system dynamically takes distant graphical objects, merges them into a single object, and simplifies the graphical model. The exact form this simplified model takes and how the system computes it has a tremendous effect on performance and scene appearance. While there is a huge body of work in graphics on model simplification, these approaches assume a basic polygon mesh: Sirikata instead uses modern file formats that encode a set of building blocks which a model can have many instances of. The goal of this project is to improve the quality and reduce the size of the aggregates that Sirikata generates.

More information

The current Sirikata team is three Ph.D. students. Each of the above kprojects has one or more graduate students who will be a research mentor. For more information about the project, get in touch with Ewen Cheslack-Postava or Behram Mistree.