lovc21/NeuroSpeed
NeuroSpeed is a UCI chess engine ♟️ written in Zig that is optimized for bullet and ultra-bullet games🌠
This chess engine is still in development. When I have it in working order and with some results, I will release it as version 1 (v1)
TODO:
| Version | Release Date | CCRL Blitz | CCRL 40/15 |
|---|---|---|---|
| v1.0 | 2024-01-01 | 3000 | 3050 |
| v1.1 | 2024-03-15 | 3100 | 3150 |
| v2.0 | 2024-06-10 | 3200 | 3250 |
These are the features that were implemented so far:
Board Representation:
- Bitboard board representation
- Pre-calculated attack tables
- Magic bitboards
- Hybrid mailbox for piece lookup
- Compact 16-bit move encoding
Move Generation:
- Pseudo-legal move generation
- Separate capture move generation
- All special moves (en passant, castling, promotions)
- Comptime color specialization
Search:
- Negamax with alpha-beta pruning
- Principal Variation Search (PVS)
- Iterative deepening
- Quiescence search
- Principal Variation (PV) table
- Mate distance pruning
Move Ordering:
- PV move ordering
- MVV-LVA (Most Valuable Victim - Least Valuable Attacker)
- Killer move heuristic (2 killers per ply)
- History heuristic
- Incremental move sorting
Evaluation:
- Material counting (incremental)
- Piece-Square Tables (PST) - middlegame/endgame tapered
- Passed pawns
- Isolated pawns
- Doubled pawns
- Pawn chains
- Pawn phalanx
- Piece mobility (knights, bishops, rooks, queens)
- King safety (pawn shelter, attacking pieces)
- Outpost detection
- Bishop pair bonus
- Bad bishop penalty
- Rook on open/semi-open files
- Rook on 7th/2nd rank
- Threat evaluation
- Insufficient material detection
- Special KBN vs K endgame evaluation
- Game phase calculation (opening/middlegame/endgame)
Time Management:
- Fixed depth search
- Fixed time search (movetime)
- Time controls with increment (wtime/btime/winc/binc)
- Simple time allocation
UCI Protocol:
- Full UCI compliance
- Threaded search
- FEN parsing
- Move parsing
- Perft testing
- OpenBench-compatible benchmark