docs: CLAUDE.md 및 감사 보고서 업데이트
- CLAUDE.md 아키텍처 문서 최신화 - 감사 보고서 수정 사항 반영
This commit is contained in:
80
CLAUDE.md
80
CLAUDE.md
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
|
||||
|
||||
## 프로젝트 개요
|
||||
|
||||
Askii Never Die는 Progress Quest 6.4 (Delphi 원본)를 Flutter로 100% 동일하게 복제하는 오프라인 싱글플레이어 RPG입니다. 네트워크 기능은 모두 제외되며, 원본 알고리즘과 데이터를 그대로 유지해야 합니다.
|
||||
Askii Never Die는 Progress Quest 6.4의 핵심 메커니즘을 기반으로, 독자적 세계관("디지털 판타지")과 확장된 시스템으로 재구성한 오프라인 싱글플레이어 방치형 RPG입니다. 네트워크 기능은 제외됩니다.
|
||||
|
||||
## 빌드 및 실행
|
||||
|
||||
@@ -27,29 +27,53 @@ flutter test
|
||||
|
||||
```
|
||||
lib/
|
||||
├── main.dart # 앱 진입점
|
||||
├── data/pq_config_data.dart # PQ 정적 데이터 (Config.dfm 추출)
|
||||
├── main.dart # 앱 진입점
|
||||
├── data/ # 정적 데이터 (Config.dfm 추출 + 확장)
|
||||
│ ├── pq_config_data.dart # PQ 원본 정적 데이터
|
||||
│ ├── class_data.dart # 직업 데이터
|
||||
│ ├── race_data.dart # 종족 데이터
|
||||
│ ├── skill_data.dart # 스킬 데이터
|
||||
│ ├── potion_data.dart # 포션 데이터
|
||||
│ ├── story_data.dart # 스토리 데이터
|
||||
│ └── game_text_l10n.dart # 게임 텍스트 번역
|
||||
├── l10n/ # 앱 UI 다국어 리소스 (arb)
|
||||
└── src/
|
||||
├── app.dart # MaterialApp 설정
|
||||
├── app.dart # MaterialApp 설정
|
||||
├── core/
|
||||
│ ├── engine/ # 게임 루프 및 진행 로직
|
||||
│ │ ├── progress_loop.dart # 타이머 기반 메인 루프 (원본 200ms)
|
||||
│ │ ├── progress_service.dart # 틱 처리, 경험치/레벨업 로직
|
||||
│ │ ├── game_mutations.dart # 상태 변경 함수
|
||||
│ │ └── reward_service.dart # 보상 처리
|
||||
│ ├── model/
|
||||
│ │ ├── game_state.dart # 핵심 상태: Traits, Stats, Inventory, Equipment, SpellBook, ProgressState, QueueState
|
||||
│ │ ├── pq_config.dart # Config 데이터 접근
|
||||
│ │ ├── equipment_slot.dart # 장비 슬롯 정의
|
||||
│ │ └── save_data.dart # 저장 데이터 구조
|
||||
│ ├── storage/ # 세이브 파일 처리
|
||||
│ └── util/
|
||||
│ ├── deterministic_random.dart # 결정론적 RNG (재현 가능)
|
||||
│ ├── pq_logic.dart # 원본 로직 포팅 (odds, randSign 등)
|
||||
│ └── roman.dart # 로마 숫자 변환
|
||||
└── features/
|
||||
├── front/front_screen.dart # 임시 프론트 화면
|
||||
└── game/game_session_controller.dart # 게임 세션 관리
|
||||
│ ├── engine/ # 게임 루프 및 진행 로직
|
||||
│ │ ├── progress_loop.dart # 타이머 기반 메인 루프
|
||||
│ │ ├── progress_service.dart # 틱 처리, 경험치/레벨업 로직
|
||||
│ │ ├── game_mutations.dart # 상태 변경 함수
|
||||
│ │ ├── reward_service.dart # 보상 처리
|
||||
│ │ ├── combat_calculator.dart # 전투 계산
|
||||
│ │ ├── combat_tick_service.dart # 전투 틱 처리
|
||||
│ │ ├── arena_service.dart # 아레나 시스템
|
||||
│ │ ├── skill_service.dart # 스킬 시스템
|
||||
│ │ ├── item_service.dart # 아이템 처리
|
||||
│ │ ├── potion_service.dart # 포션 시스템
|
||||
│ │ ├── shop_service.dart # 상점 시스템
|
||||
│ │ ├── story_service.dart # 스토리 진행
|
||||
│ │ └── ... # 기타 서비스
|
||||
│ ├── model/ # 게임 상태 및 데이터 모델
|
||||
│ ├── animation/ # ASCII 애니메이션 데이터/렌더링
|
||||
│ ├── audio/ # 오디오 서비스
|
||||
│ ├── storage/ # 세이브/설정 저장소
|
||||
│ ├── notification/ # 알림 서비스
|
||||
│ ├── constants/ # 상수 정의
|
||||
│ ├── l10n/ # 게임 데이터 번역 유틸
|
||||
│ └── util/ # 유틸리티 (RNG, 로직 헬퍼 등)
|
||||
├── features/
|
||||
│ ├── front/ # 타이틀/세이브 선택 화면
|
||||
│ ├── new_character/ # 캐릭터 생성 화면
|
||||
│ ├── game/ # 게임 진행 화면 (메인)
|
||||
│ │ ├── controllers/ # 전투 로그, 오디오 컨트롤러
|
||||
│ │ ├── managers/ # 통계, 부활, 속도 부스트 등
|
||||
│ │ ├── pages/ # 탭별 페이지 (장비, 인벤토리, 퀘스트 등)
|
||||
│ │ └── widgets/ # UI 위젯
|
||||
│ ├── arena/ # 아레나 전투 화면
|
||||
│ ├── hall_of_fame/ # 명예의 전당
|
||||
│ └── settings/ # 설정 화면
|
||||
└── shared/ # 공통 테마/위젯
|
||||
|
||||
example/pq/ # Delphi 원본 소스 (참조용, 빌드 대상 아님)
|
||||
test/ # 단위/위젯 테스트
|
||||
@@ -69,10 +93,9 @@ test/ # 단위/위젯 테스트
|
||||
|
||||
## 핵심 규칙
|
||||
|
||||
### 원본 충실도
|
||||
- `example/pq/` 내 Delphi 소스의 알고리즘/데이터를 100% 동일하게 포팅
|
||||
- 원본 로직 변경 필요 시 반드시 사용자 승인 필요
|
||||
- 새로운 기능, 값, 처리 로직 추가 금지 (디버깅 로그 예외)
|
||||
### 원본 참조 정책
|
||||
- `example/pq/`는 참조용으로 유지
|
||||
- 원본 알고리즘은 참고하되 독자적 확장/수정 허용
|
||||
|
||||
### 데이터 관리
|
||||
- 정적 데이터(몬스터, 아이템, 주문 등)는 `Config.dfm`에서 추출하여 JSON/Dart const로 관리
|
||||
@@ -87,11 +110,13 @@ test/ # 단위/위젯 테스트
|
||||
- SRP(Single Responsibility Principle) 준수
|
||||
|
||||
### 화면 구성
|
||||
- 2개 화면만 사용: 캐릭터 생성 화면, 게임 진행 화면
|
||||
- 주요 화면: 프론트, 캐릭터 생성, 게임 진행, 아레나, 명예의 전당, 설정
|
||||
- 화면 내 요소는 위젯 단위로 분리
|
||||
|
||||
## 원본 소스 참조 (example/pq/)
|
||||
|
||||
> 참고용으로만 사용. 원본 로직을 그대로 따를 의무는 없음.
|
||||
|
||||
| 파일 | 핵심 함수/라인 | 역할 |
|
||||
|------|----------------|------|
|
||||
| `Main.pas:523-1040` | `MonsterTask` | 전투/전리품/레벨업 |
|
||||
@@ -105,7 +130,6 @@ test/ # 단위/위젯 테스트
|
||||
- `pubspec.yaml` 의존성 변경
|
||||
- 플랫폼 빌드 설정 (Android/iOS/desktop)
|
||||
- 네트워크 접근 도입
|
||||
- 원본 데이터/알고리즘 수정
|
||||
- 대규모 파일 삭제 또는 구조 변경
|
||||
|
||||
## 커밋 규칙
|
||||
|
||||
Reference in New Issue
Block a user