npx claudepluginhub vp-k/godot-craftThis skill uses the workspace's default tool permissions.
게임에 자동화된 입력을 주입하고, 게임 상태를 검증하고, 스크린샷을 캡처합니다.
Selects automated and manual test layers for Godot features without overcomplicating projects. Useful when adding tests, fixing recurring scene bugs, or improving CI/export confidence.
Develop, test, build, and deploy Godot 4.x games. Includes GdUnit4 for GDScript unit tests and PlayGodot for game automation and E2E testing. Supports web/desktop exports, CI/CD pipelines, and deployment to Vercel/GitHub Pages/itch.io.
Provides persistent godot-mcp and AI Bridge workflows for Godot 4.x projects, handling .tscn/.gd/.gdshader/.tres files and live editor tasks like scene inspection, node edits, refresh/run/test loops, runtime diagnostics, hybrid validation.
Share bugs, ideas, or general feedback.
게임에 자동화된 입력을 주입하고, 게임 상태를 검증하고, 스크린샷을 캡처합니다. game-develop의 Playwright 테스트를 Godot 4에 맞게 재구현한 시스템입니다.
rules/testing-rules-godot.md — 반복 제한, 시나리오 카테고리, 페이로드 형식templates/test-scenarios.json — 기본 시나리오 정의templates/game_state_reporter.gd — 게임 상태 직렬화 Autoloadtemplates/test_choreography.gd — 입력 주입 Autoloadgodot-test-runner.sh (오케스트레이터)
├── game_state_reporter.gd (Autoload) → 상태 JSON 덤프
├── test_choreography.gd (Autoload) → 입력 주입 + assertion
└── test-scenarios.json → 시나리오 정의
실행 흐름:
1. Autoload 주입 → project.godot에 등록
2. 시나리오 JSON 추출 → 임시 파일
3. Godot 실행 (Xvfb) → 시나리오 자동 실행
4. 결과 수집 → 스크린샷 + state.json + errors
5. Autoload 제거 → 원상복구
# Godot + jq 필수
command -v godot && command -v jq
# Linux: Xvfb 필수 (스크린샷 캡처용)
command -v Xvfb
bash ${CLAUDE_PLUGIN_ROOT}/scripts/godot-test-runner.sh --check-api
결과가 ready: false이면 --inject-autoloads 사용.
테스트가 올바르게 작동하려면:
add_to_group("player")add_to_group("enemies")add_to_group("game_manager"), game_mode/score 프로퍼티move_left, move_right, move_up, move_down, jump 등 표준 이름⚠️ 이 요구사항은 Phase 2에서 godot-task가 코드를 생성할 때 자동으로 반영해야 합니다.
기본 시나리오(templates/test-scenarios.json)를 사용하거나, 게임에 맞는 커스텀 시나리오를 작성합니다.
커스텀 시나리오 예시 (슈팅 게임):
{
"scenarios": {
"shoot-enemy": {
"description": "게임 시작 후 적 방향으로 이동하며 공격",
"frames": 180,
"steps": [
{ "frame": 0, "press": ["ui_accept"] },
{ "frame": 3, "release": ["ui_accept"] },
{ "frame": 20, "press": ["move_right"] },
{ "frame": 40, "press": ["attack"] },
{ "frame": 42, "release": ["attack"] },
{ "frame": 60, "release": ["move_right"] }
],
"assertions": {
"mode": "playing",
"score": { "gte": 0 }
}
}
}
}
bash ${CLAUDE_PLUGIN_ROOT}/scripts/godot-test-runner.sh \
--inject-autoloads \
--scenario idle \
--output-dir test_output
bash ${CLAUDE_PLUGIN_ROOT}/scripts/godot-test-runner.sh \
--inject-autoloads \
--scenarios idle,start-game,basic-movement \
--output-dir test_output
bash ${CLAUDE_PLUGIN_ROOT}/scripts/godot-test-runner.sh \
--inject-autoloads \
--scenarios-file custom-scenarios.json \
--scenarios shoot-enemy,dodge-test
반드시 Read 도구로 스크린샷 이미지 파일을 열어서 시각적으로 확인합니다.
Read test_output/shot-idle.png
Read test_output/shot-start-game.png
Read test_output/shot-basic-movement.png
Read test_output/state-start-game.json
Read test_output/errors-{scenario}.json
Read test_output/batch-summary.json
passed/total 비율 확인에러 또는 assertion 실패 시:
Implementation Phase에서 매 태스크 완료 후:
compile-check 통과 확인basic-movement)VQA Phase 시작 전: