1.1 엔진 모듈 구조
게임 엔진은 8개 핵심 모듈로 구성되며, 각 모듈은 독립적으로 테스트 가능하다.
🔄
TurnEngine
턴 루프 관리
전체 흐름 오케스트레이션
전체 흐름 오케스트레이션
📜
QuestEngine
퀘스트 활성화/비활성화
조건 평가·결과 처리
조건 평가·결과 처리
🧠
AdvisorAI
참모 제안 생성
능력치→퀘스트 매핑
능력치→퀘스트 매핑
📖
NarrationEngine
소설체 묘사 생성
300~500단어
300~500단어
🌍
WorldSim
NPC 세력 시뮬레이션
월드 상태 변화
월드 상태 변화
🗺️
MissionTree
325개 미션 관리
분기·플래그 처리
분기·플래그 처리
💾
SaveSystem
자동/수동 저장
상태 직렬화
상태 직렬화
🤖
AIRouter
듀얼 모델 라우팅
경량/고급 분배
경량/고급 분배
1.2 계층 구조
┌─────────────────────────────────────────────────────┐
│ UI Layer │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 내레이션 │ │ 선택지UI │ │ 상태패널/지도 │ │
│ └─────┬────┘ └────┬─────┘ └────────┬─────────┘ │
├────────┼────────────┼─────────────────┼─────────────┤
│ └────────────┼─────────────────┘ │
│ ▼ │
│ ┌──────────────┐ │
│ │ TurnEngine │ ← 전체 오케스트레이터 │
│ └──────┬───────┘ │
│ │ │
│ ┌───────────────┼───────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌───────────┐ ┌────────────┐ │
│ │ Quest │ │ Advisor │ │ Narration │ │
│ │ Engine │ │ AI │ │ Engine │ │
│ └────┬────┘ └─────┬─────┘ └─────┬──────┘ │
│ │ │ │ │
│ └─────────────┼──────────────┘ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ GameState │ │
│ │ (World · Characters · Flags)│ │
│ └──────────────┬───────────────┘ │
│ │ │
│ ┌─────────────┼──────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────┐ ┌──────────┐ ┌──────────┐ │
│ │WorldSim │ │MissionTree│ │SaveSystem│ │
│ └─────────┘ └──────────┘ └──────────┘ │
│ │
│ ┌──────────┐ │
│ │ AIRouter │ ← 모든 AI 호출 경유 │
│ └──────────┘ │
│ │ │ │
│ ┌─────┘ └─────┐ │
│ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ │
│ │경량 모델 │ │고급 모델 │ │
│ │(Flash등) │ │(Opus 등) │ │
│ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────┘
1.3 기술 스택
| 계층 | 기술 | 비고 |
|---|---|---|
| 프론트엔드 | Vanilla JS + HTML/CSS | 프레임워크 없음 (의존성 최소화) |
| 상태 관리 | 순수 JS 객체 + 이벤트 버스 | 불변 상태 패턴 |
| API 프록시 | Cloudflare Workers | AI API 키 보호, 토큰 관리 |
| 호스팅 | Cloudflare Pages | 정적 파일 서빙 |
| 저장 | localStorage / sessionStorage | Phase 2에서 서버 확장 |
| AI 모델 | Gemini Flash, GPT-4o-mini, Claude Haiku (경량) Claude Opus, GPT-4.5, Gemini Ultra (고급) | 듀얼 모델 라우팅 |