Please sign in to access this page
All code was hand written AI only used for readme and dev logs etc.
A Python-based chess engine built from scratch, featuring custom notation, full move validation, and persistent game state management. Designed for experimentation, education, and creative AI integration.
🔹 Key Features:
Complete move validation — fully implemented without external libraries.
Custom notation parser — supports flexible formats and easy expansion.
Persistent storage — board state is saved using JSON for ongoing games.
Check & checkmate detection — robust logic to handle win conditions.
Pass-and-play mode — supports local gameplay between two players.
Bot framework — users can create and plug in custom AI opponents easily.
🤖 Included Bots:
Sir Meowzers – Plays legal random moves.
Miss Whiskers – Ignores rules and plays chaos-based moves.
Count Catstein – Generally follows the rules, but breaks them 15% of the time.
🧩 Tech Stack:
Python 3
Data structures: Nested 2D lists
File I/O: JSON-based save/load
Modular design for extensibility
While not FIDE-compliant, the engine is fully playable and extensible. Designed more for experimentation than competition.
Captain A.J.
Check their project out: Bird Islands-HackClub Demo
Ethan Chen
Check their projects out: CHESS 2, Osmium -- Chess Engine
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
Minor quality of life improvement and fixed a very major logic flow bug that caused checkmate to be impossible.
After many hours of work, The project is finally done, Fixed flow improved UX added better error handling 3 Bots to play against fixed a couple bugs in validation and made the board save in persistent storage. I plan on shipping after i finish documenting my project.
After many hours staring at a screen confused, Proud to say is_checkmate is officially refactored and done! Although it's less efficient than i would have hoped being O(n4) I think. Fixed a-lot of issues with validation and smoothed move piece functionality but that still needs a little rework!
Completely overhauling the entire checkmate system, Starting cleanly from scratch, The old one technically worked but it was patchy, Didn't account for basically anything. Plan on releasing the new checkmate system with my next Devlog. (I feel like I've said this before)
Added semi-functional checkmate checking system, It's semi functional in the sense that if the king has no legal moves but a piece can block the attack its still counted as checkmate, Honestly no clue how i plan on fixing that, Check system should be fully functional as far as i can tell, Fixed 12+ bugs in validation that made pieces no-clip through reality, Found king movement bug that triggers the game to crash no clue how or why as of yet especially since this is written in python so crashes aren't as common
NOTE: its not stack or heap overflow i think it's a quirk of the checkmate handler.
Fixed a handful of bugs in valid mapping, Started implementing checkmate checks, Added a helpful debugging tool to help visualize mapping the checked squares.
Finished all move validation, Figured out how i plan on handling checkmate and if checked state, Fixed a couple critical bugs in validation. I plan on hopefully adding fully functional checkmate checks with the next Devlog.
Added Queen, Bishop, Knight and pawn promotion handling, Knight is partially broken but concept is there, Bug free or i can only hope so.
Added rook validation, Should be fully functional and bug free hopefully, Planning on adding pawn promotion with next Devlog, It's been quite fun so far, Still have no clue how i plan on handling is_checkmate but that's a problem for future me. I split rook validity into sort of mapping functions trying horizontal rays and vertical and seeing where you can go if the end position happens to be in that map then it's valid, Mostly did this because i plan on reusing it for queen and maybe making a port for the king's movements although it currently doesn't have a limiting factor for how far you can go but that can be relatively easy to implement.
Fixed a very critical bug in isvalidpawn() that made it count basically any movement as wrong and blocked captures it was because python handles lists in a weird was and equality in an even weirder way im used to how verbose C is and how everything is quite expected with its behavior so it threw me for a spin, working on isvalidrook() made quite some progress but noticed a massive fault in my logic that renders everything i wrote obsolete, A little disheartening but it's alright.
I've worked on this project in the past so only isvalid and validation of movement is left and maybe saving boards to storage so you can pickup from where you left off last time! I finished isvalid_pawn() and working on the rest currently, This originally started as a group project with 2 friends but they gave up on it before it started although i give credits to them for the idea nonetheless.