first design document

This commit is contained in:
2025-08-13 02:28:19 +09:00
parent 4782b50a39
commit 31394588ae
4 changed files with 653 additions and 12 deletions

View File

@@ -1,31 +1,40 @@
# 프로젝트 개요
- **게임 제목**: Little Fairy
- **장르**: RPG
- **게임 제목**: Little Fairy (작은 선녀)
- **장르**: 생명 시뮬레이션 RPG
- **타겟 플랫폼**: Windows
- **개발 엔진**: Godot 4.4.1
- **주 언어**: C#
- **핵심 경험**: "살아있음의 기쁨"과 "생명의 연속성" 체험
# 현재 개발 상태
- **버전**: v0.0.1
- **마지막 업데이트**: 2025-08-13
- **현재 작업 중인 기능**: [기능명]
- **다음 마일스톤**: [목표]
- **현재 작업 중인 기능**: 디자인 문서 완성
- **다음 마일스톤**: Phase 1 - 기반 시스템 구축 시작
# 핵심 게임 컨셉
## 게임플레이 핵심
[간단한 게임플레이 설명]
1시간 압축 생애 시스템으로 선녀의 한 생을 경험하고, DNA Pool을 통해 다음 세대에 경험을 전수하는 세대 연결형 RPG. 한국적 정서와 매듭공예를 활용한 인연 시스템이 핵심.
## 주요 시스템
- [ ] 플레이어 캐릭터 시스템
- [ ] 인벤토리 시스템
- [ ] 전투 시스템
- [ ] UI 시스템
- [x] 게임 디자인 문서 완성
- [x] 시스템 설계 명세서 완성
- [x] 개발 로드맵 수립
- [ ] 생애주기 시스템 (LifeCycleManager)
- [ ] DNA Pool 유전 시스템 (DNAPoolManager)
- [ ] 매듭 기반 인연 시스템 (KnotSystem)
- [ ] 노드 기반 맵 시스템 (MapManager)
- [ ] 위험 요소 및 사망 시스템 (RiskManager)
# 기술적 아키텍처
## 코어 시스템 설계
- **GameManager**: 게임 전반 관리
- **SceneManager**: 씬 전환 관리
- **SaveSystem**: 저장/불러오기
- **GameManager**: 게임 전반 관리 및 씬 전환
- **LifeCycleManager**: 4단계 생애주기 관리 (어린선녀→성장→성숙→지혜)
- **DNAPoolManager**: 세대 간 유전 및 진화 시스템
- **RelationshipManager**: 인연 형성 및 발전 관리
- **KnotSystem**: 한국 전통 매듭 기반 시각화
- **MapManager**: 4개 맵의 노드 기반 이동
- **RiskManager**: 생애주기별 위험 요소 관리
- **EventSystem**: 이벤트 기반 통신
## 코딩 컨벤션
@@ -33,6 +42,29 @@
- 메서드명: PascalCase
- 변수명: camelCase
- 상수: UPPER_SNAKE_CASE
- 프라이빗 필드: _camelCase
# 맵 및 콘텐츠 구조
## 4개 주요 맵
- **Map A (봄)**: 산골 마을 - 어린 선녀 시기
- **Map B (여름)**: 강변 들판 - 성장기 선녀
- **Map C (가을)**: 도시 근교 - 성숙기 선녀
- **Map D (겨울)**: 설산 - 지혜의 시기
## 핵심 데이터 구조
```json
{
"generation": 1,
"attributes": {
"wisdom": 45.5,
"courage": 38.2,
"compassion": 52.1,
"creativity": 41.8
},
"knots": [],
"relationships": []
}
```
# Claude 협업 가이드라인
## 요청할 때 포함해야 할 정보

View File

