Thoughts on Cloud Gaming

So it looks like cloud gaming service OnLive is getting more popularity.  I thought about this whole cloud gaming stuff while I was in shower this morning and I became to wonder what types of services can be on cloud.

Apparently OnLive is like this.  You have your controller at home.  Your controller input is sent to OnLive server.  Video and audio are streamed back to you.  So the only data packages transfered between you and the cloud are

  • controller input (very small data)
  • video (basically screen resolution x frames per second / compression magic)
  • and audio (sampling rate x bit per sample x number of channels / compression magic ).


So this is what determines if a cloud gaming service is viable or not:

  • Amount of data sent back and forth is well must be under what your internet connection can handle
  • Network latency should be not noticeable


Then what other cloud gaming services can we do?  Apparently OnLive is running the whole game on their side and stream only audio/video.  But it might be possible to run a very specific component of a game running on cloud.

How about physics?  Can we run very simple physics on your local gaming console, while running more complicated physics on the cloud?  Then if you are offline or can't get the result you want from the cloud in timely manner, you will just rely on your simple physics running on your own console.  On the other hand, if you can get all the information from your cloud physics server on time, you can use it and make your games look much better?

Maybe there might be too much data to be transfered for this physics system.  We might come up with really nice compression for this. (as if we did for audio/video)  No matter what I feel like there are a lot of small things we can run on the cloud.

Pre-multiplied Alpha

When batching particles in order to boost the performance, we usually make texture pages, or sprite sheets, (it is a giant texture which contains all textures used for the particles. you can easily use the sub images you want by playing with UV coordiate on vertex data), to minimize the number of draw calls.  However, you can go one step further and even batch particles with two different blend modes, alpha and additive blend mode, together and draw'em as one draw call.

That's when pre-multiplied alpha becomes handy.  I was planning to write about this, but Shawn Hargreaves already covered this topic a couple of months ago.  So here is the link.  Enjoy :)



Real-Time Normal Map DXT Compression

I had change to read this paper recently, and found it's really helpful, not just for real-time normal map DXT compression, but also for normal map DXT compression both for Tangent and Object space.


http://developer.nvidia.com/object/real-time-normal-map-dxt-compression.html