# Northbound Unity 6 기반 4인 협동 액션 전략 게임입니다. 플레이어는 북쪽으로 탐험하며 크리스탈 거점을 연결하고, 정기적으로 남하하는 적에 대응합니다. ## Unity - Editor: Unity 6000.5.9f1 - Render pipeline: URP - Networking: Netcode for GameObjects - Main scene: `Assets/Scenes/GameMain.unity` - Gameplay prototype: `Assets/NorthboundPrototype/Scenes/NorthboundGameplayPrototype.unity` ## 새 게임 플레이 프로토타입 `NorthboundGameplayPrototype` 씬을 열고 Play한 뒤 `Host`를 누르면 단독 테스트를 시작할 수 있습니다. 별도 에디터나 빌드에서 같은 씬을 실행하고 `Client`를 누르면 로컬 4인 네트워크 테스트가 가능합니다. - 이동: WASD - 일반 공격: 좌클릭 - 마나 특수 공격: 우클릭 - 포탈 재건, 크리스탈 확보, 고정 타워 슬롯 건설: E 프로토타입 전체는 `Assets/NorthboundPrototype`에 격리되어 있습니다. 기존 `GameMain`과 기존 데이터/프리팹은 보존되며, 씬과 생성 프리팹을 다시 만들려면 Unity 메뉴의 `Northbound > Build Gameplay Prototype`을 실행합니다. ## 개발 문서 - 현재 디자인 기준: `AGENTS.md` - 프로토타입 개발 순서와 단계별 완료 조건: `PROTOTYPE_ROADMAP.md` ## 게임 데이터 작업 게임 데이터는 ScriptableObject가 단일 원본입니다. Notion, CSV, 코드 생성기를 거치지 않습니다. 데이터 위치: - 건물: `Assets/Data/ScriptableObjects/Tower` - 몬스터: `Assets/Data/ScriptableObjects/Monster` - 크립: `Assets/Data/ScriptableObjects/Creep` - 플레이어: `Assets/Data/ScriptableObjects/Player` - 업그레이드: `Assets/Data/ScriptableObjects/Upgrade` - 공통 설정: `Assets/Data/ScriptableObjects/DefaultSettings` 새 데이터는 Project 창의 `Create > Northbound` 메뉴에서 생성하고 Inspector에서 직접 편집합니다. 기존 데이터 클래스는 `Assets/Data/Scripts/DataClasses`에서 수동 관리합니다. 업그레이드는 `GameMain` 씬의 `UpgradeDatabase` 컴포넌트에 명시적으로 등록합니다. 건물은 같은 씬의 `BuildingManager.availableBuildings`에 등록합니다. 런타임 폴더 검색이나 데이터 사본은 사용하지 않습니다. 수정 후 `Tools > Northbound > Data > Validate All ScriptableObjects`를 실행해 ID 중복, 누락 참조, 잘못된 수치와 업그레이드 연결을 검사합니다. ## 데이터 변경 원칙 - 기존 `.asset`을 삭제 후 재생성하지 않습니다. 참조 GUID를 보존하기 위해 기존 SO를 직접 수정합니다. - ID는 데이터 타입 안에서 고유한 양의 정수로 유지합니다. - 필드 이름 변경 시 기존 직렬화 데이터를 보존하도록 `FormerlySerializedAs`를 사용합니다. - 프리팹이나 다른 데이터 참조는 문자열 경로보다 Unity 오브젝트 참조를 우선합니다. - 대량 밸런스 편집 도구가 다시 필요해지기 전까지 외부 데이터 원본을 추가하지 않습니다.