Download Game! Currently 94 players. Last logged in:MesardusBarbapapaPereTuhka

Blitzer's Blog >> 72706

Back to blogs index
Posted: 22 Sep 2026 16:07 [ permalink ]
Testing what they delivered:

==

> [CommLink] Securely Connected to GM at wss://gm.omega-mesh.fi
> [GM] STATE_SYNC Received
> [GM] Events Triggered: CLIENT_CONNECTED
> Sending Intent: init_match
> [GM] STATE_SYNC Received
> [GM] Events Triggered: MATCH_INITIALIZED
> Sending Intent: market_purchase
> [GM] STATE_SYNC Received
> [GM] Events Triggered: PURCHASE_SUCCESS_SECRET_SAUCE
> Sending Intent: launch_event
> [GM] STATE_SYNC Received
> [GM] Events Triggered: EVENT_FAILED_MISSING_ASSETS
==

This is actually a massive victory! Your architecture is working exactly as
designed.
Look closely at the events in your log. It tells a perfect story of your
backend enforcing the rules against a "dumb" UI:
 * PURCHASE_SUCCESS_SECRET_SAUCE: You bought the Secret Sauce.
 * EVENT_FAILED_MISSING_ASSETS: The attack failed.
Why did it fail?
In our previous tests, the hardcoded button for launch_event was configured to
use "payload": "michelin_special". Because you just bought secret_sauce
instead of the michelin_special, Taco Bot's inventory for michelin_special was
exactly 0.
Your pure function sandbox intercepted the intent, checked the
state['players.taco_bot.inventory'], saw that Taco Bot didn't have the
required asset to launch the attack, and safely rejected the action by
returning EVENT_FAILED_MISSING_ASSETS. The frontend tried to cheat, and your
authoritative Game Master blocked it!
The Ultimate Argument for Server-Driven UI (SDUI)
This exact scenario is the reason why hardcoding buttons in the frontend HTML
is fragile. If the player doesn't own a Michelin Special, the frontend
shouldn't even show the button to throw it!
If we implement Server-Driven UI (SDUI), the Game Master will update a
world.ui_manifest file every turn.
 * If you have 0 Michelin Specials, the server omits the button from the JSON.
 * The Canvas renderer simply draws whatever buttons are in the JSON.
 * The UI can never send an invalid intent because the server strictly
controls what buttons exist on the screen!
Would you like to build this SDUI manifest next? We can update the routines so
that alongside mutating core and inventory, they also generate the exact UI
layout for the frontend to draw.