Playtest a Godot 4 game with a Cursor agent
Playtest de Godot 4 para agentes en Claude Code o Cursor: capturar el juego de verdad, hacer clicks como un jugador, y no contaminar src/. Task: Playtest de Godot 4 para agentes en Claude Code o Cursor: capturar el juego de verdad, hacer clicks como un jugador, y no contaminar src/. Repo: https://github.com/Joelnicolass/godot-studio-playtest El título vive en otro proyecto. Este repo instala el plugin, las skills, el command y el subagente. Mapa Mapa del trabajo de un slice: https://joelnicolass.github.io/godot-studio-playtest/ Fuente: docs/architecture.json. Qué problema resuelve Un agente que “prueba” el juego suele: Tirar godot -s /tmp/capture.gd y romper autoloads (class_name se compila antes). Inventar un PNG o un árbol de nodos de memoria. Meter agent_setup(), una escena test_*.tscn o spawn en el glue de producto. Acá el contrato es el contrario: el agente habla con Godot por CLI, el flow es JSON, y los helpers viven en res://agent/. Qué es cada pieza Claude Code y Cursor distinguen skill (procedimiento que el agente carga), command (prompt que invocás con /) y subagente (rol aislado, otro contexto). Este repo usa las tres, más un plugin Godot. El trabajo de ese slice está en Mapa. Flujo de playtest Quien llama entrega el F<n>: criterios, la escena (res://debug/… o la del jugador) y la acción. El playtester escribe el flow y lo corre. No construye el mundo. res://debug/ la nombró el tech lead y la armó el developer. press manda un InputEventAction: _unhandled_input con is_action_pressed es el camino del juego. Un keycode que no está en el mapa es un bug del producto. Si esa escena no está, el playtester devuelve NEED_SETUP y no la inventa. Si un class_name no está en el cache, importa una vez; si el error vuelve, devuelve CACHE_STALE. Reglas cortas: Ejercé todos los criterios del slice, no una muestra. No hay un segundo OK. Si falta res://debug/, NEED_SETUP y pará. Jugá la escena del F<n>. No la crees y no uses call() para armarla. Solo acciones ya mapeadas en el editor, o click/type del control. Sin keycodes. Sin func que mueva o fuerce el estado. Cero archivos fuera de res://agent/. Cero cambios a InputMap, resources o scripts de juego. capture / flow necesitan ventana. --fail-on-error tumba el run si Godot logueó ERROR. Un SCRIPT ERROR o unmapped input es FAIL. Could not find type de un class_name que ya existe: un --import y se reintenta el flow. Si vuelve, CACHE_STALE a quien llamó. Instalar (Claude Code o Cursor) npx skills add Joelnicolass/godot-studio-playtest -g -a claude-code -y (o -a cursor) copia solo skills/. Command, subagente y addon van con ./install.sh. Desinstalar: ./uninstall.sh con los mismos flags. Sesión nueva después de instalar. Los mismos archivos sirven para los dos harness: en Claude Code el orquestador lanza studio-playtester con la tool Agent, en Cursor con Task. Instalar el plugin en un juego El instalador también deja la regla del workspace en el juego: .cursor/rules/agent-kit-workspace.mdc (Cursor) y .claude/rules/agent-kit-workspace.md (Claude Code). Habilitá AgentKit. En project.godot (CI): GODOT= si el binario no está en PATH. Sin --agent=, F5 no cambia. Demo example/ es el slice de prueba (boot → carrera). example/addons/agent_kit es un enlace a addons/agent_kit/: una sola fuente. Editor de flow (opcional) http://localhost:5173 — mismo JSON que --agent=flow. Zoom con rueda o + / − en la barra. Detalle: experimental/agent-flow-editor/README.md. Layout Qué no es No es un runner de tests unitarios. No es un MCP. No es un motor de juego. No juzga look.; tools: Cursor. Human role: The original post does not say how a person stayed involved.; limitations: Prerequisites include installing the plugin via ./install.sh and ensuring the Godot binary is accessible (via PATH or GODOT= env var). The workflow requires a windowed environment for capture/flow commands. Key constraints: agents must not create scenes, use unmapped keycodes, or modify InputMap/resources. If a class_name cache error persists after --import, the agent returns CACHE_STALE. Source reliability is secondary; verify plugin compatibility with your specific Godot 4 version..
Tools
Published on Agent Work Atlas:
Overview
Playtest de Godot 4 para agentes en Claude Code o Cursor: capturar el juego de verdad, hacer clicks como un jugador, y no contaminar src/.
Workflow
Playtest de Godot 4 para agentes en Claude Code o Cursor: capturar el juego de verdad, hacer clicks como un jugador, y no contaminar src/. Repo: https://github.com/Joelnicolass/godot-studio-playtest El título vive en otro proyecto. Este repo instala el plugin, las skills, el command y el subagente. Mapa Mapa del trabajo de un slice: https://joelnicolass.github.io/godot-studio-playtest/ Fuente: docs/architecture.json. Qué problema resuelve Un agente que “prueba” el juego suele: Tirar godot -s /tmp/capture.gd y romper autoloads (class_name se compila antes). Inventar un PNG o un árbol de nodos de memoria. Meter agent_setup(), una escena test_*.tscn o spawn en el glue de producto. Acá el contrato es el contrario: el agente habla con Godot por CLI, el flow es JSON, y los helpers viven en res://agent/. Qué es cada pieza Claude Code y Cursor distinguen skill (procedimiento que el agente carga), command (prompt que invocás con /) y subagente (rol aislado, otro contexto). Este repo usa las tres, más un plugin Godot. El trabajo de ese slice está en Mapa. Flujo de playtest Quien llama entrega el F<n>: criterios, la escena (res://debug/… o la del jugador) y la acción. El playtester escribe el flow y lo corre. No construye el mundo. res://debug/ la nombró el tech lead y la armó el developer. press manda un InputEventAction: _unhandled_input con is_action_pressed es el camino del juego. Un keycode que no está en el mapa es un bug del producto. Si esa escena no está, el playtester devuelve NEED_SETUP y no la inventa. Si un class_name no está en el cache, importa una vez; si el error vuelve, devuelve CACHE_STALE. Reglas cortas: Ejercé todos los criterios del slice, no una muestra. No hay un segundo OK. Si falta res://debug/, NEED_SETUP y pará. Jugá la escena del F<n>. No la crees y no uses call() para armarla. Solo acciones ya mapeadas en el editor, o click/type del control. Sin keycodes. Sin func que mueva o fuerce el estado. Cero archivos fuera de res://agent/. Cero cambios a InputMap, resources o scripts de juego. capture / flow necesitan ventana. --fail-on-error tumba el run si Godot logueó ERROR. Un SCRIPT ERROR o unmapped input es FAIL. Could not find type de un class_name que ya existe: un --import y se reintenta el flow. Si vuelve, CACHE_STALE a quien llamó. Instalar (Claude Code o Cursor) npx skills add Joelnicolass/godot-studio-playtest -g -a claude-code -y (o -a cursor) copia solo skills/. Command, subagente y addon van con ./install.sh. Desinstalar: ./uninstall.sh con los mismos flags. Sesión nueva después de instalar. Los mismos archivos sirven para los dos harness: en Claude Code el orquestador lanza studio-playtester con la tool Agent, en Cursor con Task. Instalar el plugin en un juego El instalador también deja la regla del workspace en el juego: .cursor/rules/agent-kit-workspace.mdc (Cursor) y .claude/rules/agent-kit-workspace.md (Claude Code). Habilitá AgentKit. En project.godot (CI): GODOT= si el binario no está en PATH. Sin --agent=, F5 no cambia. Demo example/ es el slice de prueba (boot → carrera). example/addons/agent_kit es un enlace a addons/agent_kit/: una sola fuente. Editor de flow (opcional) http://localhost:5173 — mismo JSON que --agent=flow. Zoom con rueda o + / − en la barra. Detalle: experimental/agent-flow-editor/README.md. Layout Qué no es No es un runner de tests unitarios. No es un MCP. No es un motor de juego. No juzga look.
Reported result
The source does not report measured outcomes or success metrics for this workflow. It describes the intended behavior where the agent returns NEED_SETUP if debug scenes are missing and FAIL if script errors or unmapped inputs occur. A measurable acceptance check would be verifying that the agent successfully executes a sample flow (e.g., boot_smoke.json) and generates a PNG capture in res://agent/out/ without altering any files outside res://agent/.
Human role
The original post does not say how a person stayed involved.
Limitations
Prerequisites include installing the plugin via ./install.sh and ensuring the Godot binary is accessible (via PATH or GODOT= env var). The workflow requires a windowed environment for capture/flow commands. Key constraints: agents must not create scenes, use unmapped keycodes, or modify InputMap/resources. If a class_name cache error persists after --import, the agent returns CACHE_STALE. Source reliability is secondary; verify plugin compatibility with your specific Godot 4 version.
Try it
Act as a Godot 4 playtest agent using Cursor. My project is at [replaceable project path]. I have installed the godot-studio-playtest plugin. Please execute the following steps: 1. Verify the plugin is active and the res://agent/ directory exists. 2. Load the test criteria for slice [replaceable slice ID, e.g., F1] which targets scene [replaceable scene path, e.g., res://debug/boot.tscn]. 3. Check if the scene exists. If not, return NEED_SETUP immediately. 4. If the scene exists, generate a JSON flow in res://agent/flows/ that simulates player actions: [replaceable actions, e.g., press 'start' action, wait 2s, click 'menu' button]. 5. Execute the flow using the CLI command: addons/agent_kit/cli.sh [project_path] flow --flow=[flow_name].json --fail-on-error. 6. Capture the result. If Godot logs an ERROR or SCRIPT ERROR, return FAIL with the log snippet. If successful, return PASS and the path to the PNG in res://agent/out/. 7. Do not modify any files outside res://agent/. Do not create new scenes. Before running the full test, perform a dry run on the example slice 'boot_smoke.json' and show me the output for confirmation.
Source reports are not independently verified. Publication date is the catalog publication date, not the original article date.