Friday, April 10, 2009
Virtual Community - Accumulating Knowledge?
Community needs a structure and rules to enable members to pursue their agendas and in the process forward goals of the community. Members work for a common goal according to the code of conduct and they are rewarded according to the community rules. Be the reward elevation in community hierarchy (affiliation and power), visibility in press (fame), advantage to their business (money) or advancement of their cause (fulfillment). Without clear rule set the community can soon degenerate to a power game where original goals fall victims to ego and shortsightedness.
Communities need leadership in one form or another. As any living organisms they need coordination. The rules of a community ought to elevate those persons to coordinators who have agenda close to that of community, required knowledge to evaluate decisions, high moral standards and good people skills.
It is important that individuals are respected for their strengths. Typical underachievement of a community is a situation where new members are not valued. Informal community can become fearful of new candidates as the social structures in place are too weak to handle possible destructive individuals. It is also not unheard of that existing members are jealous of their influence and try to discourage new members to protect their status. Rules and code of conduct can effectively discourage such behavior by placing new comers to status of apprentice and under guidance of experienced members. Thus new members become assets instead of potential threats. The code of conduct ought to encourage supportive approach to new members and underline their value.
Members have different skills and knowledge. To accumulate knowledge, solving differences should be logical process based on facts. Accumulating knowledge in a community requires strict logical approach to argumentation and it should be underlined in the code of conduct. Members should be encouraged to argument, listen and learn to enable themselves and the community to gain knowledge. Instead of taking the easy way out the community should acknowledge that in science and engineering one of two sides of an argument is usually more correct. It should also be noted that the right side is not necessarily that of majority. Correct solution can be deduced only by applying the entire thought chain from question to answer. Corruption, hypocrisy and egoism are the evils that lurk in every human soul and threat to blur the process of logical deduction.
Contributing to a community should be enjoyable. The challenge with online communities is the lack of empathic attachment. As it is not possible to exchange expressions, gestures, touch and tone of voice the entire world of subconscious communication is ruled out of the equation. Subconscious communication is basis of trust and friendship. Therefore every member is collaborating with strangers. How much loyalty does anyone feel for a stranger? Hence relationships between members can change daily and the social backbone does not emerge. Strength of the community is not measured by weakest or strongest individual but by the loyalty and friendship between pairs of individuals. Video conferencing, voice chat and live meetings are crucial part of daily routines of a successful online community.
Thursday, January 29, 2009
Building Enterprise OpenSim Grid on 2nd Birthday

Building enterprise quality virtual environment services out of OpenSim is a complex operation but today you can do it all with open source software. OpenSim still enjoys alpha status and many of the core components are under active development on daily basis. Following the svn head and figuring out stable revisions to baseline your system to is challenging task and not suitable for faint hearted.
First things first: I named my grid "Bubble Cloud" according to the website where we have been drafting out next generation virtual reality protocol MXP with Ben Lindquist and Ryan McDougall :
Building
I went for the following architecture:

