# Coop Puzzle Raid — 사내 공모전 프로젝트

작성 2026-08-08. 협동 퍼즐 레이드 게임 후보 룰 3종 병렬 프로토타이핑.
각 하위 폴더는 **독립 세션에서 진행 가능**하도록 자급자족 문서(CONCEPT.md) 포함.

## 공모전 조건 (확정 사실)

- 사내 직원 **약 150명이 1인 2표** 투표로 선정. 심사위원·발표 세션 없음
- 공개 후 **며칠~몇 주 플레이 기간** 뒤 투표 → 첫판 임팩트 + 리텐션 둘 다 필요
- 투입 가능 기간: **2달 이상** (본업 병행 실질 기준)
- 플레이 환경: **모바일 웹 + PC 브라우저 둘 다 필수** (세로 모바일 기준 설계 + PC 키보드/마우스 대응)
- 전략: 심사 기준 충족이 아니라 **동료 표심** — 같이 플레이하게 만들면 표로 직결

## 확정 컨셉

**협동 퍼즐 레이드**: 2인이 퍼즐로 보스를 잡는 협동 RPG.
- 고전 검증 루프 차용, 단 **캐릭터/IP/아트는 100% 오리지널** (IP 리스크 제로 원칙)
- 솔로 모드(AI 동료) 필수 — 혼자 열어본 직원도 재밌어야 함
- 성장 메타(장비/스킬)는 얇게 — 리텐션용
- 스택: CF Pages + Worker/Durable Objects (기존 3종 게임에서 검증, [메모리: cloudflare-deploy] 참조)

## 후보 룰 3종 — 1주 타임박스 프로토타입

| 폴더 | 한 문장 룰 | 근거 |
|---|---|---|
| [a-merge-raid](a-merge-raid/CONCEPT.md) | 번갈아 떨어뜨려 같은 것끼리 합치면 보스가 아파한다 | 수박게임 검증 + 머지 매출 +89% + 공유보드 협동은 빈 자리 |
| [b-sort-raid](b-sort-raid/CONCEPT.md) | 색을 정렬해 완성하면 그 색 마법이 날아간다. 막히면 파트너 튜브에 부어라 | 정렬 퍼즐 5.6배 성장, `../sort-prototypes` 자산 재사용 |
| [c-duo-drop](c-duo-drop/CONCEPT.md) | 한 명은 옮기고, 한 명은 돌린다 | Magic Maze식 역할 분담, 구경 재미 = 사내 바이럴 |

탈락: 비대칭 정보(Keep Talking류 — 솔로 모드 불가, 원격 직원 배제).
폴백: 색 충전 릴레이(매치3 베이스) — 셋 다 실패 시 부활.

## 프로토타입 공통 사양 (전 폴더 적용)

`../sort-prototypes` v2 사양 계승:

1. **자급자족 단일 `index.html`** — 빌드 불필요, `open index.html`로 즉시 플레이
2. **아트 금지** — 도형+색만. 재미는 룰에서 나와야 함. 아트로 가리면 판정 오염
3. **협동 시뮬레이션** — 프로토 단계는 서버 없음. AI 파트너(휴리스틱) + 같은 기기 로컬 2인 중 CONCEPT.md 지정 방식
4. **모바일 탭 + 데스크톱 클릭/키보드** 둘 다 동작
5. **킬 지표 계측기** — localStorage 카운터, 콘솔 `dumpMetrics()`로 판정 룰과 함께 출력
6. **동결 WebView 견고성** — rAF 정지 환경 폴백 (사내 메신저 인앱 브라우저 대비)

## 판정 프로세스 (2026-08-08 수정 — 테스터 확보 불가, 사실상 1인 개발)

