Fleet Combat Online is a completely client-server application.
Client
The client is written in Adobe Action Script, also known as Adobe Flex. Flex is a special version of Flash that is intended for use in data driven and distributed applications. Where ordinary Flash is primarily intended for movies and animation, Flex gives you powerful data manipulation features. Since simulating starship combat involves a lot of data, this was a good choice. Commands are sent from the client to the server via remoting calls or web service calls. The server actually does the work of computing the starship and projectile movement, detecting hits, applying damage, etc.
After each turn is processed, the server sends the client a new "snapshot" of the battlefield. The client application reads that data and shows the tactical display. The user can zoom in and out, drag the map around and see information about all the objects on the battlefield.
This gives the user a very graphically rich interface to work with, but it runs right inside a browser so there is no software to install. Most people already have Adobe Flash installed, so there is no problem getting started with Fleet Combat Online.
Server
The server handles all of the work of communicating with players, processing commands and computing the results of each game play turn. The server is written in C# using Microsoft ASP.Net. It primarily consists of a group of web services to handle incoming commands from the client. There is also a service that runs to trigger the processing of game turns based on a schedule — this is the way the "near real time" mode works. ASP.Net is very scalable, so even if there are dozens of games going on at once, the server should be able to handle all the communication with players almost instantly. In play testing, the players don't even realize that the commands are actually being processed on the server, because the response is so fast. A nice benefit to processing everything on the server is persistence. If a user closes their browser or even reboots their computer, the game will be in the same exact state they left it in when they do return. You do not lose your game if your browser crashes!
Together, this client-server design gives the best of both worlds — a graphically rich interactive experience, and powerful processing of complicated game mechanics via the server.





