Repository navigation
Chess v1.1 Release
This release marks the second version of the Chess Game, featuring a full client-server chess application built in Java. It includes a Swing-based client with a responsive, intuitive GUI, a custom game engine integrating the Stockfish chess engine for AI play, and a WebSocket server that supports multiplayer.
Features:
- Client
- A Swing-based graphical user interface (GUI) for playing chess, with intuitive and responsive board interactions.
- MVC architecture for clean separation of concerns.
- Single-player modes against a bot and a unique "solo mode" where the board flips each move.
- A settings system stored in
settings.jsonfor themes, usernames, and other preferences. - Centralized asset management with
AssetManagerfor handling images, sounds, fonts, and colors.
- Engine
- Full game state management and rule enforcement.
- Integration with the Stockfish chess engine for challenging AI gameplay.
- Export to FEN and PGN formats for analyzing or sharing games.
- Comprehensive unit tests with JUnit Jupiter to ensure reliability.
- Protocol
- Sets the ground works for Client-Server communication
- Handles JSON requests for WebSocket connections
- Server
- A GlassFish-based WebSocket server with a
/pingendpoint for connectivity checks. - JSON serialization/deserialization via Gson for client-server communication.
- Future plans for lobbies, matchmaking, and multiplayer game support.
- A GlassFish-based WebSocket server with a
Prerequisites
- Java 17 or later (JDK)
Installation Instructions:
-
Download
Chess-v1.1.zipfrom Assets: -
Unzip
Chess-v1.1.zip:- Windows: Right-click the file → “Extract All…”
- macOS/Linux: Open terminal and run:
unzip Chess-v1.1.zip
After downloading the release, your directory should look like this:
• Chess-v1.1/ ├── chess-client.jar ├── chess-server.jar ├── README.md └── stockfish/ -
(macOS/Linux only): Make the Stockfish binaries executable:
find stockfish/ -type f -exec chmod +x {} \; -
Run the game:
-
Client:
java -jar chess-client.jar
Note: You can also double click
chess-client.jar -
Server:
java -jar chess-server.jar
-
What's New in v1.1:
- Protocol Module allows for easy communication between server and client
- Simple Matchmaking when at least 2 people join the lobby, the server will place the client in matches
Future Work:
- More Multiplayer support: Allow users to choose who they match with
- Unit tests: Expanding unit and integration tests for the client and server modules.
- Enhanced themes and UI customizations: More theme options and customizations will be added.
Full Changelog: https://github.com/gmnate6/Chess/commits/v1.1