{"schemaVersion":1,"record":{"key":"path/first-prototype","type":"path","id":"first-prototype","lang":"en","title":"Your first verifiable prototype","summary":"One scene: from a question and input to feedback, measurement and reviewing agent work.","updatedAt":"2026-10-20","status":"active","url":"https://gamemechanics.pro/en/learn/first-prototype/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/path/first-prototype.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/path/first-prototype.md","aliases":[],"tags":[],"sourceIds":[],"sources":[],"sections":[{"id":"prerequisites","title":"Before you start","body":"No existing project is required."},{"id":"sequence","title":"Lesson sequence","body":"1. [Scope and a testable prototype](https://gamemechanics.pro/en/lessons/scope-and-prototype/)\n2. [The game loop and time](https://gamemechanics.pro/en/lessons/game-loop/)\n3. [Input and feedback](https://gamemechanics.pro/en/lessons/input-and-feedback/)\n4. [Collision fundamentals](https://gamemechanics.pro/en/lessons/collision-basics/)\n5. [States and transitions](https://gamemechanics.pro/en/lessons/state-machines/)\n6. [Game feel: making actions readable](https://gamemechanics.pro/en/lessons/game-feel/)\n7. [A performance budget](https://gamemechanics.pro/en/lessons/performance-budget/)\n8. [Developing a game with an AI agent](https://gamemechanics.pro/en/lessons/agent-workflow/)\n9. [Verifying gameplay behavior](https://gamemechanics.pro/en/lessons/gameplay-acceptance/)"},{"id":"practice","title":"Put it into practice","body":"Start with a paper test of the idea. Then use the lesson tasks to build one scene and check it against the conditions above.\n\n- [A current on paper](https://gamemechanics.pro/en/practice/#paper-current)\n- [Rhythm without rushing](https://gamemechanics.pro/en/practice/#rhythm-without-hurry)"},{"id":"outcome","title":"Outcome","body":"One playable scene with a single action, quick restart and a reproducible check."},{"id":"checks","title":"Completion checks","body":"- The prototype answers a recorded question and has a stopping criterion.\n- The action, pause, restart and feedback are checked in the target environment.\n- Agent changes are explained and supported by observable results."}],"relations":[{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/scope-and-prototype","title":"Scope and a testable prototype","url":"https://gamemechanics.pro/en/lessons/scope-and-prototype/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/scope-and-prototype.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/scope-and-prototype.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/game-loop","title":"The game loop and time","url":"https://gamemechanics.pro/en/lessons/game-loop/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/game-loop.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/game-loop.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/input-and-feedback","title":"Input and feedback","url":"https://gamemechanics.pro/en/lessons/input-and-feedback/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/input-and-feedback.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/input-and-feedback.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/collision-basics","title":"Collision fundamentals","url":"https://gamemechanics.pro/en/lessons/collision-basics/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/collision-basics.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/collision-basics.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/state-machines","title":"States and transitions","url":"https://gamemechanics.pro/en/lessons/state-machines/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/state-machines.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/state-machines.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/game-feel","title":"Game feel: making actions readable","url":"https://gamemechanics.pro/en/lessons/game-feel/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/game-feel.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/game-feel.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/performance-budget","title":"A performance budget","url":"https://gamemechanics.pro/en/lessons/performance-budget/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/performance-budget.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/performance-budget.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/agent-workflow","title":"Developing a game with an AI agent","url":"https://gamemechanics.pro/en/lessons/agent-workflow/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/agent-workflow.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/agent-workflow.md"},{"type":"contains","direction":"outgoing","label":"Path materials","key":"lesson/gameplay-acceptance","title":"Verifying gameplay behavior","url":"https://gamemechanics.pro/en/lessons/gameplay-acceptance/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/gameplay-acceptance.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/gameplay-acceptance.md"},{"type":"practices","direction":"outgoing","label":"Put it into practice","key":"practice/paper-current","title":"A current on paper","url":"https://gamemechanics.pro/en/knowledge/practice/paper-current/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/practice/paper-current.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/practice/paper-current.md"},{"type":"practices","direction":"outgoing","label":"Put it into practice","key":"practice/rhythm-without-hurry","title":"Rhythm without rushing","url":"https://gamemechanics.pro/en/knowledge/practice/rhythm-without-hurry/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/practice/rhythm-without-hurry.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/practice/rhythm-without-hurry.md"},{"type":"reviews","direction":"outgoing","label":"Review through a lens","key":"lens/schell-002","title":"Essential Experience","url":"https://gamemechanics.pro/en/knowledge/lens/schell-002/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lens/schell-002.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lens/schell-002.md"},{"type":"reviews","direction":"outgoing","label":"Review through a lens","key":"lens/schell-033","title":"Rules","url":"https://gamemechanics.pro/en/knowledge/lens/schell-033/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lens/schell-033.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lens/schell-033.md"},{"type":"reviews","direction":"outgoing","label":"Review through a lens","key":"lens/schell-103","title":"Playtesting","url":"https://gamemechanics.pro/en/knowledge/lens/schell-103/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lens/schell-103.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lens/schell-103.md"}],"placements":[],"supersededBy":[],"attributes":{"lessons":[{"id":"scope-and-prototype","url":"https://gamemechanics.pro/en/lessons/scope-and-prototype/","markdownUrl":"https://gamemechanics.pro/content/en/scope-and-prototype.md"},{"id":"game-loop","url":"https://gamemechanics.pro/en/lessons/game-loop/","markdownUrl":"https://gamemechanics.pro/content/en/game-loop.md"},{"id":"input-and-feedback","url":"https://gamemechanics.pro/en/lessons/input-and-feedback/","markdownUrl":"https://gamemechanics.pro/content/en/input-and-feedback.md"},{"id":"collision-basics","url":"https://gamemechanics.pro/en/lessons/collision-basics/","markdownUrl":"https://gamemechanics.pro/content/en/collision-basics.md"},{"id":"state-machines","url":"https://gamemechanics.pro/en/lessons/state-machines/","markdownUrl":"https://gamemechanics.pro/content/en/state-machines.md"},{"id":"game-feel","url":"https://gamemechanics.pro/en/lessons/game-feel/","markdownUrl":"https://gamemechanics.pro/content/en/game-feel.md"},{"id":"performance-budget","url":"https://gamemechanics.pro/en/lessons/performance-budget/","markdownUrl":"https://gamemechanics.pro/content/en/performance-budget.md"},{"id":"agent-workflow","url":"https://gamemechanics.pro/en/lessons/agent-workflow/","markdownUrl":"https://gamemechanics.pro/content/en/agent-workflow.md"},{"id":"gameplay-acceptance","url":"https://gamemechanics.pro/en/lessons/gameplay-acceptance/","markdownUrl":"https://gamemechanics.pro/content/en/gameplay-acceptance.md"}],"prerequisites":[],"practice":[{"id":"paper-current","url":"https://gamemechanics.pro/en/practice/#paper-current"},{"id":"rhythm-without-hurry","url":"https://gamemechanics.pro/en/practice/#rhythm-without-hurry"}],"lenses":[{"id":"schell-002","url":"https://gamemechanics.pro/en/lenses/#schell-002"},{"id":"schell-033","url":"https://gamemechanics.pro/en/lenses/#schell-033"},{"id":"schell-103","url":"https://gamemechanics.pro/en/lenses/#schell-103"}]},"endsAt":null,"provenance":"Original gamemechanics.pro material. Check illustrative examples in your own project.","license":"CC-BY-4.0","codeLicense":"MIT","attribution":"gamemechanics.pro contributors"}}