Commit graph

2 commits

Author SHA1 Message Date
jedarden
8d15333f2b feat(wasm): implement RusherBot WASM with low-level interface per plan §11.2
- Rewrote wasm/bots/rusher/src/lib.rs with complete Rusher strategy:
  - BFS pathfinding to nearest enemy cores
  - Wall and enemy avoidance
  - Known enemy core tracking across turns
  - Minimal JSON parser for state/config
  - Custom bump allocator using __heap_base
- Updated Cargo.toml for no_std build with alloc crate
- Updated build.sh to use cargo directly (sandbox expects low-level exports)
- Output: 14KB WASM (much smaller than Go's 5MB due to no runtime)

The sandbox loader expects pointer-based WASM interface (allocate, init,
compute_moves, free_result) not wasm-bindgen's JavaScript bindings.
This implementation uses raw WASM exports compatible with createPointerBasedBridge.

Closes: bf-2d50
2026-05-25 17:41:49 -04:00
jedarden
98276903e2 feat(wasm): add separate WASM bot builds for browser sandbox (plan §11.1)
Add wasm/bots/ directory with separate WASM builds for each bot:
- gatherer (Go → WASM): energy-focused, avoids combat
- random (Go → WASM): random moves
- guardian (Go → WASM): defends own cores
- hunter (Go → WASM): hunts nearest enemy
- rusher (Rust → WASM): attacks enemy cores
- swarm (AssemblyScript → WASM): tight formations

Each bot exports the standard WASM interface:
- init(configJSON): initialize with game config
- compute_moves(stateJSON): return moves JSON
- free_result(ptr): no-op for Go/AS

Built WASM files output to wasm/dist/. Go WASM bots verified to build.

Closes: bf-2zi5

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 14:58:01 -04:00