@@ -0,0 +1,213 @@
# Little Fairy - 게임 디자인 문서
## 1. 게임 개요
### 1.1 핵심 비전
"살아있음의 기쁨"과 "생명의 연속성"을 체험할 수 있는 한국적 정서의 RPG
### 1.2 게임 정보
- **제목**: Little Fairy (작은 선녀)
- **장르**: 생명 시뮬레이션 RPG
- **플랫폼**: Windows (Godot 4.4.1)
- **개발 언어**: C#
- **플레이 시간**: 1시간 / 1세대 (압축된 생애 경험)
- **타겟 연령**: 전 연령
### 1.3 핵심 경험 목표
- **살아있음의 즐거움**: 생명 그 자체의 기쁨을 경험
- **현재 순간의 행복**: "이 순간이 살만하다"는 깊은 만족감
- **생명의 연속성**: 세대를 잇는 과정에서 오는 성취감
- **인연의 소중함**: 다른 존재와의 유대감과 연결성
## 2. 게임 세계관
### 2.1 배경 설정
한국의 전통적 자연관과 선녀 설화를 현대적으로 재해석한 신화적 공간
### 2.2 주인공
- **작은 선녀**: 아직 성장해야 할 어린 천상의 존재
- **특징**: 순수하고 호기심 많으며, 자연과 인간 모두와 교감 가능
- **성장**: 4단계 생애주기를 거쳐 지혜로운 존재로 진화
### 2.3 세계의 구조
4개의 주요 맵이 계절과 생애주기에 연동:
- **Map A**: 봄의 산골 마을 (어린 선녀 시기)
- **Map B**: 여름의 강변 들판 (성장기 선녀)
- **Map C**: 가을의 도시 근교 (성숙기 선녀)
- **Map D**: 겨울의 설산 (지혜의 시기)
## 3. 핵심 게임플레이 시스템
### 3.1 생애주기 시스템
**1시간 = 1생애 구조**:
- 1단계 (0-15분): 어린 선녀 ×
- 2단계 (15-30분): 성장기 선녀 × 여름
- 3단계 (30-45분): 성숙기 선녀 × 가을
- 4단계 (45-60분): 지혜의 시기 × 겨울
**각 단계별 특징**:
- 다른 능력과 활동 가능
- 단계별 고유한 도전과 성장 기회
- 시간 흐름에 따른 자연스러운 변화
### 3.2 DNA Pool 시스템
**세대 간 유전 시스템**:
- 한 생애의 모든 경험이 DNA Pool에 저장
- 다음 세대는 이전 경험을 바탕으로 시작
- 진화와 퇴화 모두 가능한 현실적 시스템
**저장되는 요소들**:
- 능력치 (지혜, 용기, 자비, 창조성 등)
- 학습한 기술과 지식
- 맺은 인연들의 기록
- 중요한 선택과 그 결과
### 3.3 매듭 기반 인연 시스템
**한국 전통 매듭공예를 활용한 관계 시각화**:
- 각 인연이 고유한 매듭 패턴으로 표현
- 매듭의 복잡성과 아름다움이 관계의 깊이를 나타냄
- 여러 매듭이 유기적으로 연결되어 DNA Pool 형성
**매듭의 종류**:
- **인연 매듭**: 나비매듭(우정), 매화매듭(사랑), 국화매듭(사제관계) 등
- **능력 매듭**: 구름매듭(비행), 물결매듭(치유), 바람매듭(이동) 등
- **기억 매듭**: 지혜, 감정, 경험이 저장된 매듭들
### 3.4 노드 기반 맵 시스템
**단순하고 직관적인 이동**:
- 각 맵은 의미있는 장소들로 구성된 노드 네트워크
- 클릭 기반 즉시 이동 (복잡한 이동 메커니즘 배제)
- 스토리와 관계 발전에 따른 점진적 영역 확장
**맵별 주요 노드 예시**:
- **봄 맵**: 선녀의 둥지, 꽃밭, 시냇가, 할머니집
- **여름 맵**: 강변 들판, 마을 축제장, 깊은 숲
- **가을 맵**: 도시 외곽, 선녀 학교, 예술의 거리
- **겨울 맵**: 설산 입구, 명상의 동굴, 별빛 정상
## 4. 위험과 사망 시스템
### 4.1 위험 요소의 철학
- **예측 가능하되 완전 통제 불가능**
- **모든 위험이 성장의 기회 포함**
- **자연스럽고 의미있는 통합**
### 4.2 생애주기별 위험
- **1단계**: 호기심의 위험 (첫 비행 실수, 독성 식물 등)
- **2단계**: 도전의 위험 (자연재해, 과도한 자신감 등)
- **3단계**: 책임의 위험 (도덕적 딜레마, 번아웃 등)
- **4단계**: 완성의 위험 (고립, 미완성에 대한 미련 등)
### 4.3 사망의 종류와 의미
- **자연사**: 평화로운 생명의 완성, 최고 등급 DNA Pool
- **사고사**: 예상치 못한 배움, 특별한 매듭 형성
- **희생사**: 타인을 위한 선택, 전설급 매듭 생성
### 4.4 아름다운 사망 연출
- **시각적**: 꽃잎 흩날리기, 빛의 승천
- **음향적**: 한국 전통 음악, 자연의 소리
- **감정적**: 슬픔보다는 완성과 전환의 의미 부여
## 5. 사용자 경험 설계
### 5.1 게임플레이 철학
- **일상의 서사**: 거대한 모험보다는 평범한 일상의 기적
- **관계 중심**: NPC와의 깊은 상호작용과 감정적 유대
- **성찰과 성장**: 경쟁보다는 내적 성장에 중점
- **조화와 균형**: 자연과 공동체와의 조화로운 관계
### 5.2 감정적 여정
- **1단계**: 경이로움과 순수한 기쁨
- **2단계**: 도전 의식과 성취감
- **3단계**: 책임감과 성숙한 감정
- **4단계**: 평온함과 완성의 만족감
### 5.3 리플레이 가치
- **세대별 다른 경험**: DNA Pool에 따른 시작 조건 변화
- **인연의 진화**: 관계 발전에 따른 새로운 콘텐츠
- **숨겨진 발견**: 여러 세대에 걸쳐 발견할 수 있는 요소들
## 6. 기술적 구조
### 6.1 핵심 시스템 아키텍처
```
GameManager
├── LifeCycleManager (생애주기 관리)
├── DNAPoolManager (유전 시스템)
├── RelationshipManager (인연 관리)
├── KnotSystem (매듭 시스템)
├── MapManager (노드 기반 맵)
└── RiskSystem (위험 요소 관리)
```
### 6.2 데이터 구조
- **JSON 기반 노드 정의**: 새로운 맵과 이벤트 쉬운 추가
- **매듭 템플릿 시스템**: 다양한 매듭 패턴의 모듈화
- **세이브 시스템**: DNA Pool과 인연 데이터의 지속적 저장
### 6.3 성능 고려사항
- **2D 기반 아트**: 경량화된 비주얼 시스템
- **모듈형 로딩**: 필요한 컨텐츠만 메모리에 로드
- **효율적 매듭 렌더링**: 복잡한 매듭의 최적화된 표현
## 7. 한국적 문화 요소
### 7.1 전통 문화 통합
- **24절기 시스템**: 계절 변화와 연계된 게임플레이
- **전통 매듭공예**: 인연과 DNA를 표현하는 핵심 시스템
- **선녀 설화**: 전래동화 모티프의 현대적 재해석
- **한국적 자연관**: 인간과 자연의 조화로운 관계
### 7.2 현대적 적용
- **전통과 현대의 공존**: 각 맵에서 시대의 변화 반영
- **환경 의식**: 지속가능성과 자연 보호 메시지
- **공동체 문화**: 개인의 성장과 공동체 기여의 균형
## 8. 개발 로드맵
### 8.1 Phase 1: 핵심 시스템 구현
- [ ] 기본 생애주기 시스템
- [ ] 노드 기반 맵 이동
- [ ] 간단한 인연 시스템
- [ ] 기본 DNA Pool 저장/로드
### 8.2 Phase 2: 콘텐츠 확장
- [ ] 매듭 시스템 구현
- [ ] 4개 맵의 기본 콘텐츠
- [ ] 위험 요소와 사망 시스템
- [ ] 기본 UI/UX 완성
### 8.3 Phase 3: 완성도 향상
- [ ] 아트 에셋 완성
- [ ] 사운드 시스템
- [ ] 밸런싱과 튜닝
- [ ] 최종 테스트 및 폴리싱
## 9. 성공 지표
### 9.1 경험 목표 달성도
- 플레이어가 "살아있음의 기쁨"을 느끼는가?
- 세대 연결에서 감동을 받는가?
- 인연 시스템이 의미있게 작동하는가?
### 9.2 기술적 목표
- 1시간 플레이 세션의 완성도
- 안정적인 세이브/로드 시스템
- 직관적이고 아름다운 UI
### 9.3 확장성
- 새로운 맵과 콘텐츠 추가 용이성
- 매듭 시스템의 확장 가능성
- 커뮤니티 기능 추가 여지
---
**이 문서는 "Living Joy"의 핵심 경험을 구현하기 위한 설계 가이드라인입니다. 모든 개발 결정은 "살아있음의 기쁨"이라는 핵심 가치에 부합하는지를 기준으로 평가합니다.**
---
## 참고 문서
- [시스템 설계 명세서](02_system_specification.md)
- [개발 로드맵](03_development_roadmap.md)
- [아트 가이드라인](04_art_guidelines.md)
- [사운드 디자인](05_sound_design.md)

