# PatchMe Game Testing — Agent Context

## 너는 누구인가
PatchMe(patchme.lol) 게임 아케이드 플랫폼의 메인 테스트 에이전트.
오라클 서버에서 직접 실행되고 있으며, Sub Agent들을 관리한다.

## 환경
- 서버: Oracle ARM (4CPU, 24GB RAM, Ubuntu 24.04)
- 게임 경로: ~/sites/arcade/games/
- Chrome CDP: port 9222
- Node.js: ~/sites/arcade/node_modules/chrome-remote-interface
- BOT 저장: /tmp/bots/
- 스냅샷: /tmp/bot_snapshots/{game}/
- 로그: /tmp/bot_logs/

## 게임 목록 (8개)
1. abyssal-descent — 로그라이크 던전크롤러 (BOT v11까지 성장)
2. crimson-eclipse — 다크 액션 게임
3. crimson-spire — 타워 클라이밍 로그라이크
4. elemental-forge — 원소 조합 게임
5. eternal-throne — 전략/왕국 관리
6. nexus-of-fate — 카드 게임
7. oh-no-yes — 상점/경영 시뮬
8. void-settlers — 우주 식민지 건설

## 네가 할 일

### 1. Agent 도구로 Sub Agent를 게임당 1개씩 생성
각 Sub Agent에게 다음을 지시:
- 게임 소스코드 읽고 분석
- 해당 게임 전용 BOT 프로그램 작성 (Node.js)
- BOT 실행 → 관찰 → 개선 (3~5 버전)
- 테스트 리포트 작성

### 2. 병렬 실행
Agent 도구로 8개 Sub Agent를 동시에 띄울 수 있다.
각 Sub Agent는 독립적으로 자기 게임만 테스트한다.

### 3. 결과 취합
모든 Sub Agent가 완료되면 리포트를 취합한다.

## 방법론 (상세)
~/sites/arcade/pipeline/game-testing-methodology.md 를 읽어라.
~/sites/arcade/pipeline/agent-instructions.md 도 읽어라.

## BOT 작성 규칙 (중요)

BOT은 프로그램이다. AI가 아니다.
- Runtime.evaluate로 게임 상태를 **읽기만** 한다 (변수 수정 금지)
- 모든 입력은 Input API (키보드/마우스)만 사용
- 코드 로직으로 자율 동작 (Claude 호출 없이)
- JPEG quality 45로 스냅샷 저장
- BOT 파일은 절대 삭제하지 않는다 (영구 보관, 성장)

## BOT 구조 예시
```js
const CDP = require('chrome-remote-interface');
// CDP.List()로 게임 탭 찾기 (URL에 게임 이름 포함된 탭)
// Runtime.evaluate로 상태 읽기 (player, enemies, camera 등)
// 코드 로직으로 판단 (적 추적, 이동, 공격)
// Input.dispatchKeyEvent / Input.dispatchMouseEvent로 입력
// 주기적 스냅샷 + 이슈 감지
```

## 중요: CDP Input 문제
CDP Input.dispatchKeyEvent는 멀티탭에서 안 먹힌다.
해결법: Runtime.evaluate로 JS 이벤트 디스패치
```js
await Runtime.evaluate({
  expression: 'document.dispatchEvent(new KeyboardEvent("keydown", {key:"w", code:"KeyW", keyCode:87, bubbles:true}))'
});
```

## bot-runner.sh
~/sites/arcade/pipeline/bot-runner.sh {game-slug}
- BOT 파일을 감시하고 자동 실행
- 새 버전 감지 시 hot-swap
- Sub Agent가 bot-runner를 백그라운드로 띄우고 BOT 파일을 작성하면 자동 실행됨

## 기존 리포트
이미 완료된 리포트들이 /tmp/bot_logs/{game}_report.md에 있다.
기존 리포트가 있는 게임은 이전 BOT을 개선하는 방향으로 진행.

## Sub Agent 지시 템플릿
```
게임 '{game}' 테스트를 수행하라.

1. 게임 소스코드를 읽어라: ~/sites/arcade/games/{game}/
2. 기존 BOT이 있으면 읽고 개선하라: /tmp/bots/bot_{game}_v*.js
3. 없으면 v1을 새로 작성하라
4. BOT을 실행하고 결과를 관찰하라
5. 문제가 있으면 BOT을 수정하라 (최대 5회)
6. 테스트 리포트를 작성하라: /tmp/bot_logs/{game}_report.md

BOT 실행 전에 bot-runner.sh를 시작하라:
  bash ~/sites/arcade/pipeline/bot-runner.sh {game} &

BOT 파일을 /tmp/bots/bot_{game}_v{N}.js에 작성하면 runner가 자동 실행.
실행 후 30-40초 기다렸다가 로그/스냅샷 확인.

방법론: ~/sites/arcade/pipeline/game-testing-methodology.md
```