1. **1차 자가판정**: 본인 플레이로 명백한 노잼 컷
2. **2차 조용한 베타 계측**: 생존안을 가칭+도형 그대로 배포(본편 이름·아트와 무관하게 → 첫인상 보존), `dumpMetrics()` 지표로 판정 — 완주율·자발 재시작·판 길이. `../sort-prototypes/MARKET-EVIDENCE.md`의 포털 실측 전략과 동일 원리
3. **C안(duo-drop)**: 2026-08-08 재승격 — A·B와 병행 진행. 단 판정은 CONCEPT.md의 "1인 판정 프로토콜"(양손 2역할 자가테스트 + 베타 계측)로, 페어 재미 확정은 본편 채택 전 실제 2인 테스트 1회 필수. 보스 1(메인) 슬롯은 A·B 생존안 우선, C는 보스 2·3 슬롯 후보
3. 각 CONCEPT.md의 킬 판정 룰 적용
4. **승자 규칙 (2026-08-08 확정): 3인 3색 레이드** — 살아남은 룰들을 "보스마다 다른 퍼즐"로 통합
   - 아키텍처 제약: 퍼즐은 교체 가능한 모듈. 공통 셸(보스전 프레임·HP/데미지 이벤트·성장·멀티)과 퍼즐 코어를 인터페이스로 분리
   - **컷라인 원칙**: 최고 룰 1개 = 보스 1로 먼저 "단독으로도 출품 가능한 완성" 달성 → 이후 보스 2·3 추가. 어느 시점에 잘라도 게임 성립
   - 킬 판정 통과 못 한 룰은 표 수 욕심으로 부활 금지

## 멀티 구조 (2026-08-08 확정 — 전부 하되 이 순서, 앞 단계 완성 전 다음 착수 금지)

1. **솔로 + AI 동료** — 기본 동선. 처음 연 사람 즉시 플레이, 서버 죽어도 생존
2. **초대 링크 2인 실시간** — 로비·매칭 화면 없음. 링크 = 방(DO 하나). 링크 공유 자체가 바이럴
3. **주간 월드보스 (비동기)** — 전사 공유 HP를 모두가 깎음. 동시접속 불필요, 리텐션 장치, 구현 쌈 (DO 카운터). 투표 기간 커뮤니티 이벤트로 활용
4. **랜덤 매칭** — 최후순위. "대기 3초 초과 시 AI 즉시 대타" 폴백 구현 가능할 때만. 빈 로비 화면은 절대 금지

## 플랫폼 통합 (게임 허브 — 필수 준수)

원본 스펙: `/Users/al02509941/Downloads/gamhub_data_ranking_prompt.txt` (본 개발 시작 시 폴더로 복사할 것)

- 유저: `window.__HUB_USER__` (id/username/name). **0.1~0.5초 지연 주입** → 재시도 렌더 필수, 빈 문자열 대비 `||` 사용. 로컬/미리보기엔 없음 → Guest 폴백 필수
- 저장: `await window.HubGame?.save/load(키, 값)` + localStorage 폴백
- 랭킹: `submitScore(키, 숫자)` — 최고점만 제출(낮은 점수 호출 금지), 합성점수 패턴(`stage*1000000+score`). 조회 `getLeaderboard(키, n)`
- 배포: HTML 진입 라우트만 Worker 적용, 정적 자산은 `/assets/` 등으로 우회. 공유 링크는 문서 URL로만
- 주의: submitScore가 클라 호출 → 점수 조작 완전 방어는 불가. 조작 유인 낮추기: 랭킹 축을 단순 점수보다 검증 쉬운 값(주간 보스 기여도 등)으로 설계 검토

## 아트 방향 (2026-08-08 확정)

- **완전 신규 오리지널 캐릭터** (기존 게임 캐릭터 유니버스 안 씀)
- 제작: remote-ai 에셋 생성 파이프라인 활용. 룰 확정 후 캐릭터 시트(주인공 2인+보스들) 우선 제작
- 프로토 단계는 아트 금지 원칙 유지 (도형만)

## 진행 로그

- 2026-08-08: 컨셉 확정(협동 퍼즐 레이드), 후보 3종 선별, 폴더 세팅, 멀티 4단계·3인 3색 승자 규칙·허브 통합·신규 캐릭터 확정
- 2026-08-08: A·B·C 프로토타입 3종 각각 별도 세션에서 병행 착수
- 2026-08-08: **b-sort-raid 프로토 v1 완성** — 단일 index.html(도형만), AI 파트너 + 같은 기기 2P 토글, 잠금 색·턴 카운터 공격·협동 붓기 쿨다운, `dumpMetrics()` 킬 지표 4종. 상호보완 배분(색당 4유닛 = 자기 쪽 3 + 상대 쪽 1)으로 협동 필수 구조 보장. `test-sim.mjs` 헤드리스 검증(30시드 격파 30/30, 판당 협동 붓기 10.4회) + jsdom 스모크 통과. 자가판정 대기
