{"schemaVersion":1,"record":{"key":"practice/maintenance-patrol","type":"practice","id":"maintenance-patrol","lang":"en","title":"Maintenance patrol","summary":"Connect perception, memory, action selection and route following.","updatedAt":"2026-10-20","status":"active","url":"https://gamemechanics.pro/en/knowledge/practice/maintenance-patrol/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/practice/maintenance-patrol.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/practice/maintenance-patrol.md","aliases":[],"tags":["NPC behavior"],"sourceIds":["source-3e6c21889ae768e0","source-6f794a271cd60b9c"],"sources":[{"id":"source-3e6c21889ae768e0","title":"Challenges for Game Designers: author website","url":"https://designgames.wordpress.com/","verifiedAt":null},{"id":"source-6f794a271cd60b9c","title":"Challenges for Game Designers: table of contents","url":"https://designgames.wordpress.com/toc/","verifiedAt":null}],"sections":[{"id":"goal","title":"Goal","body":"Connect perception, memory, action selection and route following."},{"id":"example","title":"Scenario and materials","body":"A robot patrols a station, detects a fault and moves to repair it. A door may close between it and the target. Store the robot’s known target position separately from the actual world state.\n\nA small scene or step-by-step model with an event log"},{"id":"constraints","title":"Constraints","body":"- Use one map, one robot and one fault. Specify the graph and edge costs explicitly.\n- The robot learns through observations only; its memory expires.\n- Every action change logs time, observation and reason."},{"id":"steps","title":"Steps","body":"1. Define patrol, move-to-fault, repair and search states, including transition conditions.\n2. Separate observations from memory. Losing sight must not instantly reveal the target’s new position.\n3. Connect action selection to path search and movement; recompute after a closing door or return an explicit failure.\n4. Repeat these scenarios: visible target, lost target, closing door and unreachable target. Preserve identical starting conditions."},{"id":"outcome","title":"Deliverable","body":"A runnable scene or reproducible step-by-step model, map, transition table and four logs explaining decisions."},{"id":"checks","title":"Check your work","body":"- Identical starting conditions and observations produce identical decisions.\n- After losing sight, the robot uses the last known position until memory expires.\n- A closed door causes neither wall traversal nor endless path recomputation each frame.\n- Target reached, no route and start equal to goal are distinguishable results."},{"id":"reflection","title":"Reflect","body":"Which wrong decision came from memory, which from priorities and which from navigation? Change only one of these layers."}],"relations":[{"type":"practices","direction":"incoming","label":"What this helps you learn","key":"lesson/npc-perception","title":"NPC perception and target memory","url":"https://gamemechanics.pro/en/lessons/npc-perception/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/npc-perception.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/npc-perception.md"},{"type":"practices","direction":"incoming","label":"What this helps you learn","key":"lesson/npc-action-selection","title":"How an NPC selects an action","url":"https://gamemechanics.pro/en/lessons/npc-action-selection/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/npc-action-selection.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/npc-action-selection.md"},{"type":"practices","direction":"incoming","label":"What this helps you learn","key":"lesson/npc-pathfinding","title":"Pathfinding and following a route","url":"https://gamemechanics.pro/en/lessons/npc-pathfinding/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/lesson/npc-pathfinding.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/lesson/npc-pathfinding.md"},{"type":"practices","direction":"incoming","label":"What this helps you learn","key":"path/npc-behavior","title":"NPC behavior","url":"https://gamemechanics.pro/en/learn/npc-behavior/","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/path/npc-behavior.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/path/npc-behavior.md"},{"type":"uses","direction":"outgoing","label":"Sources in the selection","key":"resource/challenges-for-game-designers","title":"Challenges for Game Designers","url":"https://gamemechanics.pro/en/resources/#resource-challenges-for-game-designers","jsonUrl":"https://gamemechanics.pro/api/v1/knowledge/en/resource/challenges-for-game-designers.json","markdownUrl":"https://gamemechanics.pro/content/knowledge/en/resource/challenges-for-game-designers.md"}],"placements":[{"title":"In the original collection","url":"https://gamemechanics.pro/en/practice/#maintenance-patrol"}],"supersededBy":[],"attributes":{"topic":"npc","level":"intermediate","minutes":90},"endsAt":null,"provenance":"Thematic inspiration: Challenges for Game Designers by Brenda Brathwaite and Ian Schreiber. These scenarios, constraints and checks are independently written around broad game-design learning topics. This is not a translation or a sequential retelling of the book exercises.","license":"CC-BY-4.0","codeLicense":"MIT","attribution":"gamemechanics.pro contributors"}}