# 프로젝트 가이드라인 — 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`로 로드하고, 사용 후 핸들을 해제하여 누수를 방지하십시오. - 일반 게임 플레이 코드에서 Addressable 그룹을 프로그래밍적으로 수정하지 마십시오. 그룹/라벨 변경은 명시적으로 필요하지 않는 한 에디터에서 수행하십시오. ## 수정 금지(명시적 지시가 없는 한) - `Library/`, `Temp/`, `obj/`, `Logs/`, 그리고 `Library/PackageCache/` 아래의 Unity 패키지 캐시. - 루트의 자동 생성 `*.csproj` 파일. - 작업과 무관한 대용량 바이너리 에셋. ## 자동화 작업의 완료 정의 - 이슈를 완전히 충족하는 최소 변경을 제공합니다. - 각 응답에 계획, 진행 상황, 다음 단계를 포함한 ``를 포함합니다. - 코드가 변경되었다면, 에지 케이스를 고려하고 런타임 경로에서 에디터 전용 API 사용을 피하십시오. - 제출 전에 의도치 않은 파일(특히 생성 디렉터리와 Addressable 그룹)이 수정되지 않았는지 확인하십시오. ## 깃 - 깃 커밋 시, 한국어로 커밋 메시지를 작성합니다. - 깃 커밋 메시지는 간결하고 핵심 정보만 포함해야 합니다. - 사용자의 명시적인 요청 없이 변경 내용을 커밋하지 않습니다. ## 계획 및 추론 - 계획, 실행 및 추론 내용을 한국어로 사용자에게 표시합니다.