trpg_claude / info.md
haepada's picture
Upload 17 files
b7d75f3 verified
# 로컬 TRPG 메이커 프로젝트 구조
이제까지 작성된 코드를 기반으로 전체 프로젝트의 구조를 정리하겠습니다. 각 파일과 함수들의 관계와 역할을 체계적으로 설명하겠습니다.
## 프로젝트 폴더 구조
```
📂 src/
├── config/ # 환경 설정
│ ├── constants.py # 상수 정의
│ └── styles.py # UI 스타일 정의
├── modules/ # 기능 모듈
│ ├── ai_service.py # AI 서비스 연동
│ ├── character_creation.py # 캐릭터 생성 기능
│ ├── character_utils.py # 캐릭터 관련 유틸리티
│ ├── game_play.py # 게임 플레이 기능
│ ├── item_manager.py # 아이템 관리 기능
│ └── world_description.py # 세계관 설명 기능
├── utils/ # 유틸리티 함수
│ ├── dice_roller.py # 주사위 굴림 기능
│ ├── location_manager.py # 위치 관리 기능
│ ├── session_manager.py # 세션 상태 관리
│ └── theme_manager.py # 테마 관리 기능
└── main.py # 메인 애플리케이션
```
## 파일별 주요 기능
### main.py
- 애플리케이션의 진입점
- 전체 UI 레이아웃 구성 및 단계 흐름 제어
- 세션 상태 초기화 및 관리
- 현재 단계(stage)에 따른 UI 표시 로직
### config/constants.py
- 애플리케이션 전반에서 사용되는 상수 정의
- 통합된 상수 관리로 일관성 유지
- 주요 상수: 스텟 이름, 테마 유형, AI 서비스 설정 등
### config/styles.py
- UI 스타일 관련 CSS 정의
- 일관된 디자인 시스템 유지
- 주요 스타일: 카드, 버튼, 패널, 알림 등의 스타일 정의
### modules/ai_service.py
- AI 서비스 연동 기능
- 주요 함수:
- `setup_gemini()`: AI 모델 초기화
- `generate_gemini_text()`: AI 모델로 텍스트 생성
- `generate_world_description()`: 세계관 생성
- `generate_character_options()`: 캐릭터 배경 옵션 생성
- `generate_story_response()`: 주사위 결과에 따른 스토리 생성
- `get_ability_suggestion()`: 행동에 적합한 능력치 제안
- `master_answer_game_question()`: 마스터 질문 응답 생성
### modules/character_creation.py
- 캐릭터 생성 관련 기능
- 주요 함수:
- `initialize_character_creation_state()`: 캐릭터 생성 상태 초기화
- `display_character_creation_page()`: 캐릭터 생성 페이지 표시
- `display_race_selection()`: 종족 선택 UI 표시
- `display_profession_selection()`: 직업 선택 UI 표시
- `display_background_selection()`: 배경 선택 UI 표시
- `display_abilities_selection()`: 능력치 설정 UI 표시
- `ability_roll_section()`: 주사위 굴림 기반 능력치 생성
- `base_abilities_section()`: 기본 능력치 설정
- `display_character_review()`: 캐릭터 최종 확인
### modules/character_utils.py
- 캐릭터 관련 유틸리티 함수
- 주요 함수:
- `generate_races()`: 테마별 종족 목록 생성
- `generate_professions()`: 테마별 직업 목록 생성
- `extract_background_tags()`: 배경 스토리에서 태그 추출
- `get_stat_info()`: 능력치 정보 및 시각적 표현 제공
- `generate_special_trait()`: 캐릭터 특별 특성 생성
### modules/game_play.py
- 게임 플레이 핵심 기능
- 주요 함수:
- `initialize_game_state()`: 게임 상태 초기화
- `display_game_play_page()`: 게임 플레이 페이지 표시
- `display_character_panel()`: 캐릭터 정보 패널 표시
- `display_story_and_actions()`: 스토리 및 행동 UI 표시
- `handle_action_phase()`: 행동 단계 관리
- `handle_movement()`: 위치 이동 처리
- `handle_ability_check()`: 능력치 판정 처리
- `handle_action_suggestions()`: 행동 제안 관리
- `handle_story_progression()`: 스토리 진행 처리
- `display_game_tools()`: 게임 도구 패널 표시
- `display_master_question_ui()`: 마스터 질문 UI 표시
### modules/item_manager.py
- 아이템 관리 기능
- 주요 함수 및 클래스:
- `Item` 클래스: 아이템 데이터 및 메서드 정의
- `initialize_inventory()`: 테마별 기본 인벤토리 초기화
- `display_inventory()`: 인벤토리 아이템 표시
- `display_inventory_for_review()`: 캐릭터 검토용 인벤토리 표시
- `extract_items_from_story()`: 스토리에서 아이템 추출
- `extract_used_items_from_story()`: 사용된 아이템 추출
- `update_inventory()`: 인벤토리 아이템 추가/제거/사용
### modules/world_description.py
- 세계관 설명 관련 기능
- 주요 함수:
- `world_description_page()`: 세계관 설명 페이지 표시
- `process_question()`: 세계관 질문 처리
- `handle_world_expansion()`: 세계관 확장 처리
### utils/dice_roller.py
- 주사위 관련 유틸리티
- 주요 함수:
- `roll_dice()`: 기본 주사위 굴림
- `calculate_dice_result()`: 주사위 표현식 계산
- `display_dice_animation()`: 주사위 굴림 애니메이션
### utils/location_manager.py
- 위치 관련 유틸리티
- 주요 함수:
- `generate_locations()`: 테마별 위치 생성
- `generate_movement_story()`: 이동 스토리 생성
- `get_location_image()`: 위치 이미지 생성
### utils/session_manager.py
- 세션 상태 관리 유틸리티
- 주요 함수:
- `reset_game_session()`: 게임 세션 초기화
- `initialize_session_state()`: 세션 상태 초기화
### utils/theme_manager.py
- 테마 관련 유틸리티
- 주요 함수:
- `create_theme_image()`: 테마별 이미지 생성
- `get_theme_description()`: 테마 설명 제공
## 주요 기능 흐름
1. **초기화 및 메인 UI**: `main.py`에서 시작하여 각 모듈 초기화
2. **테마 선택**: 사용자가 테마 선택 → `theme_manager.py`의 함수 활용
3. **세계관 생성**: `ai_service.py`를 통해 세계관 생성
4. **세계관 탐색**: `world_description.py`를 통해 세계관 확장 및 질문 처리
5. **캐릭터 생성**: `character_creation.py`의 단계별 함수를 통해 캐릭터 생성
6. **게임 플레이**: `game_play.py`를 통해 스토리 진행, 행동 처리, 능력치 판정 등
## 개선된 설계 특징
1. **모듈화**: 기능별로 명확히 분리된 모듈로 유지보수성 향상
2. **단일 책임 원칙**: 각 모듈과 함수가 명확한 하나의 책임을 가짐
3. **상태 관리**: 세션 상태를 효율적으로 관리하여 일관된 사용자 경험 제공
4. **UI/비즈니스 로직 분리**: 표시 로직과 비즈니스 로직을 분리
5. **확장성**: 새로운 기능, 테마, 아이템 등을 쉽게 추가할 수 있는 구조
6. **재사용성**: 공통 유틸리티 함수를 통해 코드 중복 제거
이 구조는 기존의 단일 파일 애플리케이션(app.py)에 비해 훨씬 더 체계적이고 유지보수하기 쉬운 코드베이스를 제공합니다. 각 모듈은 독립적으로 테스트하고 개발할 수 있으며, 전체 시스템의 복잡성을 관리하기 쉽게 합니다.