You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -99,18 +113,24 @@ The builds are not signed with a commercial code-signing certificate, so Windows
99
113
100
114
-**Fanorona 9x5**: mandatory captures, approach and withdrawal captures, capture chains, and optional stopping.
101
115
-**English Draughts 8x8**: mandatory captures, multiple jumps, single-step kings, and promotion. This is not 10x10 International Draughts.
102
-
-**Nine Men's Morris**: placement, mills and removals, adjacent movement, flying with three pieces, and terminal-state detection.
116
+
-**Nine Men's Morris**: placement, mills and removals, adjacent movement, flying with three pieces, and terminal-state detection; recommendations use an independent Rust/WebAssembly engine with a TypeScript fallback.
103
117
104
118
### Highlights
105
119
106
-
-Local iterative-deepening Alpha-Beta search with three ranked candidates for every game.
120
+
-Separate local search engines for Fanorona and draughts, plus an independent iterative-deepening PVS/Alpha-Beta core for Morris. Each game can return up to three ranked candidates.
107
121
- Complete Simplified Chinese and English interface with a top game switcher.
108
122
- Quick search by default, with Strong and Revenge presets available.
109
123
- Full-turn undo, position editing, first-player switching, and automatic piece-color swapping.
110
124
- Fast draughts piece selection with clear feedback for mandatory captures and unfinished multiple jumps.
111
125
- Android safe-area handling for status bars, display cutouts, and navigation bars, plus quick confirmation and game-over prompts.
112
126
- The Windows build only serves the embedded app on `127.0.0.1` and never exposes it to the network.
113
127
128
+
### About the Morris engine
129
+
130
+
The read-only behavioral audit behind `2.1.0-alpha.3` found no detectable large opening book in the Black Flag Morris opponent. It uses a shallow Negamax/Alpha-Beta search, a transposition table, and a compact score based on total material, empty adjacent edges, and completed mills. This project independently reimplements only observable, general algorithmic behavior; it does not copy, inject, bundle, or depend on Ubisoft code or data.
131
+
132
+
The independent Rust/WebAssembly engine now uses a placement baseline on the same scale, plus 16-way board-symmetry caching, tactical move ordering, forced blocks, and bounded tactical extensions. Until search reaches the end of placement, it retains balanced even-ply results and calculates only one principal placement candidate, avoiding horizon oscillation and MultiPV budget waste. When time permits, the target still includes every remaining placement followed by four movement plies. The opening has 18 placements, so the normal two-second budget cannot exhaust every continuation. This is an enhanced test build aimed at a confirmed evaluation defect, not a perfect solution or a guaranteed win. If WebAssembly fails to load or validate, the app falls back to a TypeScript engine using the same placement baseline. Both paths are fully offline, make no network requests, and consume no tokens.
133
+
114
134
### Development
115
135
116
136
This project was developed primarily by GPT-5.6 AI under the project owner's requirements, device testing, rule feedback, and final decisions. The AI contributed the rules engines, search algorithms, Web interface, Windows portable build, and Android app. Generated code has been covered by automated tests and hands-on verification, while rule reviews and search improvements remain welcome.
@@ -126,6 +146,14 @@ pnpm install
126
146
pnpm dev
127
147
```
128
148
149
+
Rebuilding the Morris WebAssembly module also requires rustup, the Rust 1.97.0 toolchain pinned by this repository, and the `wasm32-unknown-unknown` target:
0 commit comments