commands could be used for client/server communication
this is currently not the case, but that can be changed
might ease the incremental data transfer
might make client development more complex???
as this is a turn based game, there should be some possibility to know the game state as it was in any turn of any player - either the domain model can have knowledge of "modifications over time" (probably quite complicated) or there could be commands that modify the game state
Documentation
Design
ServerRuntime is a singleton. This class provides access to all server functionality.
It is setup either from a command line application, like StarcraftBordgameServer,
or by the web server, like StarCraftWebServer (which is actually a servlet that is initialized at server startup)
The ServerRuntime holds a (currently stateful) instance of StarCraftRemoteServiceImpl. It may register a RMI proxy and delegate all calls to that implementation.
In case of GWT, there is the servlet StarCraftServiceImpl regisered, which simply delegates all calls to the StarCraftRemoteService implementation of the ServerRuntime.
Client/Server Communication
[GameStateModifications] lists all tasks that modify the game state. The clients must be somehow able to trigger these modifications.
See StarCraftRemoteService for the communication interface, StarCraftRemoteServiceImpl for the server-side implementation.