Roadmap - AlyxMoon/lunar-chess GitHub Wiki

Roadmap

Chess Game

  • Play through a round of chess

    • Check for valid movement (for ordinary rules)
      • Can't move into your own pieces
      • Pawn movement
        • Normal movement
        • Initial double move
        • Normal attack move
        • En passent
      • Rook movement
      • Knight movement
      • Bishop movement
      • Queen movement
      • King movement
        • Normal movement
        • Don't allow moving into check
        • Castling
    • Alternate through player turns
    • If move would result in promotion, prompt for choice
    • Check for end condition
      • Check for win
      • Check for loss
      • Check for draw
  • Save game on server after every turn

  • For alternative rules, allow player input at beginning when necessary

  • Alter rules based on custom rules set when starting game

  • Option: Show graveyard of lost pieces

  • Option: Highlight tiles that are allowed moves

  • Option: Show tile numbers

  • When game is completed, save replay and record stats

  • If players have not played a turn for a certain amount of time, close game

    • TODO @alyxmoon: Figure out how match is decided when automatically closed
    • TODO @alyxmoon: Figure out how long to wait

Finding a Game

  • Add ability to create a request for games

    • Unranked game with random players
    • Ranked game with random players
    • Unranked game with friends
    • Ranked game with friends
  • Add ability to start a game with somebody based on existing requests

  • Start a hotseat game

  • Do not allow starting anything but a hotseat game before confirming account

  • Be able to cancel existing request for a new game

  • See how many players are looking for a game of a specific type

  • See stats of how many games have been played recently of a specific type

  • Start game with options

    • Set an amount of real time that game will be allowed to go for
    • Set an amount of real time that a player can take a turn
    • Allow choice of what color for player to be
  • Start a game with variants rules

    • As note, not all of these variants will be added, this is simply a list for possibilities

    • Every rule will have DTI (difficulty to implement) on a scale of 1-5, lower numbers I think are easier and more likely to be implemented

    • Orthodox Rules

      • Different Starting Positions

      • (DTI 2) Chess960

      • (DTI 1) Displacement Chess

      • (DTI 3) Pre-Chess

      • (DTI 2) Transcendental Chess

      • (DTI 1) Upside-Down Chess

      • Different Starting Pieces

      • (DTI 2) Charge of the Light Brigade

      • (DTI 2) Dunsany's Chess / Horde Chess

      • (DTI 1) The Pawns Game

      • (DTI 3) Handicap Chess (this is a VERY variable variant)

      • (DTI 2) Peasants' Revolt (3 or 4 knight variant)

      • (DTI 3) Sixteen Pawns

      • (DTI 1) Really Bad Chess

      • (DTI 1) Weak!

      • Unorthodox Board

      • (DTI 3) Active Chess

      • (DTI 3) Balbo's Game

      • (DTI 4) Hexagonal Chess (De Vasa's, Brusky's or Gliński's, McCooey's, Shafran's)

      • (DTI 5) Circular Chess

      • (DTI 4) Cross Chess

      • (DTI 4) Cylinder Chess

      • (DTI 3) Double Chess (or double-wide chess)

      • (DTI 5) Flying Chess

      • (DTI 4) Grid Chess

      • (DTI 4) Infinite Chess

      • (DTI 3) Los Alamos Chess

      • (DTI 4) Masonic Chess

      • (DTI 3) Minichess

      • (DTI 4) Polgar Reform/Superstar Chess

      • (DTI 4) Rhombic Chess

      • (DTI 5) Spherical Chess

    • Unorthodox Rules

    • TODO @alyxmoon: Fill out unorthodox rules and give them a DTI score

User Profile Management

  • Register account
    • Ensure that email address is not taken
    • Ensure that username is not taken
    • Email confirmation of account
  • Log in with account
  • Log out with account
  • Delete account
  • Change user information
    • Change password
    • Change email
  • Add a friend
  • Confirm a friend request
  • Remove a friend
  • List of active games for the player
  • See previous completed games for the player
  • See stats for player
  • Keep user session so they do not have to log in after visiting app

App notifications

  • Enable notifications for desktop
  • Enable notifications for mobile
  • Send notification when a game request has been received
  • Send notification when a game has started
  • Send notification when a game has ended
  • Send notification when other player in game has made a move
  • Send notification when a player has not taken a turn for too long
  • TODO @alyxmoon: Determine length of time before reminding player
  • Send notification when a friend request has been sent
  • Send notification when a friend request has been accepted

Leaderboards

  • See top players globally
  • See top players among friends
  • See stats per game type
    • See number of games played for this type

Game Replays

  • See game replays for a specific players
  • See most recent replays for all players
  • Get a specific replay based on replay ID

Saving A Game Replay

  • Save game type
  • Save initial board position
  • Save history of moves
  • Save both players in game
    • Save user ID and username