Here is the way I see things: STRUCTURE: Server -Array of Games Game -Vector of Rooms (although this could be changed to an array) -Vector of TheServerImpl (serverside RPC stubs from client) -Database (backup and primary) Room -room descriptions & characteristics -Vector of TheServerImpl (occupants of this room) TheServerImpl -Client Obj Ref (RPCs that send info to client) -Player (player info: name, room, etc..) Database -url/connection to database FUNCTIONALITY: Server -responsible for routing tells to the proper location -should keep track of which player are on it and in which games -should take care of checkpointing -should take care of inter-server communication -possibly handles logins? passwd checking? Game -retrieve room info for players and player info for rooms -take care of checkpointing here instead? -handles any DB access that might be needed (outside of a chkpt) -Routes messages given by Server to the correct player Room -tells players which rooms are accesible from this one -keeps track of all players inside it -will handle announcing ("foo just left", "bar attacks Ken", etc.) TheServerImpl -responsible for executing the RPCs sent from the client -for demo this will be move, tell, and register (login?) Player -handles all the player specific info (name,room,passwd,etc) -inventory will probably go here when we do it