Academy case studies

Academy case studies

A Martinez AI Studios education product

AI can write the code. You still need to understand the game.

These pages teach from CONTRABAND: Edge of the Fold — a commercial Steam game created by Dero Lavigne and published by Martinez AI Studios. Students are not learning from toy examples. A case is published only when the incident can be evidenced: symptom, player impact, reproduction, ownership, wrong assumption, root cause, smallest fix, regression test, release check, and a lesson that transfers.

Real CONTRABAND development case

CONTRABAND: Edge of the Fold

  • State ownership

    Keros arrival distance: two paths, two positions

    CONTRABAND’s tutorial (Last Run) has two distinct arrivals at Keros. The first is a scripted teleport. The second is a player map warp from Belu. Those are not the same function. Treating a station-local offset as a world position parked the return near the origin — about 795–798 m HUD from the dock — instead of the intended near-dock band.

    Read the case
  • Input / UX

    Pointer lock vs clickable dialogue

    During Last Run, a hail/choice UI with clickable 1/2 buttons could appear while pointer lock was still active. Keyboard/mouse players could not click. Gamepad players did not need the same hint. The documented fix is a “Press ESC to take the mouse” prompt, with two follow-on rules: do not recapture while the hail is open, and after ESC do not ask for ESC again.

    Read the case
  • Rendering / lifecycle

    WebGL context lifecycle: dispose is not free

    Chromium keeps a small budget of WebGL contexts per process (on the order of 8–16). CONTRABAND preview UIs constructed a WebGLRenderer on open and dispose() on close. dispose() does not immediately release the GPU context. After a few reopen cycles the runtime logged too many active contexts, the main flight canvas received CONTEXT_LOST_WEBGL, HUD DOM stayed up, and the 3D view went white.

    Read the case
  • Economy / progression

    Survival progression: threshold, duplicates, difficulty

    Kaela Survival grants hulls when credits cross a double-price threshold. Shipyard display prices apply a global ×8 multiplier after a tier scale. Using the displayed price made unlocks eight times too expensive. Separately, kills tagged as Survival still received ambient credits, combo money, and XP — a double pay. Ten combat difficulty profiles (Story through Extinction) multiply enemy stats only; tests require identical milestone credits and kill/wave XP on every profile.

    Read the case
  • Release engineering

    Release gates: QA, cloud, then a build

    CONTRABAND’s Steam client (public App ID 4901100) records an explicit release gate: npm run qa:release:logic (unit tests, module cycles, edition + story-graph + validate-release) plus Electron runners for game QA and Last Run (English/Spanish × keyboard/mouse and gamepad). The 15 Aug 2026 log also records save/cloud rules: autosave must not overwrite before load, New Game uploads the new run to Steam Cloud, and a future save schema is refused. This page does not document Steamworks admin identifiers, builder accounts, or upload credentials.

    Read the case

What gets published

Plan topics that cannot yet answer every required section stay unpublished. They are not listed here as facts. The public set is small on purpose.