I reserved one virtual machine (Psi) for shared grid services called UGAIM according to User, Grid, Asset, Inventory and Messaging. Another virtual server went to monitoring use (Omega). Last but not least I configured 2 virtual machines for simulators which run regions (Alpha and Beta).
All virtual machines have 2 Giga bytes memory, 1 Xeon Core and 20 Giga bytes of raid disk.
OS selection was a tough one as .NET is rumored to be very good choice for running OpenSim servers. In the end I went for open source and thus latest stable Ubuntu was the clear choice as it is most used OS for running OpenSim servers.
Database was no brainer as MySQL is the most used database in OpenSim Ubuntu environments. I installed local MySQL instances to all virtual machines to enable fast database access and to save in resource costs.
Mono version was another hard question but I thought to go the easy way and use the standard mono version provided by the Ubuntu release (1.9.1) all though version 2 has many optimizations available. It might be that I need to upgrade soon to newer mono.
For easy administration I was happy to acquire linux init scripts from Sean Dague's Linux Service Helpers project for both ugaim and simulator:
http://forge.opensimulator.org/gf/project/linuxservice/
By copying these scripts to /etc/init.d and linking them to run levels you can have your OpenSim services start and stop automatically with your server.
Monitoring
To be able to measure the resource utilization, receive alerts, diagnose problems and track service availability I chose Zabbix server to be installed to Omega virtual machine and agents to other servers. Zabbix is excellent open source monitoring solution:
http://www.zabbix.com/
Configuring basic zabbix Linux monitoring is easy and can be done in two hours. Monitoring OpenSim servers and regions took a bit more work. I did this with Web Monitoring feature by hooking separate scenarios, triggers and IT services to each component. As a result everyone can follow availability figures of Bubble Cloud by bookmarking this url:
http://monitor.bubblecloud.org/srv_status.php
It is also possible to follow things like processor loads, memory usage, network traffic and disk space:
Cost
Running Enterprise OpenSim Grid is not free but you do not need mega corporation to finance it. One needs to pay for Virtual Machine rents or alternatively hardware costs and server hotel rent.
Renting these virtual machines will cost anything between 100 - 500 us dollars per virtual machine depending where you acquire them and if you pay by use or constant rate.
If you decide to build a server yourself (2 x Quad Core Xeon, 32G memory, raid 1-0 disks...) and take it to good server hotel with 100 Mbps or better internet connections you have to prepare for 5000 us dollar up front cost and 100 hundred dollar monthly cost. With this setup you can get 8 heavy duty virtual machines with 1 Xeon Core and 4G memory. If you divide the cost for period of 3 years you get approximately 30 dollars monthly cost which is not bad at all. The downside is the up front investment, knowledge requirement and time needed.
If you have the knowledge you can build the environment yourself but if you need to hire someone the time required for building this kind of setup is at minimum 1 week for the hardware and 1 week for the software.
Thanks
I want to thank all the nice people in freenode irc channels #opensim, #osgrid and #zabbix for their invaluable effort put in building this software and the help they gave to me in my learning process.
Wednesday, December 3, 2008
Demo for MXP Virtual Reality Protocol
MXP is one candidate to become standard means of client to server communication and server to server interoperability. Typical applications would be systems like OpenSim, SecondLife, realXtend and their interoperation.
Interactive bubble bouncer demo client can be downloaded from: http://www.bubblecloud.org/
Client requires modern 3d video card (shared profile 2.0), Microsoft Windows with .NET Framework 3.5 and XNA runtime. If you do not have them you can download them install time.
If these requirements are too much you can check the video: http://www.youtube.com/watch?v=SiO7D_HDJR4
Saturday, November 29, 2008
Metaverse eXchange Protocol (MXP) - A Practical Virtual Reality Protocol
http://www.bubblecloud.org/
MXP is a UDP binary protocol offering structured messages for distributed 3d simulations. MXP has well defined scope but extendability and flexibility has not been forgotten. It carries as payload a genre specific protocol which is used to communicate for example animation sequences and interactions. MXP has well defined domain model and use cases which are good read for those who are interested in this area of expertice. MXP leverages novel ideas enabling unpreceded level of virtual environment scalability and interoperability.
Current proof of concept implementation demonstrates 100 moving objects with client bandwidth use of 75 kbps (bits per second) without optimized version of movement message. Optimized movement messages will theoretically offer 15 kbps bandwidth for 100 objects and 1.5Mbps for 10 000 objects.
MXP supports bubble cloud concept on both client to server and server to server messaging. Bubble cloud concept consists of linked spherical server bubbles which may overlap and be sized and arranged in any 3 dimensional configuration. Clients roam between bubbles seemlessly in analogy with mobile devices and base stations. Bubbles exchange information about objects they contain so that clients connected to one bubble observe objects from the neighbouring bubbles as well. Any client may inject objects to the bubble in the boundaries of access rights.
We are looking for more people willing to join this community effort and projects like realXtend and OpenSim which are able to give us requirements and use cases for the specification work. More details can be found from the following address:
http://www.bubblecloud.org/
Sunday, October 19, 2008
Improving Second Life and OpenSim Grid Configuration
While this configuration is simple and effective it is possible to improve it significantly to provide better performance, redundancy and local load balancing. In redundant grid one simulation node may shutdown and the grid remains accessible in that location. Local load balancing means that the same space is simulated by several simulations which exchange state information. One such configuration is dual cubic lattice:
The following page contains example calculation estimating that redundant dual cubic lattice provides 25% more objects and 100% more clients with the same bandwidth usage and same maximum object size as simple cubic lattice. The example assumes that network capacity is the limiting performance factor:
Advanced Grid Configurations at http://wiki.setp.info
Sunday, October 5, 2008
OpenSim Starts a New Era?
The functional clients seem to be branches from the open source SecondLife client and as such have the same glitches and usability problems. It would be great to see a bravely redesigned client with good usability and smooth functionality. SecondLife and the OpenSim clients remind me of the good old rule: "Prefer quality over quantity".
Why is it that still even now after all these years the avatar in SecondLife moon walks like a zombie. Creative directors need to appreciate how important immersion is in 3d environments and how fragile it is.
http://opensimulator.org/wiki/Main_Page
Thursday, September 25, 2008
Open Themes - Key to Coherent Media
Tuesday, September 23, 2008
Virtual Brought to Real World
http://www.polygon-playground.com/
Thursday, September 18, 2008
Vision, Theory, Standards and Engineering
A great vision has been evolved by theorists and scholars to in depth model. The model albeit being detailed is not practical and subsequent standard have the same nature. Which brings us to the standard compliant implementations that do not work, implementations that do work but are nothing alike the standard and finally the implementations that claim to implement the standards but actually provide inadequate standard interfaces and actual operation is based on proprietary interfaces.
After this the path is forked. Some standards embrace solutions from the working implementations and fulfill their potential. Others do not evolve but stubbornly rely on the original theoretical models and actually hinder the development instead of accelerating it.
My current observation is that unfortunately the latter is the case with virtual reality related standards. It is quite obvious that there are very well functioning implementations like World of Warcraft and other massively multiplayer online role playing games. The existing commercial and non commercial social 3d worlds in contrast are painfully cumbersome.
The worst engineering misconception is that virtual reality is web in 3d. That alone brings many misleading ideas to the table. For example dynamic object loading which is visible to the user breaks the immersion. Another good example is that 3d protocols and model formats are TCP and XML based. 3d has more data and binary formats are practical in model presentations. At minimum XML ought to be encoded to binary format when larger models are in question. Grammar could be the same but encoding more efficient. Virtual reality has dynamics which do not exist in web and again practical engineering solution is to use UDP based messaging. Communicating the dynamics requires massive amount of messaging between client and server creating encoding performance bottlenecks if XML is used.
It is high time that the standards are re-evaluated from engineering perspective and solutions from MMORG genre are adopted to standards. There is no need to worry about backwards compatibility as long as there are no well functioning implementations. I would also like to question if competing standards are actually a bad thing. Little competition has always been a good thing. It forces the opponents to go for the best possible result they can achieve.
We have the technology and we have the knowledge today. We only need to ask the right questions. What is the minimal standard required to realize virtual environments? The first rule of software design is to solve the known problem with minimal complexity. Same principle should be applied to standards.
Future Wikia Vision about Virtual Reality
http://future.wikia.com/wiki/Virtual_reality
Tuesday, September 9, 2008
Popular Open Source 3D Engine
http://www.ogre3d.org/
Ogre3D is one of the most popular open source engines and has many stunningly beautiful rendering features.
Monday, September 8, 2008
Development in the Open Source SceneGraph Arena
http://www.openscenegraph.org/projects/osg
One example of the applications:
http://www.vr-fun.net/
OpenSceneGraph may turn out to be the future standard for open source 3d. Solid open source technology combined with solid standard will make the basis for global integrated virtual environments.
Sunday, September 7, 2008
Following News about Virtual Reality
The site also includes various other categories but VR category seems especially useful as there are not many if any good VR aggregate feeds about.
Sunday, April 29, 2007
Interesting Virtual Worlds
- http://www.secondlife.com
- http://www.activeworlds.com
- http://www.vlb.mtv.com
- http://www.kaneva.com
- http://www.there.com
- http://www.moove.com
- http://www.multiverse.net
- http://www.blaxxun.com
- http://www.mediamachines.com
- http://www.worldforge.org
- http://metaverse.sourceforge.net
Sunday, April 15, 2007
Virtual Reality Architecture
One way to craft architecture for virtual reality system is to rely on basic server client architecture where server is running an environment simulation and clients are user interfaces to the simulation.
Essentially client consists of user interface framework (3D rendering engine, 3D sound engine, windows, panels, and widgets), virtual reality model (scene graph and media caches), session management (state machine and session data pool), command interface (commanding avatar), state synchronizer (synchronizing server virtual reality model) and network engine. One of the key design challenges for client is that the user should experience smoothly evolving and plausible virtual reality despite of network and server lag. Even writing stand alone 3D games with smooth game play is not easy. Consequently clients are often written with C++ (no garbage collection lag) and have only one executing thread (no unpredictable short thread stalls). Exceptions to this rule are long lasting and unpredictable operations like hard drive access and network transmission which should be executed in a dedicated thread. Another good design principle for real time applications is “keep it simple (s)” and if possible reserve required data structures at initialization phase (no memory leaks at runtime). If one considers client purely as a user interface it is possible to concentrate on rendering engine, UI-framework and network engine without creating overtly complex system.
Virtual reality server has quite a few roles to fulfill: physics engine, rule engine, artificial intelligence, virtual reality object model, model persistency, simulation control, server management and network connectivity. Network connectivity can be further divided to network engine, command processor, state synchronizer, session management, media sharing and IAM (identity and access management). Many of these roles are clearly separated and it is tempting to divide them to several separate server applications. However complexity tends to cause problems. Heterogeneous distribution is harder to administrate and is more prone to failures than homogenous server cluster with load balancing. One good way to do heterogeneous distribution is to divide real time and non real time functionality to separate servers. Another way is to distinguish between high trust and medium trust services thus separating key services to trusted parties and leaving the bulk computing load to less secure servers. These rules suggest a threefold server division: virtual reality server (bulk computing), identity server(s) (high trust and virtual reality integration services) and file server(s).
Virtual reality server is a near real time simulation application running the virtual environment simulation. The core components are virtual reality object model (simulation state), physics engine (provides elementary physics), rule engine (scripted object interaction and object internal functionality), artificial intelligence (scripted AI-functionality) and simulation control (coordinates simulation execution and rule execution stack). Virtual reality server could be implemented with C++ (high performance) or .NET/Java (higher level language providing cleaner code base). The most common way of load balancing between virtual reality servers is spatial division (each server simulates separate volume).
Identity servers are important building block for global virtual reality where avatars and other objects can traverse between servers. They can be compared to DNS network in architectural sense. Identity servers govern both user and machine identities. They may also govern object identities which are in transit from server to server. Identity information in this context consists of identification, authentication, role, category, statistics and location information. Identity servers need not be virtual reality specific solutions but existing identity governing standards and systems can be utilized.
File servers are version aware file repositories providing all shared files for the virtual reality system: client binaries, server binaries and media files. Existing versioned file sharing frameworks can be utilized without additional requirements.
System components like clients and servers should be relatively easy to develop and integrate. Such global open virtual reality network requires that all system components converse with each other utilizing well defined protocols.
Saturday, April 14, 2007
SpaceNavigator Review - Real Value for VR Roaming
It has been couple of weeks since I bought my first virtual reality gear. I expected another interesting but useless gadget soon to be abandoned to the graveyard of past interests. True enough the clerk at shop greeted SpaceNavigator order with 'Oh you gonna buy one of those weirdo space buttons!'. Right... Well it was too late to back down. I bought my new toy with meager 60 EUR which I secretly considered real bargain compared to any other Virtual Reality hardware out there. The navigator weighted promisingly heavy on my palm...
At home the installation was smooth with no problems what so ever. First things first as they say. I went and downloaded Google Earth which is the demo tool in the marketing videos. I had some previous experience with Google Earth but it had seemed to be a bit unintuitive to use as familiar first person shooter controls (WASD + Mouse Look) were not available. You could zoom in and rotate the globe nicely enough but it did not feel like flying around. When I started Google Earth with my SpaceNavigator I did not know what to expect. First experience was that I could really fast get good grip about how to rotate around and move. The only problem was that the actual movement was frustratingly slow. I went to SpaceNavigator Control Panel and changed the overall speed to maximum. Even with highest speed setting Space Navigator provided excellent accuracy in all axes. Immediately I understood what SpaceNavigator and Google Earth where about. I finally felt in control of my orientation and place in the virtual environment. I had to find some legendary mountain ranges and fly in the canyons. Google Earths beautiful on demand data loading caused some delays and for some reason Google Earth hanged on my computer regularly after certain amount of roaming around. Despite these small but irritating problems I felt like babbling about SpaceNavigator to anybody wishing to listen.
Another major application for SpaceNavigator would be different modeling tools. I figured to try it on Google SketchUp as it is free and easy to use. SpaceNavigator started to work with it immediately, though I had to change the speed from the control panel back to the lowest setting. Even then the overall feeling of the SpaceNavigator with SketchUp left me with nagging suspicion that there was something wrong with the rotations and that the relative speed between rotation and translation was not tuned properly. While only rotating the scene it seemed to regularly translate to some direction or another rendering the rotational functionality around Y-axis pretty much useless. It is possible that I did not really know how to use SpaceNavigator with SketchUp as I am not very familiar with modeling and the tools related.
After these mind altering experiments I finally admitted to myself what was the real application I had subconsciously intended the SpaceNavigator for. I started to look for the SpaceNavigator in the joysticks section. I am playing several 3d games with joystick support and most pressing need is in the bf2142 vehicle flying section as my joystick is big and clunky which tended to get me killed when I tried to switch to it from keyboard and mouse combination. Unfortunately there was no manufacturer provided joystick driver for SpaceNavigator so after some searching I found the following driver from the support site:
http://www.3dconnexion.com/forum/viewtopic.php?t=336
The joystick driver was slightly challenging to install and configure. One would recommend it for people with decent skills with drivers. After installation I got it running easily for bf2142 but for my disappointment the driver did not provide enough flexibility on how movement in given axis is mapped to the 360 degree scale of joy-axis. Due to this I could not really get maximal accelerations using the SpaceNavigator. I added an improved driver to my wish list.
All in all I would rank SpaceNavigator as a must have gadget for anyone with interest in 3D environments. The device seems to be of excellent quality, affordable and with improved drivers the possibilities are limitless. Cheers to 3Dconnexion.
Tuesday, April 10, 2007
Requirements for Virtual Reality
One way to define a system is to list the requirements.
Functional requirements:
- Environments are three dimensional
- Environments have identities
- Users have identities
- User identities are shared between environments
- Identities are governed by trusted parties
- Shared media is governed by trusted parties
- Access rights for entering and manipulating objects and spaces exist
- Access rights are governed by environments
- Separate environments can be linked to each other
- Avatars and subset of objects can move between environments
- Objects can exist only once in one environment at a time
- Rendered presentation of the environment is visually appealing
- Newtonian physics or similar elementary physics exist
- Some of the objects can be moved around and manipulated
- Users are presented by avatars
- Users see avatars of other users move and act in near real time
- Users can communicate by avatar emotes, text and voice
- Users can interact with the environment through their avatars
- Functionalities are presented in the environment by objects
- User interfaces to functionalities are presented in 2 dimensions
- Users can add new content and functionality by uploading media and scripts
Nonfunctional requirements:
- User experiences smooth movement and animation
- User can switch between identities and environments easily
- Communication protocols are standardized
- Media formats are standardized
- Functionality script languages, scene object model and API’s are standardized
- Communication channels can be encrypted if needed
Web 2.0 and Web 3D
Moving from Web 2.0 world to 3D environments will give us new dimension which in turn brings expectation of presence and interaction. When I browse the web I don't mind not experiencing the other browsers. Consider the situation with three dimensional environments. Empty corridors are spooky especially if you know you are hopping inside popular sites. This analogy will bring interesting problems on traffic hour when places get really crowded.
Messing around in three dimensional environments certainly gives you a lot of new things to do but the old problem of good user interfaces remain as you want to use some tool more complex than a lever. One would expect that we don’t ditch the good old solutions like Web 2.0 pages on this instance but rather wrap the old pages on surfaces. Closer look to the interface just pops it in your personal HUD as a semi transparent window.
The bloom of the 3d web is still behind a barrier. The analogy for HTML exists in VRML and X3D but the problem is that the 3D environment has brought new requirements which are not yet incorporated in the standards. For example the ongoing discussion between browser and server about avatar locations, appearances and emotes are blank points. The protocol extensions do not need nor should be complex. Players just need to agree on it and write it down.
These thoughts are comments to interesting post in Susan Wu's Blog
Monday, April 9, 2007
Where Do We Stand on Virtual Reality
Unlike many science fiction visions virtual reality has been proven to be a sound concept. Take any number of three dimensional online multiplayer games in the market and you have virtual reality in different scales and settings. In addition to games there are also promising virtual environments like Second Life and Virtual Hills & Laguna Beach.
Where are global shared virtual environments, integration to our existing infrastructure and the perfect immersion outlined in the literature? It all seems to boil down to business viability. Whether the original inventors of given technology are nonprofit or not the actual widespread use depends on business factors. Market is becoming ripe for virtual reality as more and more users have 3D-capable workstations and experience in operating in 3D-environments. A missing key for the business viability are still royalty free and practical standards. When good roalty free standards exist we are one step closer to the critical mass. When these standards are supported by reference implementations equal in quality to the modern games it is time to start investing to the VR-industry. Large market demand for immersive VR-equipment will in turn encourage the large device vendors to invent more innovative human interface solutions.
Further reading:
Virtual reality on Wikipedia
Standardization efforts:
Web3D Consortium (X3D and VRML)
Khronos (Collada)
Virtual reality examples:
Game List
Second Life
Virtual Hills and Laguna Beach



