The macroquad GUI now builds for wasm32 the way MRPGI's does, with two
deliberate differences.
It boots into Play and the F8 editor toggle is compiled out of the web
build. What ships to someone playing a game should be the game, not the tool
that made it.
And it embeds a WorldBundle rather than a game *folder*. MRPGI reaches for
include_dir! because its bundle carries only manifest+rooms; MRPCI's already
carries scripts and sprites too, so one `--export-bundle` document is the
whole game. That is also the format MRP3GI boots from, which means one file
now feeds two engines.
mrpci_alloc/mrpci_world_in let the page hand over another bundle while the
engine is running — the arcade picker and drag-and-drop both arrive there,
and the session restarts on the new world.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
rhai's default feature set is ["std", "ahash/runtime-rng"]. The second half
seeds hash maps from OS entropy, which is a run-to-run variation source
living under a crate whose whole promise is byte-identical replays — and it
pulls getrandom, which has no backend on wasm32-unknown-unknown, so the
browser build could not compile at all.
Dropping it leaves ahash on its compile-time seed. The canonical Neon
Precinct playthrough produces byte-identical events before and after, and
the suite is green.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
AI lane (ported from MRPGI): unknown typed sentences go to a local LLM (MRPCI_AI: ollama default / openrouter / off) that maps them onto already-legal commands; one in flight, polled per tick, hard-off under --script so replays stay byte-identical. Portraits: NPCs/props gain a portrait sprite drawn beside the dialogue window in the GUI (6x) and annotated frames (2x); sergeant + vend-bot faces in the demo. Also: --script + --render-room renders the frame a replay ends on. Verified: 5 test suites green, deterministic 25/25 playthrough, GUI boots.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>