Socket Programming - Gomoku
Assignment 3 has been released. Please find the detailed submission and grading policy below, based on the official project specification.
Grading Criteria
The grading for the core features follows a binary approach – you will receive 0 points or full credit. Full points for core features will be awarded only if you successfully implement all of the following:
-
Game Rooms: The ability to create, join, and see a list of available game rooms. Each room must support exactly two players.
-
Real-time Two-Player Gameplay: Implementation of a standard 15x15 Gomoku board where two players take turns.
-
Spectator Mode: As a core requirement, the application must allow other users to connect and spectate the game in real-time.
-
Game Mechanics: The server must validate moves, enforce turn order, and automatically detect a win condition (five stones in a row).
-
Real-time Interaction & Chat: Player moves must be instantly visible to the opponent and all spectators. A chat system must be available for the two players, and spectators must be able to view this chat.
There will be no partial credit for incomplete core implementations (e.g., a game that only works for a single player, fails to detect a winner, lacks room functionality, or misses the spectator mode).
Optional Advanced Features (Extra Credit)
You can earn extra credit (up to 20% of the total assignment grade) by implementing optional advanced features specified in the project document. These include:
-
Spectator-only chat mode (5%)
-
Move timer/time limits per player (5%)
-
Reconnection support for disconnected players (10%)
Submission Requirements
To receive a grade for this assignment, you must submit the following three items:
-
Demo Video:
A short video (3-5 minutes) demonstrating your working multiplayer functionality.
Narration or on-screen text in the video can be in either English or Korean. -
Submission Format: The video must be submitted as a video file (e.g., .mp4, .mov). Links are not acceptable. The video must demonstrate the following:
- The process of starting the server.
- Two players connecting via clients and joining a game room.
- A spectator connecting to view the ongoing game.
- Players taking turns, with moves reflected in real-time on all screens.
- A demonstration of the chat functionality.
- The game ending when one player achieves a win.
Documentation:
All technical documentation must be included as a README.md file in the root directory of your project.
The README.md file must contain the following:
- How to Run: Clear instructions on how to run the application, including dependencies, installation steps, and startup commands.
- Protocol Specification: A definition of the socket communication protocol used between the client and server (e.g., “JOIN_ROOM: {‘type’: ‘join’, ‘room_id’: ‘123’}”).
- Features: A brief overview of the key features implemented.
- Advanced Features (If Implemented): If you completed any extra credit features, clearly state which ones and how to test them.
Code Submission:
You must submit your complete application (e.g., .py, .js, .html files).
The source code should be organized with a clear structure.
If the video, documentation, or code does not function as required, the grade will be 0. There are no partial credits.