ProjectDDD/.junie/guidelines.md
2025-08-19 17:22:50 +09:00

55 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 프로젝트 가이드라인 — ProjectDDD (Unity)
이 저장소는 주로 Unity 에디터를 통해 편집 및 실행됩니다. 코드는 Unity의 .NET/Mono 환경을 대상으로 하며, 컴파일은 일반적인 `dotnet` CLI 빌드가 아니라 대개 Unity가 주도합니다.
## 저장소 레이아웃(상위 수준)
- `Assets/` 게임 콘텐츠와 스크립트. 대부분의 수정은 여기서 이루어집니다.
- `Packages/` Unity 패키지 매니페스트와 임베디드 패키지.
- `ProjectSettings/``UserSettings/` Unity 설정. 지시가 없는 한 수동으로 수정하지 마십시오.
- `Library/`, `Temp/`, `obj/`, `Logs/` Unity/IDE가 생성. 이 디렉터리는 수정하거나 커밋하지 마십시오.
- `ServerData/`, `Docs/` 프로젝트별 데이터와 문서가 있다면 여기에 있습니다.
- 다수의 `*.csproj` 파일 Rider/IDE 지원을 위한 자동 생성 파일; 특별히 필요하지 않는 한 수동 수정 금지.
## 이 프로젝트에서 Junie의 작업 방식
- 문제를 직접 해결하는 최소하고도 목표 지향적인 코드 변경을 선호합니다.
- Unity가 생성한 폴더들(`Library/`, `Temp/`, `obj/`, `Logs/`)이나 패키지 캐시 내용은 수정하지 않습니다.
- 새로운 스크립트는 `Assets/` 아래 적절한 도메인 폴더에 배치합니다. `_DDD/_Scripts` 하위의 기존 폴더 규칙을 유지합니다.
- `.csproj` 파일은 수정하지 않습니다. Unity가 재생성합니다.
- Addressables를 다룰 때는 그룹 설정을 일관되게 유지하고 의도치 않은 대용량 데이터 변경을 커밋하지 않습니다.
## 빌드, 실행, 테스트
- 기본 실행 환경은 Unity Editor/Player입니다. 독립 실행형 단위 테스트가 없을 수 있습니다.
- 작업이 명시적으로 요구하지 않는 한 .NET 테스트 러너나 CLI 빌드를 시도하지 말고, 컴파일은 Unity에 맡기십시오.
- 코드를 추가할 때는 Unity에서 컴파일 가능한지 확인하십시오(런타임 코드에서 에디터 전용 API 직접 호출 금지, 네임스페이스 올바름, 사용할 수 없는 API 사용 금지).
- 본 문서와 같은 순수 문서/설정 작업에서는 빌드가 필요 없습니다.
## 코딩 및 스타일 가이드(C#/Unity)
- 표준 C# 컨벤션을 따르십시오: 공용 타입과 멤버는 PascalCase, 지역 변수와 매개변수는 camelCase.
- private 직렬화 필드는 `[SerializeField] private Type _fieldName;` 형태를 선호하고, 필요 시 프로퍼티로 노출하십시오.
- Unity API 호출은 메인 스레드에서 수행하십시오. `Update`/`FixedUpdate` 내부의 과도한 할당을 피하십시오.
- `async`/`await`는 신중하게 사용하십시오. 대부분의 엔진 API 호출에는 Unity 메인 스레드 동기화가 필요합니다.
- 거대한 모놀리식 구조보다 작은, 역할에 집중된 컴포넌트 구성을 선호합니다. 프로젝트의 DDD 경계를 준수하십시오.
- null 체크와 가드 절을 추가하고, 개발 빌드에서는 명확한 메시지와 함께 빠르게 실패하도록 하십시오.
## Addressables 및 리소스
- `Addressables.LoadAssetAsync<T>`로 로드하고, 사용 후 핸들을 해제하여 누수를 방지하십시오.
- 일반 게임 플레이 코드에서 Addressable 그룹을 프로그래밍적으로 수정하지 마십시오. 그룹/라벨 변경은 명시적으로 필요하지 않는 한 에디터에서 수행하십시오.
## 수정 금지(명시적 지시가 없는 한)
- `Library/`, `Temp/`, `obj/`, `Logs/`, 그리고 `Library/PackageCache/` 아래의 Unity 패키지 캐시.
- 루트의 자동 생성 `*.csproj` 파일.
- 작업과 무관한 대용량 바이너리 에셋.
## 자동화 작업의 완료 정의
- 이슈를 완전히 충족하는 최소 변경을 제공합니다.
- 각 응답에 계획, 진행 상황, 다음 단계를 포함한 `<UPDATE>`를 포함합니다.
- 코드가 변경되었다면, 에지 케이스를 고려하고 런타임 경로에서 에디터 전용 API 사용을 피하십시오.
- 제출 전에 의도치 않은 파일(특히 생성 디렉터리와 Addressable 그룹)이 수정되지 않았는지 확인하십시오.
## 깃
- 깃 커밋 시, 한국어로 커밋 메시지를 작성합니다.
- 깃 커밋 메시지는 간결하고 핵심 정보만 포함해야 합니다.
- 사용자의 명시적인 요청 없이 변경 내용을 커밋하지 않습니다.
## 계획 및 추론
- 계획, 실행 및 추론 내용을 한국어로 사용자에게 표시합니다.