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.
|