Try to sign up and play in: https://www.playchessu.com/
- Play chess with other users or ai on 3 different modes
- ranked: 10 minutes, 30 minutes
- casual: 10 minutes, 30 minutes, unlimited
- vs AI:
- 10 minutes, 30 minutes, unlimited
- easy, normal, hard
- chessU will match you up with players around your skill level (elo difference within 300)
- chessU will update your elo at the end of every match for subsequent match making
- play ranked to climb the ladder and rank up the leaderboard
- invite friends in casual or queue up for a random opponent of your skill level
- practice against AI
- chess.js and chessboardjsx npm packages are being used
- React.js and Node.js for front end
- Express.js and Node.js for back end
- Socket.io for client-to-server communication
- Heroku for server deployment
- Netlify for webside deployment
- Queuing System
- chessU makes use of in-memory data structure to store queues of different modes
- upon players queuing up for a match, chessU will push the player into the appropraite queue and when another player of the appropriate elo appears in the queue they will be matched up.
- Match confirm
- when a match is made between two players, chessU will prompt a confirmation for both of the players involved.
- only when both players accept the match before the count down running out the players will be loaded into the game
- other wise players will return to the game option selection form
- the timer starts with 15 seconds initially
- invitation feature is only available for casual mode
- players can enter a username and send an invite to a friend
- invitation can only be sent to users that are registered as friends on the platform
- when a proper username is entered, the sender will wait for the opponent to accept, similar to match confirm
- if the friend is currently in queue or in the middle of accepting a match the invitation will not be sent and the following will display for the sender
- the invitation recipient will be prompted to accept or decline the invitation as a pop up toast at the bottom right corner of their page
- accepting the invitation will redirect both users to the game
- our AI game can be started immediately once the game form (time limit selection and difficulty selection) is completed
- the user will be redirected to a game, and can proceed to play as they would.
- Timer
- on the top side of the game board there are timers that count down as the match begins.
- each player starts off with the allocated time set when loading up the game
- when one of the timers runs out, the player with time left will automatically win
- Player information
- on the left side of the game page players can see both player's information as follows
- Resignation
- inside the player information block there is a resignation button that both players can click at any time to resign
- the game will conclude when a player confirms the resign
- Action log
- on the right side of the board is an action log that keeps track of every mode made by both players
- In-game chat
- on the bottom right side of the window there is a chat toggle that can be used for a in-game live chat.
- each players can send any message to each other by either clicking send or pressing enter with text content in the input field
- Board
- the main board is displayed at the center of the window
- the appropraite set of pieces will be placed at the bottom side of the row depending on the player's color
- every move made by a player will be reflected on the opponent's side of the board
- Game Over
- once a match is concluded, a prompt will appear displaying your elo change post-match and a button that lets you return to the home menu
- User Information
- the user information displays the username, their rank icon, as well as the profile picture
- users can edit and save their information by pressing the edit button as follows:
- users can also edit their profile pictures by clicing on the camera icon on the bottom right corner of their photo
- User statistics
- stats tab displays user statistics
- wins and losses, elos for different game modes, as well as total matches
- Match History
- history tab displays the user's match history, most recent to the oldest
- each item displays the user, the opponent, their profile picture, their rank icon, and their elo
- each item can be green or red depending on the outcome of the match (green for victory and red for defeat)
- there are 2 leaderboards for each of the ranked game modes (10 minutes and 30 minutes)
- each of these boards will display the rankings from highest elo to lowest elo
- each user item displays their profile picture, rank icon, username, and elo
- if logged in as a user, each user will have buttons that serve community functions (add/delete friend, accept/decline friend request)
- leaderboards can still be viewed if not logged in
- Friends
- friends tab displays a list of your friends on the platform with a button for removing friend
- Requests
- requests tab displays a list of pending friend requests you have not responded to with buttons for accepting/declining
- Search
- search tab allows users to search for any user registered on the platform
- the search result will show any user that includes the serach term (case insensitive)
elo rating method: https://metinmediamath.wordpress.com/2013/11/27/how-to-calculate-the-elo-rating-including-example/
- Bronze: Between 0 and 1149
- Silver: Between 1150 and 1499
- Majority of Active Player Base
- Gold: Between 1500 and 1849
- Platinum: Between 1850 and 2199
- Diamond: 2200 and 2500
- Master: 2501