17 KiB
Northbound 프로토타입 개발 로드맵
목적
이 문서는 현재 구현된 프로토타입을 다음 핵심 경험을 검증할 수 있는 10~15분 플레이 빌드로 전환하기 위한 개발 순서를 정의한다.
방어선을 이용해 북진할 시간을 만들고, 적 포탈을 파괴해 다음 웨이브를 약화하며, 그 자리에 아군 포탈을 재건해 작전 범위를 확장한다.
완성된 콘텐츠 양보다 아래 질문에 답하는 것을 우선한다.
- 방어선이 안정된 순간 플레이어가 자발적으로 북진하는가?
- 적 포탈 수와 이후 웨이브 난도의 관계를 이해하는가?
- 적 포탈 파괴가 즉각적인 성취와 미래의 이득으로 느껴지는가?
- 중간 아군 포탈이 파괴되었을 때 연결 단절이 의미 있는 위기가 되는가?
- 일반 공격과 특수 공격만으로 실시간 판단이 충분히 발생하는가?
- 타워가 전투를 대신하지 않고 플레이어가 북진할 시간을 벌어주는가?
현재 기반과 전환 대상
재사용할 기반
- Unity Netcode 기반 플레이어·적·건물 동기화
- 90초
GlobalTimer와 웨이브 시작 이벤트 - 적 생성 예산과 5종의 기본 적 데이터
- 체력, 피격, 파괴가 가능한
EnemyPortal - 좌클릭 일반 공격과 네트워크 피해 처리
TeamGate의 양방향 트리거, 팀 검사, 순간이동, 재진입 방지 코드Core, 타워, 시야, 건설 기초 코드- 세로로 긴 맵과 안개 시스템
프로토타입에서 우선 비활성화할 기존 기능
삭제하지 않고 프로토타입 씬에서만 비활성화한다.
- 일꾼 고용과 개별 일꾼 관리
- 반복적인 수동 채취와 자원 운반
- 자유로운 그리드 건설과 최대 50개 드래그 건설
- 5단계 타워·벽 업그레이드
- 무작위 자원 8~12개와 대량의 무작위 크립 캠프
- 블랙스미스의 복잡한 업그레이드 목록
새 핵심 루프가 검증되기 전에는 기존 기능을 삭제하거나 대규모로 정리하지 않는다. 프로토타입 결과에 따라 재사용 여부를 결정한다.
목표 프로토타입 구성
남쪽
본진 + 아군 시작 포탈 P0
│
첫 크리스탈 + 중간 포탈 P1
│
두 번째 크리스탈 + 중간 포탈 P2
│
세 번째 크리스탈 + 주 포탈 P3
북쪽
- P0는 처음부터 아군 포탈이다.
- P1과 P2는 적 포탈로 시작하며 파괴 후 아군 포탈로 재건할 수 있다.
- P3는 최종 주 포탈이며 파괴하면 승리한다. 프로토타입에서는 아군 포탈로 재건하지 않는다.
- 포탈은 고정된 인접 포탈하고만 연결된다.
- P1이 파괴되면 P0와 P2는 직접 연결되지 않는다.
- 포탈망이 끊겨도 모든 구간은 걸어서 이동할 수 있다.
- P1, P2, P3의 활성 적 포탈 수가 포탈 공명 단계가 된다.
시스템 의존 순서
기준 씬 정리
→ 포탈 부지와 상태
→ 인접 포탈 이동
→ 활성 적 포탈 집계
→ 포탈 공명
→ 웨이브 구성 분리
→ 일반·특수 공격 정리
→ 크리스탈과 제한 건설
→ 세로 구간 배치
→ UI·연출
→ 멀티플레이 밸런스 검증
각 단계는 다음 단계에 필요한 최소 기능만 구현한다. 시각 연출과 범용화는 해당 시스템이 실제 플레이에서 유효하다고 확인된 뒤 진행한다.
단계 0. 기준선 고정과 프로토타입 씬 분리
목표
기존 기능을 보존하면서 새 루프를 안전하게 시험할 수 있는 기준선을 만든다.
작업
- 현재
GameMain을 기준으로 별도의 프로토타입 씬을 준비한다. - 호스트와 클라이언트가 접속하고 플레이어·적·포탈이 정상 동기화되는지 확인한다.
- 기존 90초 웨이브와 적 포탈 파괴가 정상 동작하는지 기록한다.
- 프로토타입 씬에서 일꾼, 블랙스미스, 자유 건설 UI, 대량 맵 생성을 비활성화한다.
- 테스트 로그에서 웨이브 번호, 적 포탈 수, 생성 적 수를 확인할 수 있게 한다.
완료 조건
- Unity 컴파일 오류가 없다.
- 호스트 1명과 클라이언트 1명이 같은 전투를 진행할 수 있다.
- 기존 기능을 삭제하지 않고 단순한 테스트 공간이 실행된다.
단계 1. PortalSite 상태 모델
목표
적 포탈 오브젝트 자체가 사라지는 현재 구조를 고정된 포탈 부지가 상태를 관리하는 구조로 변경한다.
작업
- 네트워크 동기화되는
PortalSite를 만든다. - 포탈 상태를
Enemy,Ruined,Allied로 제한한다. - 각 부지에 고정된 순서 인덱스와 북쪽·남쪽 이웃 참조를 둔다.
- 기존
EnemyPortal의 체력, 적 생성, 피해 처리를 적 상태에서 재사용한다. - 적 포탈 체력이 0이 되면 부지까지 제거하지 않고
Ruined로 전환한다. - 폐허에서 공용 마나를 지불하고 아군 포탈을 건설할 수 있게 한다.
- 아군 포탈이 파괴되면 점거 단계 없이 즉시
Ruined가 되게 한다. - P3 주 포탈 파괴 이벤트를 승리 조건에 연결할 수 있게 분리한다.
완료 조건
- 서버에서 바뀐 포탈 상태가 모든 클라이언트에 동일하게 표시된다.
Enemy → Ruined → Allied → Ruined전환이 가능하다.- 적 포탈을 파괴해도 부지와 연결 정보는 사라지지 않는다.
- 포탈 상태 사이에 점거, 해킹, 불안정 같은 추가 상태가 없다.
단계 2. 방향 기반 인접 포탈 이동
목표
별도의 목적지 UI 없이 진입 방향으로 북쪽 또는 남쪽의 인접 아군 포탈로 이동한다.
작업
TeamGate의 트리거 판정과 순간이동 코드를 재사용한다.- 북쪽으로 포탈 중심을 통과하면 북쪽 이웃을 선택한다.
- 남쪽으로 통과하면 남쪽 이웃을 선택한다.
- 현재 포탈과 목적지 포탈이 모두
Allied일 때만 이동한다. - 중간 부지가 폐허이면 그 너머의 포탈로 건너뛰지 않는다.
- 도착 후 짧은 재진입 방지만 적용한다.
- 연결되지 않은 방향은 포탈의 화살표나 조명으로 확인할 수 있게 한다.
필수 테스트
P0 Allied - P1 Allied - P2 Allied
→ P0 ↔ P1 ↔ P2 이동 가능
P0 Allied - P1 Ruined - P2 Allied
→ P0와 P2 직접 이동 불가
→ 걸어서 P2까지 이동 가능
완료 조건
- 호스트와 클라이언트 모두 같은 연결 규칙을 따른다.
- P1 파괴와 재건에 따라 P0–P2 연결이 끊기고 복구된다.
- 목적지 선택창이나 별도의 포탈 상호작용 버튼이 필요하지 않다.
단계 3. 포탈 공명
목표
활성 적 포탈 수가 해당 웨이브 적의 전투 스펙에 영향을 준다.
작업
- 서버 권한의 포탈 레지스트리 또는
PortalNetworkManager를 만든다. - 현재 활성 적 포탈 수를 네트워크로 공유한다.
- 웨이브 시작 시 적 포탈 수를 공명 단계로 기록한다.
- 해당 웨이브에서 생성되는 적에게 공명 배율을 적용한다.
- 공명은 최대 체력, 공격력, 제한적인 경직 저항에만 적용한다.
- 이동 속도와 공격 속도는 변경하지 않는다.
- 배율은 합연산이며 최대 단계를 제한한다.
- 포탈 본체와 포탈 수비대에는 공명을 적용하지 않는다.
- 프로토타입 수치는 코드 상수가 아니라 조정 가능한 데이터로 둔다.
초기 테스트 수치
| 활성 적 포탈 | 체력 | 공격력 |
|---|---|---|
| 0 | +0% | +0% |
| 1 | +10% | +6% |
| 2 | +20% | +12% |
| 3 | +30% | +18% |
이 수치는 확정 밸런스가 아니라 체감 검증을 위한 시작점이다.
완료 조건
- 동일한 적이 공명 단계에 따라 예상한 체력과 공격력을 갖는다.
- 웨이브 도중 포탈을 파괴해도 이미 생성된 적의 능력치는 갑자기 바뀌지 않는다.
- 포탈 파괴 후 다음 웨이브에서 약화가 체감된다.
- 공명 최대 상태에서도 포탈 수비대를 뚫고 상황을 회복할 수 있다.
단계 4. 웨이브 단계와 포탈 공명 분리
목표
웨이브 단계와 포탈 공명이 서로 다른 역할을 갖게 한다.
규칙
- 웨이브 단계: 적 수, 적 종류, 구성, 출현 포탈을 결정한다.
- 포탈 공명: 생성된 적의 체력과 공격력을 결정한다.
- 적 포탈 파괴는 웨이브 단계를 되돌리지 않는다.
- 별도의 적대 둥지나 북진해서 제거해야 하는 추가 시설은 만들지 않는다.
작업
- 현재 포탈별
currentCost증가를 전역 웨이브 예산으로 이동한다. - 웨이브별 예산과 적 구성 규칙을 데이터로 분리한다.
- 기존 5종 적을 사용해 단계별 구성을 만든다.
- 초기에는 일반·탱커·원거리·고속·정예 외의 적을 추가하지 않는다.
- 파괴된 적 포탈에서는 더 이상 적이 생성되지 않게 한다.
- 남은 적 포탈 사이에 웨이브 예산을 분배한다.
- 모든 적 포탈이 파괴되었을 때의 종료 흐름을 명확히 한다.
완료 조건
- 공명 단계가 같아도 웨이브가 진행되면 적 구성과 총압력이 증가한다.
- 웨이브 단계가 같아도 적 포탈을 파괴하면 다음 웨이브 개체 스펙이 낮아진다.
- 방어만 계속할 경우 웨이브 압력 때문에 장기적으로 한계가 발생한다.
- 북진하면 상승한 웨이브 단계를 감당할 여지가 생긴다.
단계 5. 두 버튼 전투 정리
목표
좌클릭 일반 공격과 우클릭 특수 공격만으로 위치, 대상, 사용 시점 판단을 검증한다.
작업
- Player 액션 맵에
SpecialAttack을 추가하고 우클릭에 연결한다. - 일반 공격의 원형 전체 판정을 전방 범위 판정으로 변경한다.
- 마우스 위치를 기준으로 공격 방향을 결정한다.
- 이동 방향과 공격 방향을 분리한다.
- 일반 공격 중 이동 차단 시간을 최소화한다.
- 특수 공격은 한 종류만 구현한다.
- 특수 공격은 마나 또는 재사용 대기시간 중 한 자원만 사용한다.
- 공격 판정과 자원 소비를 서버에서 검증한다.
- 회피, 방어, 패리, 복잡한 콤보는 추가하지 않는다.
첫 전투안
- 일반 공격: 짧은 전방 부채꼴 공격
- 특수 공격: 마나를 소비하는 긴 직선 충격파
완료 조건
- 일반 공격은 안정적인 지속 공격으로 사용된다.
- 특수 공격은 정예, 밀집 적, 포탈 공격 중 사용 시점을 고민하게 한다.
- 공격 입력보다 위치와 대상 선택이 생존에 더 큰 영향을 준다.
- 네트워크 지연 상황에서도 중복 피해나 중복 자원 소비가 없다.
단계 6. 크리스탈과 최소 경제
목표
반복 채취와 일꾼 관리 없이 북진과 경제 성장을 연결한다.
작업
- 본진 크리스탈에서 낮은 기본 마나를 자동 생산한다.
- 맵에 고정된 외부 크리스탈 3개를 배치한다.
- 주변 적을 제거하고 거점을 건설하면 자동 생산을 시작한다.
- 마나는 팀 공용 자원으로 사용한다.
- 외부 크리스탈은 포탈 재건과 기본 타워 건설에 필요한 성장을 제공한다.
- 수동 채집, 개인 운반, 일꾼 배정을 프로토타입 씬에서 비활성화한다.
- 마나 저장 한도는 바로 구현하지 않고 플레이테스트 후 결정한다.
완료 조건
- 시작 직후 중요한 투자 하나를 선택할 수 있다.
- 기본 수입만으로 최소 방어는 가능하다.
- 빠른 포탈 재건과 추가 방어를 위해 외부 크리스탈 확보가 필요하다.
- 기다리는 시간보다 북진과 거점 확보가 더 높은 성장 효율을 제공한다.
단계 7. 제한 방어 슬롯과 기본 타워
목표
타워가 웨이브를 대신 처리하지 않고 플레이어가 복귀할 시간을 번다.
작업
- 자유 그리드 건설 대신 크리스탈 거점 주변에 고정 슬롯을 둔다.
- 거점당 방어 슬롯은 1~2개로 제한한다.
- 프로토타입에서는 기본 공격 타워 1종만 사용한다.
- 기존 Arrow Tower Lv.1을 시작점으로 화력과 사거리를 재조정한다.
- 타워의 목적을 처치보다 지연과 약한 적 정리로 맞춘다.
- 벽 5단계, 타워 5단계, 드래그 건설은 비활성화한다.
- 정찰 역할은 시야·경보 중심으로 최소 구현한다.
완료 조건
- 타워만으로 전체 웨이브를 안정적으로 해결할 수 없다.
- 타워가 없는 전선보다 플레이어의 복귀 시간이 유의미하게 늘어난다.
- 슬롯 제한 때문에 모든 지역을 동시에 완벽하게 방어할 수 없다.
단계 8. 의미 있는 세로 구간 배치
목표
긴 맵이 빈 이동 공간이나 무작위 오브젝트 집합이 되지 않게 한다.
작업
- 무작위 자원·크립 캠프 대량 생성을 제거하고 고정 구간으로 교체한다.
- 본진, 첫 확장, P1, 위험 자원, P2, 포탈 전초, P3의 구분이 보이게 한다.
- 각 구간의 전투와 이동 시간을 측정한다.
- 전체 가로 영역이 화면에 들어오는 카메라 폭을 검증한다.
- 플레이어를 화면 아래쪽에 두어 북쪽 시야를 더 많이 제공한다.
- 확보한 크리스탈과 아군 포탈이 남북 연결망으로 보이게 한다.
- 관측소, 대장간, 성소 같은 추가 기능 시설은 이 단계에서 추가하지 않는다.
완료 조건
- 약 60~90초마다 전투, 확보, 재건, 이동 중 하나의 사건이 발생한다.
- 각 포탈 구간이 시각적으로 구분된다.
- 본진에서 주 포탈까지의 진행이 10~15분 테스트 런에 맞는다.
- 북쪽으로 이동할수록 이전에 확보한 연결망이 성취의 기록으로 보인다.
단계 9. 정보 전달과 최소 연출
목표
전투 흐름을 방해하지 않으면서 포탈 상태와 공명을 이해할 수 있게 한다.
작업 순서
- 개발용 텍스트로 현재 웨이브, 적 포탈 수, 공명 단계를 표시한다.
- 포탈별 적·폐허·아군 상태와 연결 방향을 표시한다.
- 적 포탈과 강화된 적에 같은 공명 문양을 적용한다.
- 적 포탈 파괴 시 공명 단계 감소를 확인시킨다.
- 웨이브 시작 시 중앙 배너 대신 기존 공명 표시의 짧은 맥동을 시험한다.
- 포탈 공명음과 웨이브 시작 음향을 추가한다.
원칙
- 공명 상태는 필요할 때 항상 확인할 수 있어야 한다.
- 웨이브마다 중앙 화면을 가리는 알림은 필수로 사용하지 않는다.
- 시각, 음향, UI 중 하나만으로 정보를 전달하지 않는다.
- 연출의 강도와 형태는 플레이테스트 과정에서 조정한다.
완료 조건
- 처음 플레이하는 사람이 적 포탈 수와 적 강화의 관계를 설명할 수 있다.
- 포탈 연결이 끊어진 방향을 이동 시도 전에 알 수 있다.
- 웨이브 시작 알림이 전투 시야나 조작을 방해하지 않는다.
단계 10. 완주·멀티플레이·밸런스 검증
목표
전체 루프를 1인, 2인, 4인 환경에서 반복 검증한다.
필수 테스트
- 1인 호스트 완주
- 호스트 + 클라이언트 1명 완주
- 4인 연결과 역할 분담
- 웨이브 중 적 포탈 파괴
- 아군 중간 포탈 파괴와 재건
- P1 단절 상태에서 P0와 P2 이동 차단
- 플레이어가 북쪽에 고립된 상태에서 걸어서 귀환
- 공명 3단계와 1단계의 동일 적 전투 비교
- P3 파괴 시 승리
- 코어 파괴 시 패배
기록할 지표
- 첫 북진을 시작한 시간
- 각 적 포탈의 파괴 시간
- 아군 포탈 재건 여부와 시점
- 플레이어가 본진과 전방에 머문 시간
- 타워가 플레이어 없이 버틴 시간
- 웨이브별 본진·거점 피해량
- 일반 공격과 특수 공격 사용 비율
- 실패 원인이 판단 부족인지 조작 난도인지
프로토타입 완료 조건
- 플레이어가 방어만 반복하지 않고 자발적으로 북진한다.
- 적 포탈을 파괴할수록 이후 웨이브가 약해졌다고 느낀다.
- 포탈 재건이 이동과 후방 대응을 실제로 개선한다.
- 중간 포탈 단절이 불편하지만 게임 진행을 막지는 않는다.
- 전투가 두 버튼만으로 이해되면서도 대상·위치·특수 공격 판단이 발생한다.
- 타워가 시간을 벌지만 플레이어 없이 승리하지는 못한다.
- 한 판이 10~15분 안에 명확한 승리 또는 패배로 끝난다.
프로토타입 이후로 미룰 항목
- 마나 저장 한도와 복잡한 경제 제약
- 여러 영웅과 다수의 무기
- 회피, 방어, 패리, 복잡한 콤보
- 많은 타워와 다단계 업그레이드
- 관측소, 대장간, 성소 등 추가 기능 시설
- 적의 포탈 재점령과 재건
- 점거, 해킹, 불안정 포탈 상태
- 별도의 적대 둥지와 북진 전용 위협 시설
- 정교한 포탈 공명 UI와 대규모 연출
- 메타 성장과 장기 콘텐츠
구현 원칙
- 네트워크 게임 상태는 서버가 결정하고 클라이언트는 표현한다.
- 데이터 수치는 ScriptableObject 또는 조정 가능한 설정에 둔다.
- 각 단계는 디버그 표현으로 먼저 검증한 뒤 시각 연출을 추가한다.
- 새 시스템이 기존 시스템과 충돌하면 기존 기능을 즉시 삭제하지 말고 프로토타입 씬에서 비활성화한다.
- 단계별 완료 조건을 통과하기 전에는 다음 콘텐츠를 늘리지 않는다.