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.
101 lines
4.1 KiB
Markdown
101 lines
4.1 KiB
Markdown
# Release checks
|
|
|
|
## Pre-ship checklist
|
|
|
|
**Build**
|
|
- [ ] `cargo check --workspace` clean
|
|
- [ ] `cargo clippy` clean for touched crates (repo has `clippy.toml`)
|
|
- [ ] `cargo build --release` succeeds for every claimed target
|
|
- [ ] No `dbg!`, no commented-out blocks, no `TODO` on a shipping path
|
|
|
|
**Correctness**
|
|
- [ ] Every touched Cx-free crate's tests pass
|
|
- [ ] Asset-dependent tests **ran**, not skipped (check the output)
|
|
- [ ] Driven test covers: reach win, reach lose, pause/resume, retry
|
|
- [ ] Win twice in a row — catches incomplete `reset()`
|
|
- [ ] 5-minute soak: no crash, no memory growth, no frame-time drift
|
|
- [ ] Every model id in the scene asserted with `model_is_loaded`
|
|
|
|
**Presentation**
|
|
- [ ] Screenshots of every state at target aspect ratio, inspected
|
|
- [ ] UI checked at 16:9, 4:3, and a tall phone ratio
|
|
- [ ] Touch targets ≥ 44 px if mobile is claimed
|
|
- [ ] Scorecard ≥ 2.3 average, nothing below 2, if premium is claimed
|
|
|
|
**Performance**
|
|
- [ ] p90 frame time in `--release` on a named device
|
|
- [ ] Inside `apps/arcade/BUDGETS.md` with ≥ 20% headroom
|
|
- [ ] `quality_level()` reported — a good frame time from a silent drop to q1 is not a good frame time
|
|
- [ ] Before/after numbers for any optimisation claim
|
|
|
|
**Netplay** (if applicable)
|
|
- [ ] Two sessions stay in sync through a full match
|
|
- [ ] Clients send input only; host is authoritative
|
|
- [ ] Content replicates as `(preset, seed, position)`
|
|
|
|
**XR** (if applicable)
|
|
- [ ] 72 Hz held
|
|
- [ ] No face-locked UI, no camera motion without player input
|
|
- [ ] Snap turn available; no shake
|
|
|
|
**Legal / credits**
|
|
- [ ] `resources/CREDITS.toml` current
|
|
- [ ] Attribution shipped with the package (CC0 does not require it; do it anyway)
|
|
- [ ] Third-party licences included
|
|
|
|
## Packaging
|
|
|
|
`makepad-game-pkg`: `Manifest`, `Knob`, `ManifestError`, `Library`, `LibraryEntry`, `Registry`, `IndexEntry`, `fetch_lan_package`, `verify_digest`, `sha256` / `sha256_hex`.
|
|
|
|
1. Write the `Manifest` — identity, version, entry point, and `Knob`s for tunables you want exposed without a rebuild.
|
|
2. Pack, producing a content-addressed artefact.
|
|
3. `verify_digest` on the result — and again on any package you receive.
|
|
4. Publish to a `Registry`; `fetch_lan_package` retrieves over LAN.
|
|
|
|
**The hash is the authority.** A mirror is never trusted more than upstream; bytes from either are verified identically. Apply the same rule to packages: an unverified package is untrusted input, whatever the source.
|
|
|
|
## Version and changelog
|
|
|
|
Bump the version in the app crate's `Cargo.toml`. Record: what changed for the player, what changed for a developer depending on the crates, known issues, and the measured performance on the reference device.
|
|
|
|
## Cross-platform statement
|
|
|
|
For each platform, say which of these you did — never blur them:
|
|
|
|
| Platform | Built | Ran | Played | Measured |
|
|
| --- | --- | --- | --- | --- |
|
|
| macOS | | | | |
|
|
| Windows | | | | |
|
|
| Linux | | | | |
|
|
| Android | | | | |
|
|
| Web | | | | |
|
|
| Quest / XR | | | | |
|
|
|
|
Note the fork's constraints: the Android branch is the active target here, and web builds are memory-pressure sensitive (the Route work in this fork exists precisely because of bounded web memory budgets). Do not claim web without a memory reading.
|
|
|
|
## Report template
|
|
|
|
```
|
|
OUTCOME
|
|
Racing game: 3 laps, checkpoints, 4 AI opponents, win/lose reachable.
|
|
|
|
EVIDENCE
|
|
cargo test -p makepad-game-sim 42 passed
|
|
cargo test -p makepad-game-blocks 18 passed, 0 skipped (assets present)
|
|
cargo test -p makepad-arcade 6 driven tests passed
|
|
- win path, lose path, pause/resume, retry, double-win, 5-min soak
|
|
screenshots artifacts/shots/{menu,playing,paused,win,lose}-1920x1080.png
|
|
playing: dusk desert, low sun, long shadows, 4 tinted opponent cars
|
|
perf M1 Air release, p90 11.8 ms vs 16.6 ms budget, q3, 29% headroom
|
|
scorecard avg 2.4, lowest 2 (ground), artifacts/scorecard.md
|
|
|
|
NOT RUN
|
|
Quest: built, not run - no device. 72 Hz claim is unverified.
|
|
Windows/Linux: not built.
|
|
|
|
RISKS
|
|
Ground material is the weakest category; a texgen pass would raise it.
|
|
Netplay tested with 2 clients only; MAX_PLAYERS is 8.
|
|
```
|
|
|
|
The `NOT RUN` section is mandatory. Omitting it is what turns an honest report into a misleading one.
|