Ghostees Technology: The Client
The most obvious piece is the game client. This is the part that everyone sees. It is a Flash based application that runs in your browser written with the Flex 2 SDK. Some of us use Flex Builder and some like to just build from the command line and use other text editors.
The client itself is made up of many pieces that get downloaded on demand to reduce the initial download size. The Ghostees world is very large and would take a very long time to download if you had to get the whole thing at startup. Static content, such as artwork and images, is delivered from CacheFly. CacheFly is a content delivery system designed for very high speed and 100% uptime availability.
One distictive feature of Ghostees is the smooth scrolling of the world rather than going “screen-to-screen” as is more common in other virtual worlds. The way we accomplish this is by downloading the pieces of the world that are nearby only when they are needed and we can discard pieces that are no longer needed to save memory. The browser caches the previous downloads for us so subsequent requests to download world pieces are much faster.
The client talks to a variety of servers to not only get content but also take direction and negotiate transactions. Each server has a distinct job so that the overall application can be spread out. One of the most important servers that I’ll talk about in another post is the Map Server. This server is responsible for any given portion of the world. The Map Server is where everything “lives” and the client is just a viewport into it, responding to direction given by the server. In all cases the Map Server is the authority to what is going on in the world.
To take care of the inevitable network latency, one of the client’s jobs is to smooth this out. The client makes predictions of what the server is going to say and will initiate actions based on those predictions and uses the server’s message as confirmation. If the server issues a different message than expected, it is up to the client to smooth out the discrepancy.
Other servers include the Authentication, Chat, Auditing, Exchange (not mail but game currency), the API, Inventory/Shopping and a Mini-Game Server per Mini Game. All of these could run on a single box if that’s all we needed but the system was designed to scale out based on demand. The goal is to be able to pack as many people into the world as we can by distributing the work and keep the experience as fluid as possible.
Leave a Reply
Search this Site
Follow me on Twitter
- Great cause, awesome games, pay what you want. RT @Wolfire: pay what you want for five awesome indie games http://bit.ly/9KASXz
- Thinking about writing a series on how to use #Lidgren with #Unity3d. I wrote an intro just to dip my toe in the water: http://bit.ly/drfJZs
- Tweaked the @bakedon web site a bit with a different template I customized slightly. What do you think? http://bit.ly/amEwRD
- Bwahahaha! It works! Need a demo...
- Powered byWordPress Twitter Widget Pro
Archives
- April 2010 (1)
- March 2010 (1)
- February 2010 (1)
- January 2010 (2)
- September 2009 (1)
- December 2008 (1)
- July 2008 (2)
- March 2008 (1)
- February 2008 (1)
- November 2007 (1)
- October 2007 (1)
