Spaces:
Paused
Paused
Commit History
-
Add obstacles, multiple foods and a real-time 3D (Three.js) view
Game rules: - Several foods on the board at once (5 by default, 1-12, `foods/<n>` command); eating one spawns a replacement so the count stays constant. - Rock obstacles on ~5% of cells each round, generated so every free cell stays connected, two cells off the fence, apart from each other, and clear of the spawn lane. Hitting a rock ends the round ("rock" cause, counted separately). `obstacles` command / `O` key toggles them. - "Closer to the food" in the model prompt now means a shorter path to the nearest food around rocks and the body, not straight-line distance. Default board is 32x20. Browser dashboard: - Page split into index.html, css/dashboard.css and ES modules under js/, compiled into the binary; web.rs serves them plus optional /assets/* (GLB models) read from disk. - 3D and Realistic views render a WebGL miniature garden with Three.js r170 (vendored, MIT): a skinned, rigged snake whose bones are laid along the server's smoothed path each frame, sleeping rabb…38cd66a
-
Replace the Python implementation with a Rust port and a fast CPU inference engine
The Python package (laya_snake/, play.py) is removed; the game is now a single native Rust binary with no Python, PyTorch or virtualenv. The Python version remains available in history at 81e650e. Inference: the Laya model and weights are unchanged. A purpose-built CPU engine (src/engine) keeps the f16 checkpoint memory-mapped and widens to f32 inside an AVX2/FMA/F16C matmul, with fused attention, layer-norm and GeGLU kernels and an exact pruning of the last decision-head layer to the option-marker rows. Measured on an i5-1235U: ~2.1x faster per decision (1.7x once thermally throttled), 2.8x less memory, ~20x faster model load. `--verify` checks it against the stock laya crate: 24/24 identical moves, probabilities within 0.0001. Game and UI: Dir enum and flat-grid BFS/flood-fill (tested against the original algorithms); the next decision is requested as soon as a move lands so model time overlaps the pacing delay; redraw only on change, in one synchronized write; the request queue ke…92eac91