Client: loops handles input from the user handles graphics and sound communicates with the server (how?) ------------------------- Server: loops accepts new connections, disconnections, and handles loss of connections holds the positions/data of all players Player: id [graphical stuff] position velocity avatarName ------------------------- Player: index --global index on the server position motion image --avatar chosen by the player (later) ShiftMotion(vector relativeMotion) PlayerManager: NewPlayer(index, avatar, x, y) Update(delta) //all player objects Synchronize(dataArray) //possible ------------------------- Remember: Top down programming/K.I.S.S. KeyDown: up: PlayerManager.ShiftMotion(playerIndex, up) down: PlayerManager.ShiftMotion(playerIndex, down) ... end Receive: switch(message->type): player update: PlayerManager.Update(message) end ------------------------- TCP systems TCPNetworkManager: //NOPE Init //opens the TCP server socket, and allocates the socket set Quit //close the TCP server socket, and free the socket set AcceptConnections //accept new connections Send //send to a specific client, closing the connection if an error occured SendAll //send to all clients CheckSockets //non-blocking GetSocket() //get a specific socket total connections in the packet