Support Infrastructure

Last month was the month of the item server. This month I am working on the support infrastructure.

The client is supposed to paint avatars and objects on Web pages. To do this, it needs a fair amount of support.

The client needs:
  • a user account on the server. The user account will be created when the client starts for the first time.
  • an XMPP account to connect to the XMPP server. The XMPP account is created automatically so, that users do not have to care,
  • avatar images and a way to select avatars,
  • an item inventory contains all the stuff you find, trade, or make,
  • an identity service which provides avatars and items to the client.
  • all this data wants to be stored persistently in several databases. 

These are the services I am currently building.

The goal is to make using the Open Virtual World client very easy. Just install and go.

Hello Item Server

About a month after the architecture definition, the first draft version of an item server is ready. It shows objects as bots in chat rooms.

Key features:
  • distributed architecture
  • transactions
  • item management
  • item bots
  • room-inventory management
  • separate database backend as webservice
  • identity updates
  • identity storage as webservice
  • admin GUI
I will now turn back to the client to add displaying of objects and interaction with objects.

[Why is there an Asgard Mothership? The item server was called "Odin". The backend project "Mirmir" and the complete framework, which for sure will get more components: "Asgard"]

Object Layer Architecture

Some time ago we started discussing the architecture of virtual objects on Web pages. In this posting I will try to explain some key questions and considerations in building an infrastructure for virtual objects which appear on web pages.

First I will quickly write about our goals:

  • We will put objects on Web pages in addition to avatars. 
  • People will have inventories as known from many other games. 
  • Objects can be installed on Web pages by dragging them from the inventory to the page.
  • People can use objects on Web pages in various ways including crafting.
  • Objects can interact on Web pages.
  • Objects encourage communication.
  • Objects are used for gaming in casual and highly engaged variants.
Here is an impression of many different kinds of objects (in practice you won't discover all of them on the same page):

Issues to take into consideration while discussing the software architecture:

1. One World
There is only one Web. All users can see each other and chat everywhere. All objects should be visible to all users. There should not be separated servers as in many Online RPG (called realm in World of Warcraft and shard in Ultima Online). 
2. It's Big
We expect many users and many objects. The amount of data and processing required is more than fits onto one physical server. Clearly the system must to be distributed. It needs multiple servers. Each server manages a part of all objects. Preferably the architecture is a shared nothing system which organizes itself without a management layer. 
3. Interaction
Objects belong to users. They are in a user's inventory, but at the same time, objects interact with other users and other user's objects on Web pages. A distributed system where objects interact with other objects on remote servers is very difficult. So, we try to make interactions local on a single server. This means, that only objects in the same room can interact. This sounds reasonable.
4. Open World Assumption
The object layer on Web pages should be open to other object systems. This project will create software to put objects on Web pages where avatars already are. Other projects or companies should be able to create their own object system and send their objects into the same chat rooms on the same Web pages. All users should see all objects of all object systems. They might not be able to use all objects, but everyone has the same view to the world. 
5. Chat and Messaging
We are living in a world of chat systems. Avatars on Web pages are created through chat rooms and chat protocols. Objects on Web pages should use the same or similar protocols. Objects should fit into the existing world. 
Architecture design decisions:
  • All objects belong to users. 
  • An object server manages user inventories which in turn contain objects. 
  • A chat room on a Web page is like an inventory.
  • An object is in only one inventory or room at a time.
  • Objects can migrate between inventories.
  • Object servers host complete inventories.
  • Interactions happen only between objects in the same inventory hosted by the same server.
  • If an object is moved from user inventory to a Web page, then it migrates to the object server which hosts the chat room of the page. 
  • Users trade objects via temporary trade rooms .
  • Rooms, inventories, trades are identified by utf-8 strings.
  • Objects are identified by (large) numbers. The numbering is globally unique across all inventories. 
  • Object servers create chat bots to put objects into chat rooms.
  • We are planning for 100 k concurrent users (10 Mio. registered)
  • We are planning for 100 objects per user inventory by average. Stacks of identical objects count as one. An inventory may contain 1 Mio. objects, though this needs hierarchical organisation, aka folders.
Here is an architecture diagram:


Now we can start programming.

OVW Meeting 6

I am happy to announce the 6th Open Virtual World meeting.

Topics:
  • Current developments
  • Roadmap
  • Items on web pages
  • Item server architecture
  • Item protocol
  • Q&A
Date: Monday, October 3rd, 2011, 18:00 h GMT+2

Come join us. The meeting is open to everyone, devs, users, supporters...

UPDATE:
Live: https://plus.google.com/hangouts/extras/talk.google.com/openvirtualworld-meeting-6

Web Avatar Ready for Developers

Just in time for GDC Europe 2011: the Open Virtual World client is now "Ready for Developers" who want to build their apps on the Web Avatar platform.

The Open Virtual World client is
  • a Web Avatar platform.
  • a Concurrent Casual Gaming platform
  • a platform where you can build your casual game
The Open Virtual World client has
  • an avatar on every web page
  • a WebKit based rendering engine
  • modules and APIs
  • everything a client app needs: protocols, logging, configuration
  • open source
"Ready for Developers" means:
  • it is working
  • it can be used by developers
  • it is not ready for end users
  • it needs customization and packaging
  • it needs gaming extensions and a game server if you want your users to do gaming
  • it needs an item shop and inventory if you want to sell virtual goods
  • it needs integration with your user profiles if you want to make the Web Avatar as a feature for existing games
  • it is not a product yet
  • but: it is a working platform for you to make a product
  • and: it is free and open source
The Open Virtual World project will soon publish a complete client which users can download. Until then, developers get early access to the platform.

Need help? mail to openvirtualworld@gmail.com

Three Musketeers

Chrome support arrived.

We now have extensions for all 3 major browsers: Chrome, Firefox, Internet Explorer. See the image where I am on this blog page with my avatar and 3 different browsers at the same time.

If my avatar moves in one browser, then it moves in all browsers. If I chat in one browser, I chat in all at the same time. The client logs in to the chat room only once. But the avatar is shown on all browsers.

This is very different from weblin where you could only be on a page with on browser. Other browsers of the same page/domain had no avatars at all.

Initially I wanted to defer Chrome support until after the release. But it is much better to have Chrome support, because I Chrome is my main browser. The client needs lots of day to day testing. Now it is being tested all the time while I am doing my normal web browsing.

By the way: a weblin just private chatted to me, but there is no private chat yet. I just saw it in the logfile, but I could not reply. Do we need private chat early?

Roadmap Update

The core software of the client is ready to be released. I am already using the client day to day. I wish there were a Google Chrome extension. But it has only Firefox and IE currently. So I am using more Firefox than usual.

The biggest remaining problem: although the software is ready, it needs configuration. If you have a web server which hosts an avatar description and if you have an XMPP account and if you are prepared to add both to the config file like I did for my tests, then the software works for you. This is probably not the case for most of you. Therefore, I have to add a bit of auto-configuration before I can release the software (is this correct?). I can release now, but would you want it with so much work on your side? Tell me what you think.

Anyway, I updated the roadmap and I will keep it up to date from now. Here is the task list: