Open Source Platform
for interconnected virtual worlds

Naali GSoC2010

From Rex community wiki

Information about the RealXtend project and a feature idea for Google Summer of Code, 2010. Contact: Toni Alatalo, toni at playsign dot net.

Contents

About the RealXtend Project

RealXtend is a soon 3 years old project that is making an open source platform for extensible virtual worlds. The idea is that anyone can build their own 3d applications, like multiplayer games, architecture visualizations or simulations, and have them running live on the Internet or on own internal servers as they wish. We currently use the Opensim server with extensions, and have within the past year written a new client application called Naali (arctic fox in Finnish, as the idea of a generic client app is similar to Firefox). In this new viewer we use Ogre3d for the 3d scene, and Qt for UI and much of the internals like keyboard & mouse input and scripting support. The first end user usable release of Naali 0.1 was made in February, and the work continues now so that a steady stream of new releases will come thruout 2010. It has the basics working, but many features missing still, and thanks to the extensible nature it is open for any kind of new functionality in add-on modules.

Possible Summer of Code projects

We welcome proposals with own ideas from students. But here below is also a description of one idea that we would like to see implemented - map views to Naali, as 2d Qt widgets.

A GSoC project idea: Radar and Map Views to Naali

Overview

An essential part of 3d virtual worlds is having 2d from-to-top views to the scene. One reason is that with the relatively narrow 3d view given on the display there is typically no peripheral vision like in real life, so the awareness of the surrounding environment is weak. This can be helped with a radar like tool that shows e.g. nearby buildings, objects and people relative to self -- this is sometimes called a minimap in other systems. Another reason is the same as in the real world: we often need to navigate in unknown areas, so need a map to know what is where. In virtual worlds, like often in games, the map can and should of course also integrate realtime integration like indicate people or perhaps events.

Examples

From the Second Life(tm) viewer:

Requirements

(unless the student comes up with a better idea how to fullfill these needs)

  • A radar-like minimap view that shows own presence in the middle, rotates the view based on the own avatar orientation, and shows other avatars nearby as coloured dots
  • ..

Design and Implementation

We are open to new ideas how these basic orientation and navigation needs could be supported in the GUI, but also have a clear idea of how to implement the required basic functionality.

Naali is a modular system, where new features can be added in new modules which use the services other modules implement. There is a UiModule which is used to register to the menus and to show any Qt widgets so that they work with the Ogre3d-Qt integration we have. Making the own map widgets is normal Qt development. Other modules in Naali can be queried for information about the scene, such as positions of nearby people (avatars) and the terrain data.

We currently support modules written in C++ or Python (using PythonQt), with Javascript (QtScript) possibly added soon. The student can propose which language to use and why, and we can also discuss it as a part of detailing the design.

How to get the map images?

Experiment - using a birds-eye-view camera in the client, simply viewing the world from above. These screenshots made with unmodified Naali as quick tests, actual ones would be with using an orthogonal camera so wouldn't have the perspective effect that these do:

  • fishworld_fromabove_nowater.png
    • with water disabled, shows how normal regions with buildings above water would show
  • fishworld_fromabove.png
    • with water enabled, shows how water and underwater builds would show