Under the hood – Dubit Platform Architecture

Matthew Warneford
4
March
2010

We like to think of the Dubit Virtual World Platform as an empty virtual world excitedly waiting for lots of content, games, puzzles and avatars. It’s this content that’s going to make your world exciting and unique, everything else is just features and infrastructure. Lets face it, players won’t choose your world because its got a unique buddy list, they’ll choose your world because its got a great story, fun avatars, puzzles, adventures, and games!

So that you can focus on your content we’ve created tools for designing rooms, quests, and adventures, plus we manage the infrastructure, in our Amazon EC2 cloud, so that you don’t have to.

The platform architecture looks a little like this simplified diagram.

You still host your website, art work, music, and the empty virtual world. The multiuser server, rendering server, web services, and persistence databases run in our EC2 cloud:

  • Nexus Multiuser Server: built on top of the Apache Mina project, each node in our multiuser server cluster handles many thousand concurrent players. The multiuser server routes messages between players in the world, in extreme circumstances delivering over 250,000 messages per second.
  • Ruby on Rails Web Services: responsible for proxying access to the MySQL database. The web services are consumed by the Nexus Multiuser Server and the Flash Client, returning profile, shop, product, and wardrobe data. For heavy lifting, the Rails services are backed up by Java services running on Glassfish.
  • Ruby Admin Website: avatar clothes, furniture, and products are uploaded and managed through the admin website.
  • Java Render Server: reduces avatar load time by compressing and combining assets into single files. Cuts avatar load times 10 fold.
  • Persistence Database: anything that happens within your world can be automatically saved to the persistence database. For example, completing a quest, picking up an item, levelling up, unlocking a door, would all be transparently saved to the persistence database.

Other Articles