Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/wesdoyle/wake_engine
A chess engine in Python using numPy (WIP). Livestreamed here: www.youtube.com/watch?v=1QotIA4_jb4
https://github.com/wesdoyle/wake_engine
chess chess-ai chess-engine numpy python
Last synced: 24 days ago
JSON representation
A chess engine in Python using numPy (WIP). Livestreamed here: www.youtube.com/watch?v=1QotIA4_jb4
- Host: GitHub
- URL: https://github.com/wesdoyle/wake_engine
- Owner: wesdoyle
- License: apache-2.0
- Created: 2020-12-06T03:13:18.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-04-22T13:13:29.000Z (over 3 years ago)
- Last Synced: 2024-04-14T06:15:54.020Z (8 months ago)
- Topics: chess, chess-ai, chess-engine, numpy, python
- Language: Python
- Homepage:
- Size: 380 KB
- Stars: 32
- Watchers: 8
- Forks: 15
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Wake
## Livesteam
Significant portions of this project have been built on livestream to document the learning process.
The livestream series is in progress on YouTube, and it starts here: https://www.youtube.com/watch?v=1QotIA4_jb4
## Using the Engine
The current version of Wake is run using Python 3.x from the terminal.
- Clone the directory
- `pip install -r requirements.txt` (this installs the single dependency, `numPy`)
- `cd wake`
- `python3 game.py`
You will be presented with an output of the board in the shell:
```
Wake Engine [0.1.0] running using interface mode: [uci]
White to move:
8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎
6 ░ ░ ░ ░ ░ ░ ░ ░
5 ░ ░ ░ ░ ░ ░ ░ ░
4 ░ ░ ░ ░ ░ ░ ░ ░
3 ░ ░ ░ ░ ░ ░ ░ ░
2 ♙ ♙ ♙ ♙ ♙ ♙ ♙ ♙
1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖
A B C D E F G H
```To make a move, use UCI-style (short algebraic notation) move inputs, e.g: `e2e4`. This will update the
state of the game.```
Black to move:
8 ♜ ♞ ♝ ♛ ♚ ♝ ♞ ♜
7 ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎ ♟︎
6 ░ ░ ░ ░ ░ ░ ░ ░
5 ░ ░ ░ ░ ░ ░ ░ ░
4 ░ ░ ░ ░ ♙ ░ ░ ░
3 ░ ░ ░ ░ ░ ░ ░ ░
2 ♙ ♙ ♙ ♙ ░ ♙ ♙ ♙
1 ♖ ♘ ♗ ♕ ♔ ♗ ♘ ♖
A B C D E F G H
```## Other Commands
The engine code is currently under development, using the UCI protocol to define valid inputs.
The only valid inputs are currently:
- Any valid move (e.g. `g1f3` for a normal move, `a7a8q` for promotion)
- `quit` to kill the engine and terminal input processes.## Contributing
The engine code will be open for general contribution from the after v1 is complete.
## Roadmap / TODO
- Board representation testing
- Board representation is in alpha. A full suite of unit tests still needs to be written to validate behavior.
- Stalemate, 50 move rule, 3-fold repetition need to be implemented- Search and Evaluation
- Crude material evaluation is an attribute of the `Position` class
- Proper evaluation metrics and implementation TBD- Rewrite
- The project is effectively an experiment in building a chess engine from scratch. Ultimately, the Python code serves as a prototype for a v1 rewrite in Rust.