I am fascinated by distributed virtual environments in which users can explore, learn, socialize, collaborate, and play. Despite advances in high-performance graphics and remote collaboration, the virtual worlds of science fiction lore are not yet in our reach. Currently, my research is focused on performance optimization in OpenSimulator, an open source 3D virtual environment application server.
OpenSimulator has been used as a platform for virtual classrooms, conferences, astrophysics simulations, urban simulations, and virtual fashion shows. OpenSimulator servers provide a physics engine, a 3D scene, audio/video media, and data services such as user login and inventory assets. Generally, they manage a common world state for every logged in user. OpenSimulator partitions the virtual environment into 256 m x 256 m parcels, called regions. An OpenSimulator deployment can be contained to a single machine and region, or can be deployed on a grid with many machines and regions.
Users log into OpenSimulator with virtual client viewers, which render the state of the world to the user and allow them to see and interact with the contents of a virtual environment. A user is represented as an avatar - a virtual model for which appearance and attire can be customized to the user's liking. One of the most pressing scalability challenges for these immersive environments is the need to support many simultaneous users, all of whom may wish to interact with the environment and other logged in users.
Users can create their own content and upload it into the world, as well as change the environment of a region itself. They expect that these changes are immediately reflected by the server to other users that are present. User behavior is unpredictable. Users can fly around the environment and teleport to another region. They can build structures and land features into an existing world. They can suddenly gather in one region for an event. Meanwhile, the same users are constantly sending updates to the server - as a result, any user action affects every other user in the vicinity. When there is a huge volume of interactions in a virtual environment, every user in that environment is affected (potentially negatively).
MMO game developers can control scalability through commercial-grade hardware, properietary game clients, game design techniques, and full control over client messages. In contrast, OpenSimulator is accessed through heterogeneous client viewers, may be deployed on a variety of consumer-grade hardware, and must support an unpredictable variety of user actions and user-generated content. My research on OpenSimulator is motivated by the long-term goal of creating vast and immersive 3D virtual environments that can support thousands of simultaneous users.