A village worth
fighting for.
Revise your orders and begin again.
Load Qwen or try the scripted baseline to begin.
A model can make a bad decision. It cannot invent an action.+
Each role has a fixed set of allowed actions. The model scores eligible choices; JavaScript selects a value and constructs the fixed fields. It cannot create a “teleport” field or grant unlimited food. An allowed choice can still get a villager killed.
Candidate scores are relative preferences, not calibrated confidence. The browser evaluates one NPC at a time; this does not reproduce the CUDA service’s parallel scheduling.
{}
No model inference has run.
How to read this experiment+
The simulation advances independently of inference. AI ticks/sec counts applied NPC decisions in a rolling ten-second window; AI rounds/sec counts completed rounds across villagers currently eligible for an AI choice. Automatic meals and jobs with only one valid option do not count as AI decisions. Render FPS only measures drawing; frame P99 shows long frame gaps. Villagers can temporarily interrupt orders to eat or recover; these automatic needs do not count as model decisions. Pausing, resetting, editing a prompt, or losing the selected villager can make an in-flight decision stale, so the game checks results before applying them.
WebLLM runs Qwen 3.5 0.8B on your browser GPU. The model and runtime download from Hugging Face and public CDNs; decisions then run on this device. This demo supplies symbolic world state, not screenshots. Game art: Kay Lousberg and Quaternius, CC0.