For this project I had the opportunity of working with 3 other talented individuals. I had convinced them early on that doing a multiplayer version of Asteroids would be a great project for our Distributed Systems course. Our project consists of a single cohesive world that is divided into regions, where each region is handled by a different server. We worked through key logical issues such as multiple servers hosting segments of a single world, maintaining consistency between servers, and seamless transition of objects and clients between servers.
The scope of the project ended up being larger than we had originally imagined, and resulted in many sleepless nights of coding. Our final implementation consists of two multithreaded servers that host a single game world. We managed to simulate as many as 400 clients connected with the servers successfully handling the load. Our testing showed that the distributed server architecture can scale very well in a modest server environment without a large hit in CPU time or bandwidth.
We also wrote a 17 page paper on our project which you can read here.
- XNA framework
- Lidgren Networking Library