godot-testing
Godot 게임 인터랙티브 테스트 — 입력 주입, 상태 검증, 스크린샷 캡처를 자동화하는 테스트 스킬
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Godot 게임 인터랙티브 테스트 — 입력 주입, 상태 검증, 스크린샷 캡처를 자동화하는 테스트 스킬
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Phase 0 — 게임 콘셉트 확장, 비주얼 타겟 생성, PLAN/STRUCTURE/ASSETS.md 작성, 사용자 승인
완성된 Godot 게임을 UX 디자이너, 게임 디자이너, 기술 리뷰어(Godot 전문) 3관점으로 병렬 평가한다.
단일 태스크 실행기 — GDScript 코드 작성, 씬 수정, 사운드 연결, Godot 4 함정 회피
Phase 1 — 프로젝트 스캐폴딩 + 스크립트 스텁 + 씬 생성 + 에셋 생성 (이미지/사운드/음악)
Phase 2 — PLAN.md 태스크를 순서대로 구현. godot-task 스킬로 각 태스크 실행, compile-check + 스크린샷
Phase 4 — 디버그 코드 제거, 코드 정리, 게임플레이 비디오 캡처
استنادا إلى تصنيف SOC المهني
| name | godot-testing |
| description | Godot 게임 인터랙티브 테스트 — 입력 주입, 상태 검증, 스크린샷 캡처를 자동화하는 테스트 스킬 |
게임에 자동화된 입력을 주입하고, 게임 상태를 검증하고, 스크린샷을 캡처합니다. 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 시작 전: