Update Big picture authored by Merlin's avatar Merlin
The existing overall architecture is a three-tiered architecture: The existing overall architecture is a three-tiered architecture:
- database layer: a single database server - database tier: a single database server
- server layer: a login server and an area server for each location in the game - server tier: a login server and an area server for each location in the game
- client layer: a client that runs on the player's machine - client tier: a client that runs on the player's machine
![alt text](img/TierArchitecture.png "Tier Architecture")
Both the area/login servers and the clients are basically MVC architectures (though the area/login servers have no view!). So, in both of these, there is a model that stores the game state information and a command pattern that allows for the change of that state. You can find the commands that are supported in the package model.commands in the appropriate project (there are different commands on the clients than on the area servers). Both the area/login servers and the clients have the standard three layers: presentation, domain, and data source.
![alt text](img/TierArchitecture.png "Software Layers")
So, there is a model that stores the game state information and a command pattern that allows for the change of that state. You can find the commands that are supported in the package model.commands in the appropriate project (there are different commands on the clients than on the area servers).
All inter-machine communication is achieved using Messages in the [[Communication Protocol]]. All inter-machine communication is achieved using Messages in the [[Communication Protocol]].
... ...
......