View File

@@ -0,0 +1,379 @@
# Little Fairy - 시스템 설계 명세서
## 1. 핵심 시스템 아키텍처
### 1.1 전체 시스템 구조
```
GameManager (게임 전반 관리)
├── LifeCycleManager (생애주기 관리)
├── DNAPoolManager (DNA Pool 유전 시스템)
├── RelationshipManager (인연 시스템)
├── KnotSystem (매듭 시스템)
├── MapManager (노드 기반 맵 시스템)
├── RiskManager (위험 요소 시스템)
├── TimeManager (시간 흐름 관리)
└── EventManager (이벤트 기반 통신)
```
### 1.2 데이터 흐름
```
플레이어 행동 → 이벤트 발생 → 시스템별 처리 → DNA Pool 업데이트 → 매듭 생성/수정 → UI 반영
```
## 2. 생애주기 시스템 (LifeCycleManager)
### 2.1 시스템 개요
```csharp
public class LifeCycleManager : Node
{
public enum LifeStage
{
YoungFairy = 0, // 어린 선녀 (0-15분)
GrowthStage = 1, // 성장기 (15-30분)
MatureStage = 2, // 성숙기 (30-45분)
WisdomStage = 3 // 지혜의 시기 (45-60분)
}
[Signal] public delegate void LifeStageChanged(LifeStage newStage);
[Signal] public delegate void LifeEnded(DeathType deathType);
}
```
### 2.2 단계별 특성
- **시간 관리**: 각 단계는 실시간 15분 (게임 시간 압축 가능)
- **능력 변화**: 단계별로 다른 능력치와 행동 가능
- **환경 연동**: 각 단계는 특정 맵과 계절에 대응
### 2.3 주요 기능
- 시간 경과에 따른 자동 단계 전환
- 단계별 능력치 변화 관리
- 조기 사망 시 현재 단계 정보 저장
- 다음 세대 시작 시 이전 경험 반영
## 3. DNA Pool 시스템 (DNAPoolManager)
### 3.1 데이터 구조
```csharp
public class DNAPool
{
public Dictionary<string, float> Attributes { get; set; } // 능력치
public List<Skill> Skills { get; set; } // 습득 기술
public List<Relationship> Relationships { get; set; } // 인연 관계
public List<Memory> Memories { get; set; } // 중요한 기억
public List<Knot> Knots { get; set; } // 매듭 컬렉션
public int Generation { get; set; } // 세대 수
public float OverallQuality { get; set; } // 전체 품질
}
public class Attribute
{
public string Name { get; set; } // 속성명 (지혜, 용기, 자비 등)
public float Value { get; set; } // 현재 값
public float Growth { get; set; } // 성장률
public int TimesImproved { get; set; } // 향상된 횟수
}
```
### 3.2 유전 메커니즘
- **직접 유전**: 능력치의 70-90%가 다음 세대에 전달
- **돌연변이**: 5-10% 확률로 새로운 특성 발현
- **퇴화 가능성**: 특정 조건에서 능력치 감소 가능
- **복합 효과**: 여러 속성의 조합으로 새로운 능력 생성
### 3.3 저장 및 로드
```csharp
public class DNAPoolManager : Node
{
private const string SAVE_PATH = "user://dna_pool.json";
public void SaveDNAPool(DNAPool pool) { /* JSON 직렬화 */ }
public DNAPool LoadDNAPool() { /* JSON 역직렬화 */ }
public DNAPool GenerateNextGeneration(DNAPool previousGen) { /* 유전 로직 */ }
}
```
## 4. 인연 시스템 (RelationshipManager)
### 4.1 관계 타입
```csharp
public enum RelationshipType
{
Nature, // 자연계 (정령, 동식물)
Human, // 인간계 (마을 사람, 도시민)
Divine, // 신령계 (신, 조상령)
Temporal // 시간적 (과거/미래 세대)
}
public class Relationship
{
public string EntityId { get; set; } // 상대방 ID
public RelationshipType Type { get; set; } // 관계 타입
public float Strength { get; set; } // 관계 강도 (0-100)
public string Quality { get; set; } // 관계 성격 (우정, 사랑, 존경 등)
public List<string> SharedMemories { get; set; } // 공유 기억들
public DateTime LastInteraction { get; set; } // 마지막 상호작용 시간
public bool IsActive { get; set; } // 현재 활성 상태
}
```
### 4.2 관계 발전 메커니즘
- **상호작용 빈도**: 자주 만날수록 관계 강화
- **공유 경험**: 함께한 특별한 경험이 관계 깊이 증가
- **시간의 영향**: 오랜 시간 만나지 않으면 관계 약화
- **위기 상황**: 어려운 상황을 함께 극복하면 급속 강화
### 4.3 세대 간 관계 전승
- **직계 상속**: 가족 단위 관계는 자동 상속
- **명성 상속**: 뛰어난 관계는 다음 세대에 긍정적 영향
- **숙적 관계**: 부정적 관계도 세대를 거쳐 이어질 수 있음
## 5. 매듭 시스템 (KnotSystem)
### 5.1 매듭 데이터 구조
```csharp
public class Knot
{
public string Id { get; set; } // 고유 식별자
public KnotType Type { get; set; } // 매듭 종류
public string Pattern { get; set; } // 매듭 패턴
public Color PrimaryColor { get; set; } // 주 색상
public Color SecondaryColor { get; set; } // 보조 색상
public float Complexity { get; set; } // 복잡도 (0-10)
public float Beauty { get; set; } // 아름다움 (0-10)
public string Source { get; set; } // 생성 근원 (어떤 경험에서 나왔는지)
public DateTime CreatedAt { get; set; } // 생성 시간
public List<string> ConnectedKnots { get; set; } // 연결된 다른 매듭들
}
public enum KnotType
{
// 인연 매듭
Butterfly, // 나비매듭 (순수한 우정)
Plum, // 매화매듭 (깊은 사랑)
Chrysanthemum, // 국화매듭 (사제관계)
Lotus, // 연꽃매듭 (영적 교감)
// 능력 매듭
Cloud, // 구름매듭 (비행 능력)
Wave, // 물결매듭 (치유 능력)
Wind, // 바람매듭 (이동 능력)
// 지혜 매듭
Book, // 책매듭 (학습한 지식)
Star, // 별매듭 (직관과 예지력)
Seed // 씨앗매듭 (성장 잠재력)
}
```
### 5.2 매듭 생성 시스템
```csharp
public class KnotGenerator
{
public Knot CreateKnotFromExperience(Experience exp)
{
// 경험의 종류에 따라 적절한 매듭 타입 결정
var knotType = DetermineKnotType(exp.Type, exp.Intensity);
// 경험의 감정적 색조에 따라 색상 결정
var colors = DetermineColors(exp.EmotionalTone);
// 경험의 복잡성에 따라 매듭 패턴 복잡도 결정
var complexity = CalculateComplexity(exp.Depth, exp.Duration);
return new Knot { /* 매듭 생성 */ };
}
}
```
### 5.3 매듭 조합 시스템
- **융합**: 관련성 높은 매듭들이 하나의 복합 매듭으로 발전
- **공명**: 비슷한 매듭들이 서로 강화 효과
- **상극**: 상반되는 매듭들이 균형을 이루며 새로운 특성 창조
## 6. 노드 기반 맵 시스템 (MapManager)
### 6.1 맵 데이터 구조
```csharp
public class GameMap
{
public string Id { get; set; } // 맵 ID
public string Name { get; set; } // 맵 이름
public Season Season { get; set; } // 계절
public LifeStage AssociatedLifeStage { get; set; } // 연관된 생애주기
public List<MapNode> Nodes { get; set; } // 노드 목록
public Dictionary<string, string> Connections { get; set; } // 노드 간 연결
public string BackgroundArt { get; set; } // 배경 아트 경로
public string BackgroundMusic { get; set; } // 배경 음악 경로
}
public class MapNode
{
public string Id { get; set; } // 노드 ID
public string Name { get; set; } // 표시 이름
public Vector2 Position { get; set; } // 화면상 위치
public bool IsUnlocked { get; set; } // 해금 상태
public List<string> RequiredConditions { get; set; } // 해금 조건
public List<Event> AvailableEvents { get; set; } // 발생 가능한 이벤트들
public string Description { get; set; } // 노드 설명
public NodeType Type { get; set; } // 노드 타입
}
```
### 6.2 이동 시스템
- **클릭 기반 이동**: 연결된 노드 클릭 시 즉시 이동
- **조건부 해금**: 특정 인연이나 능력 달성 시 새 노드 해금
- **시간별 변화**: 생애주기에 따라 접근 가능한 노드 변화
### 6.3 맵별 특성
```json
{
"springMap": {
"nodes": ["fairyNest", "flowerGarden", "stream", "grandmaHouse"],
"theme": "growth_and_curiosity",
"primaryColors": ["lightGreen", "pink", "skyBlue"],
"backgroundMusic": "spring_village.ogg"
},
"summerMap": {
"nodes": ["riverField", "festivalGround", "deepForest", "travelerInn"],
"theme": "adventure_and_challenge",
"primaryColors": ["deepGreen", "yellow", "blue"],
"backgroundMusic": "summer_energy.ogg"
}
}
```
## 7. 위험 시스템 (RiskManager)
### 7.1 위험 요소 분류
```csharp
public class RiskEvent
{
public string Id { get; set; }
public RiskType Type { get; set; } // 위험 종류
public LifeStage ApplicableStage { get; set; } // 적용 생애주기
public float Probability { get; set; } // 발생 확률
public int Severity { get; set; } // 심각도 (1-10)
public bool IsPreventable { get; set; } // 예방 가능 여부
public List<string> PreventionMethods { get; set; } // 예방 방법
public string Description { get; set; } // 위험 설명
public DeathType PotentialOutcome { get; set; } // 잠재적 결과
}
public enum RiskType
{
Curiosity, // 호기심으로 인한 위험
Overconfidence, // 과신으로 인한 위험
MoralDilemma, // 도덕적 딜레마
NaturalDisaster, // 자연재해
SocialConflict, // 사회적 갈등
Isolation // 고립과 외로움
}
public enum DeathType
{
Natural, // 자연사
Accidental, // 사고사
Sacrificial // 희생사
}
```
### 7.2 위험 관리 메커니즘
- **예측 시스템**: DNA Pool의 경험을 바탕으로 위험 감지
- **예방 행동**: 플레이어가 위험을 회피할 수 있는 선택지 제공
- **리스크-리워드**: 큰 위험을 감수할수록 큰 성장 기회
### 7.3 사망 처리 시스템
```csharp
public class DeathProcessor
{
public DNAPool ProcessDeath(DeathType deathType, LifeStage stage, DNAPool currentPool)
{
switch (deathType)
{
case DeathType.Natural:
return ProcessNaturalDeath(currentPool); // 최고 품질 보존
case DeathType.Accidental:
return ProcessAccidentalDeath(stage, currentPool); // 미완성 매듭 생성
case DeathType.Sacrificial:
return ProcessSacrificialDeath(currentPool); // 전설 매듭 생성
}
}
}
```
## 8. UI/UX 시스템
### 8.1 주요 UI 컴포넌트
- **생애주기 표시기**: 현재 단계와 남은 시간 표시
- **매듭 정원**: DNA Pool과 매듭들을 시각화
- **인연 네트워크**: 현재 관계들을 그래프로 표시
- **맵 네비게이션**: 노드 기반 이동 인터페이스
### 8.2 정보 표시 시스템
```csharp
public class UIManager : Node
{
public void UpdateLifeStageDisplay(LifeStage stage, float timeRemaining) { }
public void ShowKnotGarden(List<Knot> knots) { }
public void DisplayRelationshipNetwork(List<Relationship> relationships) { }
public void UpdateMapView(GameMap currentMap, string currentNodeId) { }
}
```
### 8.3 접근성 고려사항
- **색맹 대응**: 색상 외에도 패턴과 모양으로 정보 전달
- **시각 장애 대응**: 음성 피드백과 대체 텍스트 제공
- **조작 편의성**: 키보드 단축키와 마우스 조작 모두 지원
## 9. 성능 최적화
### 9.1 메모리 관리
- **오브젝트 풀링**: 자주 생성/제거되는 객체들의 재활용
- **지연 로딩**: 필요한 시점에만 리소스 로드
- **가비지 컬렉션 최소화**: 불필요한 객체 생성 방지
### 9.2 렌더링 최적화
- **2D 기반 그래픽**: 3D 대비 경량화된 렌더링
- **텍스처 아틀라스**: 작은 이미지들을 하나로 합쳐 드로우콜 감소
- **LOD 시스템**: 거리에 따른 디테일 조절
### 9.3 데이터 최적화
```csharp
public class DataOptimizer
{
// JSON 데이터 압축
public string CompressDNAPool(DNAPool pool) { }
// 불필요한 데이터 정리
public void CleanupOldData(int generationsToKeep) { }
// 인덱싱을 통한 빠른 검색
public void BuildSearchIndex(List<Knot> knots) { }
}
```
## 10. 확장성 설계
### 10.1 모듈화 구조
- **이벤트 시스템**: 각 모듈 간 느슨한 결합
- **플러그인 아키텍처**: 새로운 기능을 쉽게 추가 가능
- **데이터 기반 설정**: JSON 파일로 게임 밸런스 조정
### 10.2 콘텐츠 확장
```csharp
public interface IContentLoader
{
void LoadNewMap(string mapDefinitionPath);
void LoadNewKnotTypes(string knotDefinitionPath);
void LoadNewEvents(string eventDefinitionPath);
}
```
### 10.3 버전 관리
- **세이브 데이터 호환성**: 버전 간 데이터 마이그레이션
- **점진적 업데이트**: 핫픽스와 콘텐츠 추가의 분리
- **A/B 테스트**: 다양한 밸런스 옵션 실험 가능
---
**이 시스템 설계는 "살아있음의 기쁨"이라는 핵심 경험을 기술적으로 구현하기 위한 상세한 명세서입니다. 각 시스템은 독립적으로 개발 가능하면서도 유기적으로 연결되어 통합된 경험을 제공하도록 설계되었습니다.**

View File

@@ -0,0 +1,17 @@
# Little Fairy - 개발 로드맵
## 1. 프로젝트 개요
### 1.1 개발 목표
- **핵심 경험**: "살아있음의 기쁨"을 체험할 수 있는 게임 완성
- **기술 목표**: Godot 4.4.1 + C#을 활용한 안정적인 게임 구현
- **일정 목표**: 6개월 내 알파 버전 완성, 12개월 내 정식 출시
### 1.2 개발 철학
- **점진적 개발**: 핵심 기능부터 단계적으로 구현
- **플레이 테스트 중심**: 빈번한 테스트를 통한 경험 검증
- **문서화 우선**: 모든 결정과 변경사항의 체계적 기록
---
**이 로드맵은 "살아있음의 기쁨"이라는 핵심 경험을 단계적으로 구현하면서도 기술적 안정성과 개발 효율성을 균형있게 추구하는 실용적인 계획입니다. 각 단계에서 핵심 경험 목표 달성도를 지속적으로 검증하며, 필요시 우선순위를 조정할 수 있는 유연성을 확보했습니다.**