Multiplayer Games Programming

 

Summary:

 

Technologies used:

Java, Network Connection Manager, Command System, Interest Management System, Non-Blocking IO TCP/UDP, Admin server can render an overview of the managed domain.

Creating a game server from scratch, has improved my java programming skills, knowledge of advanced network protocols and methods to reduce latency in real time games.

Not having programmed software using the Java language before, I have learned much about Java's networking functionality as well as how and when to use blocking / non-blocking network sockets. Multiplayer Game Programming has provided me with a solid introduction to parallel systems and how to effectively create multi-threaded applications.

Applying this knowledge on a practical level, I created a demo “distributed tag” implementing a multi-server architecture allowing individual servers to be responsible for unique areas of the virtual environment.

Allowing the domain to be managed by N number of servers makes this architecture inherently scalable. Requests to join the server pool are registered with the admin server, before being allocated to manage an area of the virtual environment. Dynamic resizing and area allocation enables servers to effortlessly opt in and out of activity.

 

Source Code (Download)