Releases: jiafans/gomoku-rm
v1.0.1 — vellum-ready release
Adds the artifacts vellum needs to package and distribute gomoku-rm:
- LICENSE (MIT)
- icon.png (256×256 board fragment with stones, generated by
packaging/make_icon.py) - packaging/VELBUILD — package recipe ready for
vellum-dev/vellumPR
Release assets:
gomoku-rm— armv7 ELF, ~2 MB, e_machine=2800icon.png— AppLoad iconexternal.manifest.json— AppLoad manifest with qtfb-shim env vars
Functional changes vs v1.0.0: none. Same engine, same scenes, same
vendored evdev/libremarkable patches. Bumped to 1.0.1 so the LICENSE
file (and other vellum prerequisites) is present at the tag the
VELBUILD source URLs reference.
v1.0.0 — first verified-working release
First end-to-end working release of gomoku-rm on reMarkable 2.
What works
- 19×19 board with Go-style coordinate labels and 9 star points
- Play vs AI (3 difficulties: Easy / Medium / Hard)
- Local 2-player on the same device
- Touch-driven move placement
- Win detection + winner banner + tap-to-restart
- Save & Quit returns to main menu; auto-saves on every move; "Continue" resumes
- Undo (single move in PvP, full round in PvAI)
- Bilingual UI scaffolding (English / 中文 — labels switchable in Settings)
Engine
~1000 lines of Rust covering pattern recognition (five, open/closed four,
open/closed three, two), full-board evaluation summing across rows/cols/
diagonals, and negamax + alpha-beta + iterative deepening with candidate
pruning to empty cells within Chebyshev radius 2 of any stone. 3-second
time budget per move; depth 2 / 4 / 6 by difficulty.
Engine is a trait, so future versions can swap in mintaka or rapfi via
IPC without touching the rest of the codebase.
Vendored upstream patches (~10 lines each, see README §Vendored upstream fixes)
- evdev 0.12.2 — silences
got a key event despite not supporting keys
panic from rM2's pt_mt BTN_TOUCH events - libremarkable 0.7.0 — derives
finger.pressedfromABS_MT_TRACKING_ID
since rM2's pt_mt does not emitABS_MT_PRESSURE
Build & deploy
brew install zig
cargo install cargo-zigbuild
rustup target add armv7-unknown-linux-gnueabihf
cargo zigbuild --target armv7-unknown-linux-gnueabihf --release
RM_PASS='<device password>' ./packaging/deploy.shKnown limitations
- CJK glyphs render as missing-glyph boxes (libremarkable ships a Latin-only
embedded font; switching language updates label semantics but proper CJK
rendering is future work) - AI ceiling is amateur 1-3 dan (depth 6 with the budget); stronger play
needs transposition tables / killer moves / mintaka or rapfi via the
Engine trait