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.