Status Reports - mbohl/microgames GitHub Wiki
Accomplished Milestones:
Functional Milestones (User Stories)
- Allow users to log in using simple login system (username/password) with simple matching authentication.
- Allow users to view other users with whom they can start games with, and to actually start a game with other users.
- Allow users to view games currently in session. If it is the user's turn to make a move in a given game session, a notification appears next to that game's name in the user's lobby. When the user clicks on the game ID, the user is brought to the game page where they can take their action.
- Allow users to play Tic-Tac-Toe games with other users. Although no strict time limit is enforced on a user making a move, a user will be notified when it is their turn on their game lobby.
- Allow users to win/lose games in a manner consistent with the rules of Tic-Tac-Toe. When a game has ended, the game disappears from the user's lobby. However, the record of the game, as well as a cumulative W/L/D record for a user can be viewed on the user's profile. Furthermore, a more detailed game history can be viewed as well on the user's profile
- Allows users to view other users' profiles (to view their current games in session, W/L/D record etc.)
- Allows users to sign out of the system and thereby destroy the current session.
Technical Architectural Milestones and Achieved Goals
- The game management system has been implemented as we had intended.
- New games can be added to the system by creating a new <game_name>Logic module. This module can then be referenced from the general GameLogic module for game-specific rules and logistics related to gameplay. Currently, we have a TicModule (short for Tic-tac-toe Module) that handles all game mechanics and state checking. The <game_name>Logic module will update the game state as appropriate whenever a player makes a move. Furthermore, Views will be rendered based on the <game_name>Logic module as well for game-specific views and renders.
- Game type is represented in the schema as an integer. Thus, when a new game is added, we simply add records to the database with the new integers representing new games.