Gamooga Scalability

We have uploaded a new video into our Youtube channel showing the scaling capacity of Gamooga server. The video shows a simple MMO style virtual world where users can join and move around. In this demo, the server scaled from handling 4 users to 10000 concurrent users. At 10000 CCU, Gamooga server was processing one message every 750 micro seconds.

The demo was run on a 1.3 GHz dual core with 4GB RAM, Ubuntu 10.04 x86_64. Both Gamooga messaging server (one instance) and the UI/browsers were running on the same machine. We wanted to demo only the message handling capacity of Gamooga, hence running on the same machine helped keep latency issues out of picture. At peak load, Gamooga server was consuming around 250MB of RAM.

The demo game used in the above video is also uploaded into our demos page. Click here to try it out.

Migration complete

We have now migrated to new cluster with more capacity. Pending bug fixes to production have been pushed too. Gamooga should now be more stable and handle more capacity than before.

Our old cluster will be live atleast one more day after which it will go out of service.

Please follow us on @gamooga for realtime updates on our service.

Downtime

We will be taking downtime to expand our cluster and push bug fixes into production cluster. The downtime will be from 6:30 AM to 10:30 AM GMT on Monday (26th March 2012), although it may not last all the 4 hours.

In this downtime, we are moving our cluster to a new provider and hence will involve changes to DNS. Following are the migration steps:

  1. Change the TTL to a very small amount for DNS records of our cluster so that when they change they are picked up by nameservers faster. This will happen well before the start of downtime.
  2. Once the downtime starts, we will not allow upload of new gamlets onto the cluster. We start to backup all the data and migrate it to the new cluster.
  3. During the downtime, the old cluster will be live and your games/apps continue to work.
  4. Once the data migration is finished, we will update the DNS records to the new cluster.
  5. Hence, your users may be bifurcated into two different clusters (old and new) until the DNS records completely propagate and we anticipate that by the end of downtime, the DNS records have propagated all across the world and updated the stale caches.
  6. Once the downtime is over and when we make sure of complete DNS propagation, we will down the older cluster.

If you have any queries regarding the downtime, please comment this blog post.

Screencasts

We have added video tutorials for easy development over the platform.

Javascript (chat lobby app):

Actionscript (chat lobby app):

Android (chat lobby app):

In these videos, the javascript video is more detailed covering the complete development process. Flash and Android videos cover only setup and execution, the development being very similar to that of javascript. In the three frontends we have developed a chat lobby application.

How to deploy onto Gamooga production:

Unity3D API and docs released

We have just released Unity3D API. Gamooga can now be used for developing compelling multiplayer games over Unity3D.

We have also released app-chat-lobby demo developed using Unity3D over Gamooga. Download the new SDK. The documentation for the API can be found here.

WebSockets in Javascript API

Gamooga now supports WebSockets in its javascript API. We have updated and released a new version of our SDK.

GamoogaClient automatically uses WebSockets if your browser supports them and seamlessly falls back to Flash sockets. The API supports the following versions of WebSocket protocols:

  1. Hixie-76/HyBi-00
  2. HyBi-07
  3. HyBi-08 - HyBi-12 (reported as version 8)
  4. HyBi-13

All major browsers use one of the above protocols, hence we have pretty good coverage. WebSocket standard is still evolving and we will keep a tab as browsers advance their versions and add support for future versions of WebSocket protocol as they are released.

Since our support for WebSockets is freshly baked, we have it behind a flag. To enable WebSocket support, just set GamoogaClient.ENABLE_WEBSOCKET = true before calling GamoogaClient.init. Thats it, your client now starts using WebSockets.

Big update: Gamooga SDK 2.0 released!

Its now even more easier to use Gamooga for your games and apps. We have added some great features to our platform and SDK and released the next major version. A big change is the Gamooga server and client side API. The new 2.0 API is far more easier to use and maintain. Another major feature is the websocket support in javascript clients.

A quick peek at the changes in 2.0 version:

  • Better callback based architecture on both server side and client side
  • All Gamooga functions now accept any jsonable data instead of just strings
  • call_later now accepts any number of arguments
  • call_later also accepts function names instead of just strings, helps catch errors early.
  • broadcast, broadcastexcept introduced
  • You can now add as many onmessage callbacks for each type of message, far better than 1.x session_on_message/room_on_message (server) or onread (client) callbacks which received all types of messages. Now you have different callbacks for each type of messages. Makes code easier, more understandable and more maintainable.
  • onerror on client side is now robust
  • All client side apis log events to respective consoles. Logging is automatically disabled when connected to production environment.
    • javascript: console.log
    • flash: trace
    • android: Log.d
    • iOS: NSLog
  • Websocket support in javascript clients. If websocket communication fails, the client falls back to flash based sockets.
  • Multiple bugfixes in development server

But please note: the development server and the production environment continue to support 1.x api and there is no change required to your server side or client side code whatsoever. Also, please prefer 2.0 API to develop your apps/games from now on, but we think that goes without saying since the 2.0 API is far more lovable than the 1.x API ;)

Download the 2.0 SDK from here. It also contains a few demos that you can get your hands dirty with.

We will be updating all the docs very soon (in a day) with the 2.0 API. We will update this blog when that's done. EDIT: Docs are updated with 2.0 API: server docs, client docs.

We are also starting 'a tutorial a fortnight' series from Feb 2012. We will posting video tutorials on this blog every 2 weeks on how to use different aspects of Gamooga. We will also show how to use Gamooga with other services/platforms to bring out wonderful apps/games. So stay tuned for that!

Moved our blog from Wordpress to Posterous

Our blog was hosted on Wordpress. It has been very slow lately. And we have moved our blog to Posterous. Posterous imported our posts pretty seamlessly except that some posts had to be reformatted.

Posterous is one hell of a service with its interface very intuitive and easy to use. Great job Sachin and Garry. Hail Posterous!

But one drawback of this move: Our links in tweets and else where were shortened by Wordpress and still point to Wordpress blog. Other than that we are pretty happy with the move.

Virtual World Demo

Virtualworlddemo
 We have added a very simple Virtual World Demo into our demos page developed over Unity3D. This demo is developed using the Unity3D API we have released very recently. Once you open the demo, a character is spawned for you in the world. You can move by pressing the left mouse button and turn using your mouse.

Open as many browser windows of this demo and you will see as many characters spawned. Movements of characters are synchronised across all windows using Gamooga API and backend. The demo requires Unity Web Player. Unity is a great game engine and Web Player is worth the install.

We broadcast the position updates of the character to all users. On evey frame with movement, position updates are sent. We donot do any smoothening of the movements of characters using prediction/intrapolation which is out of scope of this demo.

Unity3D API now available!

A short update to all our users: We have now added Unity3D (http://www.unity3d.com/) support in our SDK. You can now use Gamooga to make your already wonderful Unity games multiplayer.

A 'GamoogaClient.dll' is added to 'api/unity3d'. Just drag into your Unity3D project and you are good to go. We have also added a Unity3D version of  'app-chat-lobby' in our 'demos' directory for your reference. You can download the latest SDK (version 1.2.1) here. Documentation for Unity3D will be available very soon in our docs.

If you want Gamooga SDK to support any other app/game engine/frontend, please do let us know in comments.