Building A Virtual City
|
Vision
The goal of this project is build a virtual city full of scripted
objects and activities. We envision a bustling city filled with
buildings, street vendors, taxis on the roads, and inhabitants going
about their business. The system we've built provides the basics: you
can add objects to the world and add scripts to them to control their
behavior and make the interact with each other and avatars. It's up
to you to take these building blocks and create a compelling,
interactive, and fun city for users to visit.
What might you script objects to do? Here are a few ideas:
- An interactive art gallery that guides the viewer through the
exhibit and customizes it based on the preferences of the
users currently in the gallery.
- A virtual taxi service that helps users get around the virtual
city. Besides transporting avatars, it might help them find
landmarks or events within the city.
- A capture the flag game in a virtual park.
- A marketplace that advertises its wares to nearby avatars and
responds to user queries for products.
- A mashup with external data. For example, allow users to explore
trending topics on Twitter by intelligently embedding them in the
3D space as objects and varying their size based on popularity.
- A set of bots that wander the world indexing its contents. The
index can then be queried to find events, content, or services.
These are a few examples, but we want you to come up with your own
ideas as well since applications we didn't think of are more likely to
stress the system in new ways and raise new issues. Anything you can
imagine being engaging, useful, or fun in a virtual world is probably
a good application to build.
|
How Applications Are Built
We've developed a new virtual world system called Meru and we'll
set up servers running a mostly blank world. You'll start adding
objects to this blank world -- buildings, cars, and shops to set the
scene. This will involve collecting meshes to store in the system and
creating some static objects in the world that display those meshes.
Then we need to bring the world to life by scripting objects to
make them active. In a script you can control the behavior of an
object (make it move, change its mesh, or animate) and interact with
other objects with messages. Each object starts "blank" and
static. The creator then edits properties and adds scripts to in
in-world. By telling it how to respond to events, either from
the system (e.g. another object came nearby) or from other objects
(e.g. an avatar sent a message to it), you can create interesting
interactive experiences for visitors to the world.
We talk about writing applications because usually a collection
of objects are scripted to work together. For example, in the art
gallery example described earlier, each display might be a separate
object and they all may be managed by a separate gallery object.
|
Research
Building a world using our system provides a number of benefits for
our research:
- Build experience constructing real applications in our world to
gain insight into building better scripting languages and tools for
doing so.
- Allow us to evaluate new scripting language and tools features.
- Instrument the system and collect statistics to feed back into
simulations.
- Deploy experimental implementations of services and evaluate them
on real workloads.
- Get real world use of the system. Improve its robustness through
actual deployment. This makes it more practical for others to build
and deploy their own worlds based on our system.
By developing content in our system you'll start to gain an
understanding of how the system works and hopefully help us learn
something about its behavior -- where are the bottlenecks? or what
aspects of specifying object behavior are especially challenging? or
what functionality turns out to be critical, but is currently missing?
|
More Information
For more information about the project, get in touch with
Ewen Cheslack-Postava
or Behram Mistree.
|
|