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
- Check for valid movement (for ordinary rules)
-
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