11# rtsgame — BAR Minigame Generator (Simplified)
22
3- ` minigame_generator_v4 ` 의 multi-agent 파이프라인을 ** 단일 LLM 에이전트** 로 축소하고,
4- ** React + Vite** 프론트엔드(프롬프트 입력 + 결과 보기)를 붙인 독립 프로젝트.
3+
54
65텍스트 프롬프트 → Beyond All Reason(BAR) 미니게임 config(JSON) 생성.
76
109## 아키텍처
1110
1211```
13- ┌─────────────────┐ POST /generate ┌──────────────────────┐
14- │ React + Vite │ ───────────────────► │ FastAPI backend │
15- │ (frontend) │ ◄─────────────────── │ 단일 LLM 에이전트 │
16- │ 프롬프트 입력 │ config JSON │ generator.py │
17- │ 결과/시각화 보기 │ GET /catalog │ + data 카탈로그 │
18- └─────────────────┘ └──────────────────────┘
12+ ┌────────────────────────┐ ┌────────────────────────┐
13+ │ Frontend │ POST /generate ─────► │ Backend │
14+ │ React + Vite │ GET /catalog ─────► │ FastAPI │
15+ │ │ ◄───── config JSON │ │
16+ │ PromptInput / MiniMap │ │ pipeline.py │
17+ │ SimPlayback / JsonView │ │ (DB match -> script) │
18+ └────────────────────────┘ └────────────────────────┘
1919```
2020
2121> 프론트는 React+Vite이지만 생성 로직이 Python이라, 둘을 잇는 얇은 FastAPI 백엔드를 둔다.
@@ -86,7 +86,7 @@ rtsgame/
8686
8787---
8888
89- ## 구현 방식 (✅ 구현 완료)
89+ ## 구현 방식
9090
9191핵심: ** GDD를 새로 생성하지 않고** , 기존 DB에서 비슷한 시나리오를 찾아 script만 만든다.
9292** rule(gadget)도 새로 만들지 않고 DB의 검증된 것만 사용** 한다.
@@ -96,11 +96,6 @@ rtsgame/
96962 . ** ` load_existing_mode(name) ` ** — 시나리오의 ` specification ` + 참조 rule로 gdd 구성. rule은 모두 ` action: existing ` , ` validated: True ` (기존 검증본).
97973 . ** ` ScriptDeveloperAgent.run() ` ** (` script_builder.py ` ) — 맵선택 → 유닛배치 → rule config → end_condition → 조립. ** analyst/verify 루프 제거** 로 ` game_simulation ` (BAR 엔진)·` psutil ` 의존성을 런타임에서 완전히 들어냄.
9898
99- ### 제거된 것 (v4 대비 단순화)
100- - Designer의 ** 새 GDD 생성** ·대화·intent 분석 전체
101- - ** RuleDeveloper** 전체 (rule은 DB에서만)
102- - ** Analyst** 검증/refine 루프 + 그것이 끌고오던 게임엔진 시뮬레이터 의존성
103- - agent_manager 오케스트레이션, visualize_logs
10499
105100### API 서버 (` backend/app.py ` )
106101- ` POST /generate {query} ` → ` { scenario, config, raw } ` (config = 생성된 시나리오 JSON).
@@ -115,7 +110,7 @@ rtsgame/
115110
116111---
117112
118- ## 실행 방법 (예정)
113+ ## 실행 방법
119114
120115``` bash
121116# 백엔드
@@ -132,18 +127,9 @@ npm run dev # http://localhost:5173
132127
133128---
134129
135- ## 결정 사항
136130
137- - ** LLM 모델** : ` gpt-5.2 ` 유지 (` common.get_client ` ).
138- - ** 난이도** : ` normal ` 단일 config 생성.
139- - ** MiniMap 시각화** : 포함.
140- - ** rule** : DB의 기존 검증된 rule만 사용 (새 rule 생성 안 함).
141131
142- ## 검증 상태
143132
144- - ✅ 백엔드 import·그래프 빌드 검증 (analyst/game_simulation 의존성 런타임 제거 확인).
145- - ✅ 프론트엔드 ` npm run build ` 통과.
146- - ⚠️ ** 실제 LLM 생성은 아직 미실행** — ` backend/.env ` 에 ` OPENAI_API_KEY ` 입력 후 한 번 돌려서 end-to-end 확인 필요.
147133
148134---
149135
@@ -216,11 +202,4 @@ feature/mini-map ─┘ (통합/검증) (릴리스)
216202- ** 기획서:** 프로젝트 목표, 단순화 배경(원본 multi-agent 구조 → 단일 흐름), config(JSON) 구조 및 좌표계(1타일 = 512px) 등 설계 정보를 정리합니다.
217203- ** Agent 개발 workflow:** ` ScriptDeveloperAgent ` 의 LangGraph 그래프 흐름(` select_map → place_units → generate_rule_config → get_condition → assemble_draft ` )과 DB(scenario·rule·map·unit) 활용 방식을 문서화합니다.
218204
219- ### PR 흐름
220205
221- 1 . ** feature → dev PR:** 기능 개발이 완료되면 ` feature/* ` 에서 ` dev ` 로 PR을 생성합니다.
222- - PR 제목/본문에 작업 내용과 관련 이슈 번호를 명시합니다.
223- - 최소 1인 이상의 ** 코드 리뷰 승인** 후에만 병합합니다.
224- - 병합 방식은 커밋 이력을 정리하기 위해 ** Squash and merge** 를 기본으로 합니다.
225- 2 . ** 리뷰/머지 규칙:** 리뷰어는 동작 검증과 코드 컨벤션을 확인하고, 변경 요청(Request changes) 사항이 해결되면 승인합니다. 병합 후 ` feature/* ` 브랜치는 삭제합니다.
226- 3 . ** dev → main 릴리스:** ` dev ` 에 누적된 기능이 검증되면 ` dev → main ` 으로 PR을 생성하여 릴리스합니다. 릴리스 시점에는 버전 태그를 부여하여 배포 단위를 관리합니다.
0 commit comments