makepad/skills/makepad-game-director/references/evidence-manifest.md
Arena Agent fe21c07d84 skills: add Makepad game skills pack ported from threejs-game-skills
Nine agent skills for building Makepad/Rust games, ported from
majidmanzarpour/threejs-game-skills. Same director-routed workflow and
premium bar; runtime rewritten for this fork's game crates.

- makepad-game-director        entrypoint, routing, continuity, asset probe
- makepad-gameplay-systems     loop, movers vs rigid bodies, input, camera, netplay
- makepad-aaa-graphics-builder lighting, shaders, budget, visual scorecard
- makepad-game-ui-designer     HUD, menus, touch and XR UI
- makepad-debug-profiler       defect bisection and profiling
- makepad-qa-release           verification ladder, evidence, packaging
- makepad-3d-generator         CC0 model search, casts, procedural geometry
- makepad-image-generator      texgen textures, palettes, sky, icons
- makepad-audio-generator      sample bank, mixer, material impacts, 3D audio

Written against the real APIs in libs/game/*, libs/sim and apps/arcade:
the game.* verb table, GameRenderer adaptive quality, the packed 6-float
GameMeshVertex layout, script_mod! splash styling, makepad-test driving,
and the BUDGETS.md numbers. No paid generation API is required - the CC0
library plus seeded makepad-game-gen replaces them.

Includes install.sh (Codex/Claude), validate-skills.sh and a repo-aware
probe_assets.sh; both scripts verified against this checkout.
2026-09-05 21:18:58 +00:00

3.2 KiB

Evidence manifest

What counts as proof. "It should work" is not on this list.

Levels of evidence, weakest to strongest

  1. Compilescargo check -p <crate>. Necessary, never sufficient. Makepad resolves the splash DSL at runtime, so a widget or style error survives cargo check and appears on launch.
  2. Unit-testedcargo test -p <crate> for a Cx-free crate. Strong for rules: physics, generation, scoring, netcode, merge.
  3. Driven — a makepad-test test that launches the real app, sends real input, and asserts on widget_snapshot() or a log line.
  4. Seen — a screenshot() from that run, inspected by you, at the actual target aspect ratio.
  5. Measured — frame time, draw calls, instance bytes, entity counts, against apps/arcade/BUDGETS.md.
  6. Shipped--release build succeeds and runs.

Required by change size

Change Required
Constant, copy, colour 1
Rule change in a Cx-free crate 1, 2
New mechanic 1, 2, 3
Visual or UI change 1, 3, 4
Performance work 1, 5 (before and after)
Full game or premium pass all six, plus the scorecard

Capturing each

Unit test — the Cx-free crates are the point of the architecture:

cargo test -p makepad-game-sim
cargo test -p makepad-game-gen
cargo test -p makepad-game-blocks

Driven testmakepad-test gives TestApp with type_text, press_key, touch_down, screenshot, widget_dump, widget_snapshot, wait_for_log_contains:

use makepad_test::{makepad_test, TestApp, KeyCode};

#[makepad_test]
fn player_scores_on_pickup(app: TestApp) {
    app.wait_for_log_contains("game: ready");
    app.press_key(KeyCode::ArrowUp);
    app.wait_for_log_contains("score: 1");
    let shot = app.screenshot();
    println!("evidence: {}", shot.display());
}

Headless probe — for render and perf claims without a window:

cargo run -p makepad-arcade --example bigworld_probe --release

Measurement — read from the renderer, do not estimate:

renderer.frame_p90_ms();      // Option<f32>
renderer.quality_level();     // adaptive quality actually applied
renderer.quality_reason();    // why it dropped

RenderStats::instance_floats is the authority on instance stream width — the BUDGETS numbers were taken from the compiled shader, not counted by hand. Do the same.

Asset resolution — prove the scene is not silently on primitives:

assert!(renderer.model_is_loaded("kenney/racing/vehicle-truck-yellow"));

Screenshot discipline

  • Capture at the target aspect ratio, not the default window.
  • Capture the states that exist: menu, playing, paused, win, lose. A premium claim with only one screenshot is unverified.
  • Look at them. An agent that captures a screenshot and does not describe what is in it has produced a file, not evidence.
  • Name them for what they show: artifacts/shots/playing-desert-1920x1080.png.

Reporting

Keep detailed evidence and the scorecard in artifacts/. Keep the final answer focused on what works and what the remaining risks are. State plainly what you could not run and why — an unrun check reported as passing is the one failure mode that destroys trust in everything else in the report.