Go Network Game is a multiplayer desktop game built with Java, Swing, and socket programming. Two players connect to a server and play a turn-based match on a 9×9 Go board, while the server maintains the official game state.
The challenge
A networked board game needs both players to see the same board and follow the same rules. The key challenge was to coordinate moves, validate actions on the server, and keep separate game sessions independent as more clients connect.
What I built
Desktop client: a Swing interface for entering connection details, interacting with the board, and viewing the current turn, score, and game status.
Authoritative server: Java sockets carry player actions to the server, which validates moves and broadcasts updated state to both clients.
Game rules: turn enforcement, occupied-point checks, liberty calculation, group capture, suicide-move prevention, passing, and simplified territory-plus-capture scoring.
Multi-client sessions: a separate handler thread per client and paired game rooms, allowing four connected clients to play in two independent matches.
Session lifecycle: opponent disconnect notifications, continued acceptance of new players after a room closes, and restart approval from both players.
Architecture and deployment
The code separates the Swing client, server connection and room management, and shared game models. The server accepts and pairs clients; clients submit moves and render the state returned by the server. AWS EC2 is used for server deployment, with Maven supporting the Java build.
Outcome
The result is a playable client-server Go implementation with synchronized turns, server-side rule validation, and multiple game rooms. It demonstrates practical network programming, concurrency, game-state modeling, and desktop UI development.