add moon project

This commit is contained in:
2025-08-13 01:49:42 +09:00
parent f1e0e98ee0
commit 4782b50a39
6 changed files with 521 additions and 0 deletions

30
.gitignore vendored Normal file
View File

@@ -0,0 +1,30 @@
# Godot 4 specific ignores
.godot/
.import/
# Godot-specific ignores
*.tmp
*.translation
*.godot
# Build results
builds/
export/
dist/
# IDE specific files
.vscode/
.idea/
# OS specific files
.DS_Store
Thumbs.db
# C# specific ignores (if using C#)
*.dll
*.pdb
*.mdb
*.meta
# Log files
*.log

4
moon/.editorconfig Normal file
View File

@@ -0,0 +1,4 @@
root = true
[*]
charset = utf-8

387
moon/ai-guide.md Normal file
View File

@@ -0,0 +1,387 @@
# Claude AI와 함께하는 게임 개발 가이드
## 목차
1. [프로젝트 구조](#프로젝트-구조)
2. [claude.md 작성법](#claudemd-작성법)
3. [기획 문서 관리](#기획-문서-관리)
4. [Claude와의 소통 방법론](#claude와의-소통-방법론)
5. [지속적 개발 워크플로우](#지속적-개발-워크플로우)
6. [Unit Test 전략](#unit-test-전략)
## 프로젝트 구조
```
GameProject/
├── claude.md # Claude 협업 가이드
├── docs/ # 문서 폴더
│ ├── design/ # 기획 문서
│ │ ├── game_design_document.md # 핵심 게임 기획서
│ │ ├── technical_specs.md # 기술 명세서
│ │ ├── ui_ux_specs.md # UI/UX 명세서
│ │ └── feature_specs/ # 기능별 상세 명세
│ ├── development/ # 개발 관련 문서
│ │ ├── coding_standards.md # 코딩 표준
│ │ ├── architecture.md # 아키텍처 문서
│ │ └── changelog.md # 변경 로그
│ └── testing/ # 테스트 관련 문서
│ ├── test_strategy.md # 테스트 전략
│ └── test_cases.md # 테스트 케이스
├── project.godot # Godot 프로젝트 파일
├── scenes/ # 씬 파일들
├── scripts/ # C# 스크립트
│ ├── Core/ # 핵심 시스템
│ ├── Gameplay/ # 게임플레이 로직
│ ├── UI/ # UI 관련
│ └── Tests/ # 단위 테스트
├── assets/ # 게임 에셋
└── addons/ # Godot 애드온
```
## claude.md 작성법
### 기본 구조
```markdown
# 프로젝트 개요
- **게임 제목**: [게임명]
- **장르**: [장르]
- **타겟 플랫폼**: [플랫폼]
- **개발 엔진**: Godot 4.x
- **주 언어**: C#
# 현재 개발 상태
- **버전**: v0.1.0
- **마지막 업데이트**: 2024-XX-XX
- **현재 작업 중인 기능**: [기능명]
- **다음 마일스톤**: [목표]
# 핵심 게임 컨셉
## 게임플레이 핵심
[간단한 게임플레이 설명]
## 주요 시스템
- [ ] 플레이어 캐릭터 시스템
- [ ] 인벤토리 시스템
- [ ] 전투 시스템
- [ ] UI 시스템
# 기술적 아키텍처
## 코어 시스템 설계
- **GameManager**: 게임 전반 관리
- **SceneManager**: 씬 전환 관리
- **SaveSystem**: 저장/불러오기
- **EventSystem**: 이벤트 기반 통신
## 코딩 컨벤션
- 클래스명: PascalCase
- 메서드명: PascalCase
- 변수명: camelCase
- 상수: UPPER_SNAKE_CASE
# Claude 협업 가이드라인
## 요청할 때 포함해야 할 정보
1. **현재 작업 컨텍스트**: 어떤 기능을 구현 중인지
2. **관련 파일**: 수정이 필요한 파일들
3. **요구사항**: 구체적인 기능 명세
4. **제약사항**: 성능, 메모리, 호환성 등
## 코드 리뷰 요청 시
- 전체 코드보다는 특정 기능 단위로 요청
- 의도한 동작과 실제 문제점 명시
- 관련 테스트 케이스 함께 제공
## 디버깅 요청 시
- 에러 메시지 전문 포함
- 재현 단계 상세히 기술
- 예상 동작 vs 실제 동작 비교
# 개발 우선순위
1. **높음**: 핵심 게임플레이 로직
2. **중간**: UI/UX 개선
3. **낮음**: 부가 기능, 최적화
# 테스트 전략
- Unit Test: 핵심 로직 테스트
- Integration Test: 시스템 간 연동 테스트
- Play Test: 실제 게임플레이 테스트
```
## 기획 문서 관리
### 1. 게임 기획서 구조 (`docs/design/game_design_document.md`)
```markdown
# 게임 기획서
## 게임 개요
### 컨셉
### 타겟 유저
### 플랫폼
## 게임플레이
### 핵심 루프
### 플레이어 목표
### 진행 시스템
## 시스템 설계
### [시스템명]
- **목적**:
- **구현 방법**:
- **관련 클래스**:
- **테스트 방법**:
## 기술 요구사항
### 성능 목표
### 메모리 사용량
### 호환성 요구사항
## 개발 일정
- [ ] 프로토타입 (Week 1-2)
- [ ] 핵심 시스템 (Week 3-4)
- [ ] 콘텐츠 제작 (Week 5-6)
```
### 2. 기능별 명세서 (`docs/design/feature_specs/`)
각 주요 기능별로 개별 문서 작성:
- `player_system.md`
- `combat_system.md`
- `inventory_system.md`
- `ui_system.md`
## Claude와의 소통 방법론
### 1. 효과적인 질문 패턴
#### 🟢 좋은 예시
```
현재 Godot C#에서 인벤토리 시스템을 구현 중입니다.
**현재 상황:**
- Player 클래스에서 아이템을 관리
- 아이템은 ScriptableObject로 구현 예정
- docs/design/feature_specs/inventory_system.md에 명세 있음
**요구사항:**
1. 아이템 슬롯 기반 인벤토리
2. 드래그 앤 드롭 지원
3. 아이템 스택 기능
**질문:**
위 요구사항을 만족하는 InventoryManager 클래스 구조를 설계해주세요.
Unit Test도 함께 고려해주세요.
```
#### 🔴 피해야 할 예시
```
게임 만드는데 도와주세요.
```
### 2. 컨텍스트 유지 전략
#### 세션 시작 시 항상 포함할 정보
```markdown
## 현재 프로젝트 상태
- 게임: [게임명]
- 엔진: Godot 4.x + C#
- 현재 작업: [기능명]
- 관련 파일: [파일 목록]
- 최근 변경사항: [요약]
```
#### 파일 수정 시 패턴
```markdown
## 수정 요청
**파일**: `scripts/Core/GameManager.cs`
**현재 코드**: [관련 코드 블록]
**요구사항**: [구체적인 변경 내용]
**제약사항**: [성능, 호환성 등]
```
### 3. 반복 개발 워크플로우
#### Phase 1: 기능 설계
```markdown
## 기능 설계 요청
**기능명**: [기능명]
**기획 문서**: docs/design/feature_specs/[기능명].md 참고
**요구사항**:
1. [요구사항 1]
2. [요구사항 2]
**Claude 생성 요청**:
- 클래스 구조 설계
- 인터페이스 정의
- 테스트 케이스 설계
```
#### Phase 2: 구현
```markdown
## 구현 요청
**설계**: [이전에 Claude가 제안한 설계 요약]
**구현할 클래스**: [클래스명]
**특별 고려사항**: [Godot 특화 사항, 성능 등]
```
#### Phase 3: 테스트 & 개선
```markdown
## 코드 리뷰 요청
**구현된 코드**: [코드 블록]
**문제상황**: [발생한 문제]
**개선 요청**: [성능, 가독성, 테스트 등]
```
## 지속적 개발 워크플로우
### 1. 일일 개발 루틴
#### 개발 시작 시
1. `claude.md` 업데이트 (현재 상태, 목표)
2. Claude에게 현재 상황 공유
3. 오늘 작업할 기능 논의
#### 개발 중
1. 막힐 때마다 구체적 질문
2. 코드 리뷰 요청
3. 테스트 케이스 논의
#### 개발 완료 시
1. `docs/development/changelog.md` 업데이트
2. 기획서에 변경사항 반영 요청
3. 다음 작업 계획 수립
### 2. 기획서 동기화 프로세스
#### 코드 변경 후 기획서 업데이트 요청 패턴
```markdown
## 기획서 업데이트 요청
**변경된 코드**: [파일명과 주요 변경사항]
**영향받는 기획 문서**: docs/design/feature_specs/[기능명].md
**업데이트 필요 섹션**:
- 기술 구현 방법
- 클래스 구조
- 테스트 방법
**요청**: 위 변경사항을 반영하여 기획서를 업데이트해주세요.
```
## Unit Test 전략
### 1. 테스트 구조
```csharp
// scripts/Tests/Core/GameManagerTests.cs
using NUnit.Framework;
using Godot;
[TestFixture]
public class GameManagerTests
{
private GameManager _gameManager;
[SetUp]
public void Setup()
{
_gameManager = new GameManager();
}
[Test]
public void Initialize_ShouldSetupGameState()
{
// Arrange
// Act
_gameManager.Initialize();
// Assert
Assert.IsTrue(_gameManager.IsInitialized);
}
[TearDown]
public void TearDown()
{
_gameManager?.Cleanup();
}
}
```
### 2. Claude와 TDD 협업
#### 테스트 우선 개발 요청 패턴
```markdown
## TDD 구현 요청
**기능**: [기능명]
**요구사항**: [상세 요구사항]
**1단계 요청**:
해당 기능의 테스트 케이스를 먼저 작성해주세요.
**2단계 요청**:
테스트를 통과하는 최소한의 구현을 작성해주세요.
**3단계 요청**:
코드를 리팩토링해주세요.
```
### 3. 테스트 유형별 전략
#### Unit Test
- 각 클래스의 public 메서드 테스트
- 경계값, 예외 상황 테스트
- Mocking을 활용한 의존성 분리
#### Integration Test
```csharp
[TestFixture]
public class PlayerInventoryIntegrationTests
{
[Test]
public void Player_PickupItem_ShouldAddToInventory()
{
// 플레이어와 인벤토리 시스템 통합 테스트
}
}
```
#### Performance Test
```csharp
[TestFixture]
public class PerformanceTests
{
[Test]
public void GameLoop_Under60FPS_ShouldMaintainPerformance()
{
// 성능 관련 테스트
}
}
```
## Claude 활용 팁
### 1. 효율적인 질문 방법
- 한 번에 하나의 기능에 집중
- 구체적인 코드 블록과 함께 질문
- 예상 결과와 실제 결과 비교 제시
### 2. 코드 품질 향상
```markdown
## 코드 리뷰 요청 체크리스트
- [ ] SOLID 원칙 준수 확인
- [ ] Godot 베스트 프랙티스 적용
- [ ] 성능 최적화 검토
- [ ] 테스트 커버리지 확인
- [ ] 문서화 완성도 검토
```
### 3. 장기 프로젝트 관리
- 주요 마일스톤마다 전체 아키텍처 리뷰
- 정기적인 코드 리팩토링
- 기술 부채 관리 계획 수립
## 마무리
이 가이드를 따라 Claude AI와 효과적으로 협업하면:
- 일관성 있는 코드 품질 유지
- 빠른 문제 해결과 개선
- 체계적인 문서 관리
- 지속 가능한 개발 프로세스
정기적으로 이 문서를 업데이트하며 프로젝트에 맞게 조정해나가세요.

62
moon/claude.md Normal file
View File

@@ -0,0 +1,62 @@
# 프로젝트 개요
- **게임 제목**: Little Fairy
- **장르**: RPG
- **타겟 플랫폼**: Windows
- **개발 엔진**: Godot 4.4.1
- **주 언어**: C#
# 현재 개발 상태
- **버전**: v0.0.1
- **마지막 업데이트**: 2025-08-13
- **현재 작업 중인 기능**: [기능명]
- **다음 마일스톤**: [목표]
# 핵심 게임 컨셉
## 게임플레이 핵심
[간단한 게임플레이 설명]
## 주요 시스템
- [ ] 플레이어 캐릭터 시스템
- [ ] 인벤토리 시스템
- [ ] 전투 시스템
- [ ] UI 시스템
# 기술적 아키텍처
## 코어 시스템 설계
- **GameManager**: 게임 전반 관리
- **SceneManager**: 씬 전환 관리
- **SaveSystem**: 저장/불러오기
- **EventSystem**: 이벤트 기반 통신
## 코딩 컨벤션
- 클래스명: PascalCase
- 메서드명: PascalCase
- 변수명: camelCase
- 상수: UPPER_SNAKE_CASE
# Claude 협업 가이드라인
## 요청할 때 포함해야 할 정보
1. **현재 작업 컨텍스트**: 어떤 기능을 구현 중인지
2. **관련 파일**: 수정이 필요한 파일들
3. **요구사항**: 구체적인 기능 명세
4. **제약사항**: 성능, 메모리, 호환성 등
## 코드 리뷰 요청 시
- 전체 코드보다는 특정 기능 단위로 요청
- 의도한 동작과 실제 문제점 명시
- 관련 테스트 케이스 함께 제공
## 디버깅 요청 시
- 에러 메시지 전문 포함
- 재현 단계 상세히 기술
- 예상 동작 vs 실제 동작 비교
# 개발 우선순위
1. **높음**: 핵심 게임플레이 로직
2. **중간**: UI/UX 개선
3. **낮음**: 부가 기능, 최적화
# 테스트 전략
- Unit Test: 핵심 로직 테스트
- Integration Test: 시스템 간 연동 테스트
- Play Test: 실제 게임플레이 테스트

1
moon/icon.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

After

Width:  |  Height:  |  Size: 994 B

37
moon/icon.svg.import Normal file
View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p5u1kgshosvt"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false