# 스카이 로비 (미니 리프트) — 프로토타입 구현 계획

> 기획서: [mini-lifts-design.md](./mini-lifts-design.md) · gist: https://git.linecorp.com/gist/00fa220476ce71c8ef0571cb4d36814f
> 작성일: 2026-08-14 · 목표: 4~5일 내 플레이 가능한 프로토

---

## 0. 기술 스택 결정: HTML5 Canvas 단일 파일 (Godot 보류)

| 기준 | Canvas | Godot |
|---|---|---|
| 공모전 투표(150명, 링크 즉시 실행) | ◎ 수 KB, 즉시 로드 | △ wasm 30MB+, 모바일 로딩 느림, iOS Safari 이슈 |
| 이 게임의 렌더링 요구 | 사각형+색점+선뿐 → 충분 | 엔진 기능(물리/씬) 쓸 곳 없음 |
| 기존 인프라 재사용 | ◎ inch-out 등과 동일 스택, CF Pages 배포 검증됨 | 새 파이프라인 필요 |
| 네이티브 앱 전환 | △ | ◎ (프로토 단계엔 불필요) |

**결정: canvas. Godot는 프로토 검증 후 네이티브 전환 시점에 재검토.**

- 산출물: `sky-lobby/index.html` 단일 파일 (의존성 0)
- 세로 화면 기준, 터치+마우스 겸용
- 배포: Cloudflare Pages (기존 계정/경로)

---

## 1. 마일스톤

### M1 — 정적 빌딩 + 샤프트 편집 (1일)

- 그리드: 30층 × 6열. 층 = 행. 주거층(집 아이콘+색) / 시설층(색 사각형) 렌더.
- 샤프트 편집:
  - 세로 드래그 → 설치 (층 단위로 "샤프트 조각" 차감)
  - 샤프트 끝단 드래그 → 연장
  - 길게 누르기 → 철거 + 조각 전액 환급
  - 샤프트 탭 → 층별 정차 토글 UI
- 데이터 모델:
  ```js
  shaft = { col, lo, hi, stops: Set<floor>, car: { y, dir, load: Passenger[] } }
  floor = { type: 'home'|'dest'|'plain', color, queue: Passenger[] }
  passenger = { color, from, to, wait, plan: [shaftId, transferFloor?] }
  ```
- 완료 조건: 샤프트 3개 설치/철거/토글이 터치로 스트레스 없이 됨.

### M2 — 승객 시뮬레이션 (1.5일) ★ 최대 리스크 구간

- 스폰: 주거층에서 색점 생성, 목적지 = 같은 색 시설층 중 하나. 1층 로비 외부 유입.
- 배차 로직: 자기 층에 정차하는 샤프트들 중 **예상 도착 시간 최소** 선택.
  - 예상 시간 = 카 현재 위치→내 층 시간 + 대기열 앞사람 수 반영 + 내 층→목적지 시간
  - 직행 없으면 환승 1회 BFS (샤프트를 노드, 공유 정차층을 엣지로)
- 카 운행: collective control — 진행 방향의 콜(승객 대기/하차 요청) 순서대로 정차. 정원 6.
- 인내 게이지(승객 머리 위) + 층 대기열 카운트 표시.
- **납득 가능성 장치: 승객 탭 → "왜 이 줄에 섰는지"(예상 시간) 툴팁.**
- 완료 조건: 완행 1개+급행 1개 구성에서 승객 흐름이 눈으로 납득됨.

### M3 — 게임 루프 (1일)

- 게임오버: 어느 층이든 대기열 한도(8명) 초과 45초 지속. 경고 타이머 시각화.
- 점수: 도착 승객 수 + 주간 생존 보너스.
- 주간 사이클: 조각 10~14층분 지급 + 2택 보상 — 프로토는 **급행 카드 / 스카이로비** 2종만.
- 증축: 1~2주마다 위로 2~4층 + 새 색. **첫 증축은 90초 내** (초반 템포).
- 일시정지 중 편집 가능, 배속(1x/2x).

### M4 — 밸런스 + 폴리시 (1일)

- 스폰 곡선 튜닝: 목표 = 무전략 5분 붕괴 / 좋은 설계 10분+ 생존.
- 실패 화면: 빌딩 전체 노선도 한 장 + 점수 (공유용).
- 엘리베이터 "딩" 사운드(음계), 색약 모드(색+도형 병기).
- CF Pages 배포 + 모바일 실기기 테스트.

---

## 2. 검증 게이트 (M2 종료 시점)

아래 미달이면 **M3 진행 중단, 메커니즘 재설계**:

1. 정차층 토글로 급행 만들었을 때 "뚫린다"는 아하 순간이 나오는가
2. 붕괴가 조용히, 그러나 납득 가능하게 오는가 (억울한 죽음 금지)
3. 승객 배차가 바보처럼 보이지 않는가

---

## 3. 프로토 제외 범위 (검증 후 추가)

제2타워/스카이브릿지, 에스컬레이터, 더블데커, 일일 챌린지/리더보드, 러시 이벤트(점심 폭주), 밤낮 사이클.

---

## 4. 폴더/배포

- 폴더: `playground/sky-lobby/` (단일 `index.html`)
- 배포: Cloudflare Pages — 기존 게임 3종과 동일 계정/절차 (cloudflare-deploy 메모 참조)
