02 플레이어 역할 - kyhsa93/karda GitHub Wiki
02. 플레이어 역할
소유자 결정 D1(풀 배틀필드): 플레이어는 보병·모든 지상 탈것·헬기·전투기를 직접 조종한다. 이 장은 그 역할들이 어떻게 이어지는지(선택·전환·협력)와, 역할이 많아서 생기는 위험을 어떻게 막는지를 정한다. 탈것별 상세는 보병·지상 탈것·헬기·전투기.
2.1 역할 구조 한눈에
[전장 설정] 진영 선택(연합/VPA) — 경기 동안 고정
↓
[배치 화면] (매 출격마다)
├─ 병과 선택: 돌격 · 공병 · 지원 · 정찰 ← 항상 하나 고른다(탈것에서 내리면 이 병과로 싸운다)
├─ 스폰 선택: 본진 · 아군 거점 · 아군 분대 · 스폰 비콘
└─ 또는 탈것 슬롯: 전차 · 장갑차 · 경차량 · 수송 트럭 · 방공 차량 · 공격 헬기 · 수송 헬기 · 전투기
↓
[전장] 보병 ⇄ 탈것 (월드에서 E로 탑승·하차, 헬기·전투기는 착지 상태에서만 하차)
↓ 사망
[배치 화면] 10초 대기 (전장은 계속 진행)
- 병과는 사람, 탈것은 자리다. 어떤 병과든 어떤 탈것에도 탈 수 있다. 병과는 탈것에서 내렸을 때의 장비를 정한다(예: 공병이 전차에서 내려 전차를 수리한다).
- 탈것 슬롯을 고르면 그 탈것 안에서 태어난다(지상 탈것·헬기는 본진, 헬기는 아군 소유 거점 FARP도 가능, 전투기는 본진 상공 공중 출격). 슬롯은 진영이 가진 탈것 풀에서 나오며 봇과 나눠 쓴다(2.3).
- 진영은 경기 도중 바꾸지 않는다(한 판의 이야기가 한 편에서 흐르도록 — P4′).
2.2 조종 가능한 것 (진영마다 대칭, D8)
| 분류 | 연합 | VPA | 시점 | 조준 | 재사용하는 기존 자산 | 상세 |
|---|---|---|---|---|---|---|
| 보병 | 돌격·공병·지원·정찰 | 같은 4병과(외형·이름만 다름) | 1인칭 | 조준선 + 조준경(ADS) | 발사체 적분 projectile.ts, 시커 stinger.ts(휴대용 대공), 레이저 laser.ts/remoteLasers(정찰 지시기) |
보병 |
| 전차 | 전차 | 전차 | 1인칭 조준경 / 3인칭 추적 | 포탑 = 시선, 탄도 조준 | 탄도 예측 ballistics.ts, 피해 damage.ts, 채택 전차 모델 |
지상 탈것 |
| 장갑차 | 장갑차 | 보병전투차 | 같음 | 같음 + 유선 대전차 미사일 | gun30 무기 정의, 헬파이어 LOBL 유도 |
지상 탈것 |
| 경차량 | 기관총 차량 | 기관총 차량 | 3인칭(운전) / 1인칭(사수) | 사수석 기관총 | 채택 픽업 모델 | 지상 탈것 |
| 수송 트럭 | 수송 트럭 | 수송 트럭 | 3인칭 / 1인칭 | 없음 | 채택 트럭 모델 | 지상 탈것 |
| 방공 차량 | 방공 차량 | 자주대공포 | 1인칭 조준경 / 3인칭 | 레이더 선도 조준점 | airDefenseModels.ts 코드 모델 |
지상 탈것 |
| 공격 헬기 | 아파치(기존 그대로) | 공격 헬기(코드 모델 air, VPA 조종석 코드 신규) |
조종석 + IHADSS / 3인칭 | TADS·FCR·헬멧 시선 기관포 | 비행 모델·무장·TADS·FCR·ASE·조종석 전부 | 헬기 |
| 수송 헬기 | 수송 헬기 | 수송 헬기 | 조종석 / 3인칭 | 없음(플레어만) | 아파치 비행 모델(기체 수치만 다른 airframe JSON) |
헬기 |
| 전투기 | 다목적 전투기 | 다목적 전투기 | 조종석 HUD / 3인칭 | 기관포 선도 조준점, 공대공 시커, 폭탄 CCIP | 시커·유도(stinger.ts·missile.ts), 탄도 예측, ASE 플레어 |
전투기 |
VPA 쪽은 수치가 같고 외형·이름·소리만 다르다(진영·병과·탈것 4.1). 한 벌의 밸런스로 두 진영을 맞추기 위해서다.
2.3 탈것 풀 — 봇과 나눠 쓴다
진영마다 탈것 슬롯이 편제(봇 AI 5.1)에 정해져 있다. 슬롯은 "살아 있음(봇 또는 플레이어가 탐) / 비어 있음(재생성 대기)" 중 하나다.
| 탈것 | 대규모 편제 슬롯 (진영당) | 파괴 후 재생성 (추정) | 스폰 위치 |
|---|---|---|---|
| 전차 | 4 | 90초 | 본진 |
| 장갑차 | 4 | 60초 | 본진, 장갑차 슬롯 1개는 FARP 딸린 거점도 |
| 경차량 | 3 | 30초 | 본진, 아군 거점 |
| 수송 트럭 | 2 | 30초 | 본진 |
| 방공 차량 | 2 | 90초 | 본진 |
| 공격 헬기 | 2 | 120초 | 본진 FARP, 아군 거점 FARP |
| 수송 헬기 | 2 | 90초 | 본진 FARP, 아군 거점 FARP |
| 전투기 | 2 | 120초 | 본진 상공 공중 출격(고도 800m·180m/s) |
- 플레이어가 슬롯을 고르면 그 슬롯의 봇 탈것은 생기지 않는다(재생성 대기 중이던 슬롯을 플레이어가 가져감). 이미 살아 있는 봇 탈것은 뺏지 않는다 — 모든 슬롯이 살아 있으면 그 탈것은 배치 화면에서 회색 + "전부 출격 중".
- 플레이어가 탈것에서 내려 60초 동안 아무도 안 타면(추정) 그 탈것은 봇 소대가 가져간다(지휘관이 가장 가까운 예비 소대에 배정). 버려진 탈것이 전장에 쌓이지 않게.
- 탈것 파괴 티켓은 탄 사람과 무관하게 탈것 값이다(게임 모드 3.3). 플레이어가 타고 있었으면 플레이어 사망 티켓 1이 더해진다.
2.4 "얕은 탈것"을 막는 최소 손맛 목록
풀 배틀필드의 가장 큰 위험은 탈것 여덟 종이 모두 "덜 만든" 느낌이 되는 것이다. 각 탈것 작업은 아래 항목을 전부 만족해야 끝난다(로드맵 완료 조건에 그대로 들어간다).
| 탈것 | 최소 손맛 목록 |
|---|---|
| 보병 | 달리기·질주·앉기·엎드리기가 발견 확률과 명중에 차이를 만든다 / 반동·탄 퍼짐·재장전 중 무방비 / 헤드샷 / 피격 방향 표시 / 엄폐물 뒤에서 머리만 내밀어 쏠 수 있다 |
| 전차 | 포탑과 차체가 따로 돈다 / 주포 탄도 낙차와 비행 시간이 보인다 / 측·후면 명중 피해 증가 / 재장전 5초가 교전 리듬을 만든다 / 조준경 배율 2단 |
| 장갑차 | 보병을 태우고 거점 앞에 내려 준다 / 30mm 연사가 보병·경차량에 강하고 전차에 약하다 / 대전차 미사일 2발은 조준을 유지해야 맞는다 |
| 경차량 | 가장 빠르다(도로 28m/s) / 운전과 사격이 좌석으로 나뉜다 / 한 방에 부서질 만큼 약하다 |
| 수송 트럭 | 봇 분대를 태워 거점 앞에 내려 주면 점령이 빨라진다(탑승 규칙은 봇 AI 5.4) |
| 방공 차량 | 레이더가 공중 표적을 잡아 선도 조준점을 준다 / 지상 표적에는 약하다 |
| 공격 헬기 | 기존 아파치의 비행 모델·TADS·FCR·헬파이어·로켓·기관포·대응책 전부 |
| 수송 헬기 | 무겁고 느린 자세 반응 / 봇 분대 2개를 태워 강습 착륙 / 착륙 중이 가장 취약 |
| 전투기 | 속도·실속·G 제한 / 기관포 선도 조준점 / 공대공 시커 잠금음 / 폭탄 CCIP / 대공망에 쫓길 때 플레어·저공 회피 |
2.5 역할 사이의 연결 — 혼자서도 "팀 플레이"
다른 사람이 없으므로 역할 사이의 협력은 플레이어 ↔ 봇으로 만든다. 모두 D5(지휘 권한 = 지원 요청 수락 + 집중 거점 1개) 안에서 자동 규칙으로 돌며, 봇에게 직접 명령하지 않는다.
| 플레이어가 하는 것 | 봇이 반응하는 것 | 기존 자산 |
|---|---|---|
| 정찰병이 레이저로 적 전차를 지시 | 아군 봇 공격 헬기·전투기가 20초 안에 그 지점을 공격 대상 1순위로(사거리 안이면 헬파이어·폭탄) | remoteLasers, 헬파이어 레이저 유도 |
| 아파치 TADS로 적을 식별 | 팀 스폿 20초 — 모든 아군 봇이 표적 후보에 넣고, 플레이어 HUD에 표식 | identify, 레이저 |
| 수송 트럭·장갑차·수송 헬기를 거점 근처 아군 지점에 세운다 | 공격 명령을 받은 가장 가까운 봇 분대가 자동 탑승, 목표 거점 300m 안에 서면 자동 하차 | 신규 cargo.ts |
| 공병이 봇 전차 옆에서 수리 | 봇 전차 체력 회복, 그 봇 전차는 수리 동안 멈춘다 | 신규 |
| 지원병이 탄약 상자를 놓는다 | 반경 15m 봇 분대의 발사율 페널티(탄약 부족 상태) 해제 | 신규 |
| 돌격병이 구급 상자를 놓는다 | 반경 15m 봇 분대의 쓰러진 인원 1명을 15초마다 복귀 | 신규 |
| 지원 요청 수락(무전) | 요청한 소대가 연막으로 적 위치 표시, 해결하면 보너스 | 기존 smoke 행동 |
| 집중 거점 지정 | 진영 지휘관이 그 거점 공격 가중치 +0.8(90초 쿨다운) | 신규 commander.ts |
2.6 비용·위험과 완화 (D1 기준)
| 항목 | 규모 (추정) | 위험 | 완화 |
|---|---|---|---|
| 새 코드 | 약 9,600줄(sim 약 5,200 · render 약 2,000 · ui 약 2,200 · save 약 200) | 캠페인 제거 뒤 남는 아파치 코드와 섞여 복잡도 폭증 | 탈것별 모듈(sim/infantry, sim/vehicles, sim/jet) + 공통 sim/avatar 인터페이스(기술 설계 9.2), 아키텍처 테스트로 의존 방향 고정 |
| 작업 수 | 92개(10개 마일스톤) | 끝이 안 보임 | 마일스톤마다 배포 가능, 앞 마일스톤만으로도 게임이 성립 |
| 외부 에셋 | 보병 애니메이션·전투기·수송 헬기 모델·보병/전차/제트 소리 | 채택 목록에 없음 | 코드 폴백을 기본으로 구현하고, 후보 조사는 비차단 작업(외부 에셋) |
| 모바일 조작 | 네 벌 | 44/48px 규칙과 버튼 과밀 | 공통 뼈대 + 탈것별 ≤ 8버튼, 쓰지 않는 버튼은 숨김 |
| 성능 | 인형 수백·탈것 40대·전투기 | 모바일 30fps 실패 | 분대 단위 sim, 인형 LOD, 모바일 low 예산, 측정 후 조정(D4 — 추가 결정 A9) |