BitShogi - "The Game of Generals"
BitShogi, playing a little bit every day using bitboards.
Play at bitshogi.com
Hi, I’m working on a chess-like game engine implemented in Julia. Credit for getting all the UI design done goes to Claude. Now that its playable, I’m working on creating a bot that can beat me. If you want to contribute or have any ideas or comments then open an issue or make a pull request. Thank you.
Roadmap
- A bot that can beat me: NNUE, RL, Transformer, minimax - CURRENT TASK
Some Resources I’ve found along the way
- Shogi Rules: Wikipedia - Minishogi | Shogi Harbour
- Chess & Bitboards: [Chess…
BitShogi - "The Game of Generals"
BitShogi, playing a little bit every day using bitboards.
Play at bitshogi.com
Hi, I’m working on a chess-like game engine implemented in Julia. Credit for getting all the UI design done goes to Claude. Now that its playable, I’m working on creating a bot that can beat me. If you want to contribute or have any ideas or comments then open an issue or make a pull request. Thank you.
Roadmap
- A bot that can beat me: NNUE, RL, Transformer, minimax - CURRENT TASK
Some Resources I’ve found along the way
- Shogi Rules: Wikipedia - Minishogi | Shogi Harbour
- Chess & Bitboards: Chess Programming Wiki - Bitboards
- Protocols: USI (Universal Shogi Interface) Protocol
- Engine Dev: Computer Shogi Association
- ML Chess: Mastering Chess with a Transformer Model
- Shogi SFEN Notation: Shogi_Evaluation_Function_Using_Genetic_Algorithms
Project Structure
BitShogi/src: Core game logic (Julia). Implements bitboards, move generation, and validation.BitShogi/server: REST API server handling game state and bot moves.BitShogi/frontend: Interactive web interface for playing against the engine.Shogi_lean: Formal verification and proofs of game logic. Just to practice my lean.
Tech Stack
- Engine: Julia 1.11 (HTTP.jl, JSON3.jl)
- Frontend: React + TypeScript (Vite)
- Verification: Lean 4
- Infrastructure: Docker, Railway (backend), Vercel (frontend)
- SVG file design website
Tip
Run loadRandomPuzzle() in the console for another puzzle.