add moon project
This commit is contained in:
30
.gitignore
vendored
Normal file
30
.gitignore
vendored
Normal 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
4
moon/.editorconfig
Normal file
@@ -0,0 +1,4 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
387
moon/ai-guide.md
Normal file
387
moon/ai-guide.md
Normal 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
62
moon/claude.md
Normal 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
1
moon/icon.svg
Normal 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
37
moon/icon.svg.import
Normal 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
|
||||
Reference in New Issue
Block a user