Streaming content

Traditionally, MMOs force a big client install, measured in gigabytes, containing not only the game code but also big gobs of assets like 3D models, textures, sound effects, voiceovers, animations, music, etc.

Flash games, on the other hand, must be able to start up extremely quickly, and so they have to be as small as possible. A Flash MMO that has both a small client and a lot of content must stream the content after the client has started up. The trick is to send only what the client needs, just before it needs it.

MMO worlds can be vast, but for any given character, the immediate environment is not that large. An MMO may have thousands of types of creatures, buildings and objects, but a player entering the game won't have too many of them in view initially. If each item is not too large, it's feasible for the MMO to be 100% streamed.

The characteristics of world objects, such as hit points, attack rate and attack damage, are small: just a few numbers. Likewise, 2D vector art can be represented very compactly as a set of colored line segments, with procedural animations. Short sound effects are only about 5k each, and only a few are needed at any given time, based on what types of objects are nearby. Maps and ground terrain are potentially big downloads, but it's possible to procedurally generate the world map identically on both the client and server, with only a random number seed being passed. Music is about a megabyte per minute (depending on bit rate) but it can start playing before it has been fully downloaded, like a YouTube video.

Using a combination of these techniques, the client download can be limited to just the game code itself, with all of the content streamed in on demand. This leads to snappier downloads, quicker startups, and happier gamers.