게임은 전장 단일 모드다(D10 이름 "전장", D13). 전장 안에 규칙이 다른 세 가지 경기 방식을 둔다.
| 경기 방식 |
판정 |
한 판 |
거점 |
티켓 |
편제 |
단계 |
| 빠른 점령전 |
채택 — 첫 배포(B1) · 모바일 권장 |
8~12분 (제한 15분) |
3 |
각 300 |
대규모 × 0.5 |
B1 |
| 점령전 |
채택 — 기본 경기 |
18~28분 (제한 35분) |
7 |
각 800 |
대규모(기본, D4) |
B5 |
| 돌파 |
채택 — 세 번째 |
25~35분 |
3구역 × 2 |
공격 600(+구역당 200) / 수비 없음 |
구역별 고정 |
B9 |
| 팀 데스매치 |
제외 |
— |
— |
— |
— |
거점이 없으면 "싸움을 고른다"(P5)가 사라짐 |
| 헬기·전투기 공중전 전용 |
제외 |
— |
— |
— |
— |
전장의 일부로 충분. 지상이 비면 봇 전투가 안 보인다 |
모든 수치의 (추정)은 헤드리스 하니스(기술 설계 9.10)로 확정한다.
[타이틀: 전장 · 설정 · 크레딧]
→ [전장 설정: 경기 방식·맵·진영·병력 규모·난이도·시간대·시드]
→ [배치(첫 출격): 병과·스폰 지점 또는 탈것 슬롯] ← 이때만 전장이 멈춰 있다
→ [전장] ⇄ (탑승·하차, 재보급: 거점 FARP·탄약 상자·재보급 회랑)
→ 사망 → (사망 화면 3초: 누가·무엇으로·거리) → [배치: 10초 대기, 전장은 계속]
→ … 반복 …
→ 경기 종료(티켓 0 / 시간 제한 / 돌파 완료·실패) → [경기 후 보고]
- 첫 배치에서만 전장 시계가 멈춘다. 이후 배치 대기 동안 전장은 계속 돈다 — 죽음의 비용(티켓 + 10초 공백)이 실제로 느껴지게.
- 일시정지(Esc)는 전장 전체를 멈춘다(1인 게임이므로 허용).
경기 포기는 패배 처리.
-
처음 실행이면 전장 설정이 "첫 경기" 기본값으로 채워진다: 빠른 점령전(편제 대규모 × 0.5)·하레크 계곡·연합·쉬움·주간. 사용자가 바꿀 수 있다(UI/UX 8.10).
- 거점은 반경 R = 50m(마을 거점 80m)의 원. 보병이 걸어서 다투는 크기로 줄였다(이전 초안 150m는 아파치 시점 기준). 유닛이 아닌 전장 상태 객체(
ControlPoint)라 동시 유닛 예산에 들어가지 않는다.
- 가운데 깃발 기둥(코드 모델, 12m). 연합 = 사각 깃발, VPA = 삼각 깃발, 중립 = 깃발 없음. 점령 진행에 따라 깃발이 오르내린다. HUD 표식(UI/UX 8.4)도 같은 모양을 쓴다(색만으로 구분하지 않는다).
-
점령 세력(거점 원 안, 살아 있고 탈것 안에 태워져 있지 않은 것):
| 대상 |
세력 |
근거 |
| 봇 분대 |
살아 있는 인원 ÷ 5 (5인 분대 가득 = 1.0, 3인 대공조 = 0.6, 2인 저격조 = 0.4) |
인원 비례 |
| 플레이어 보병 |
0.6 (추정) |
한 사람이 봇 3명 몫. 주인공이 혼자서도 거점을 흔들 수 있되(중립 42초) 분대보다는 느리게 |
| 지상 탈것 (봇·플레이어 조종 모두) |
0.5 |
탑승 보병은 내려야 센다 |
| 헬기·전투기 |
0 |
떠 있는 기체는 점령하지 못한다(P2: 거점 위 호버는 자살) |
-
점령 값
v ∈ [−100, +100](+는 연합). 1Hz로 d = 연합 세력 − VPA 세력:
- 양쪽 다 세력이 있고
|d| < 0.3이면 교전 중(값 고정).
- 아니면
v += 4 × clamp(d, −3, 3) (초당).
-
v가 ±100에 닿으면 소유, 소유 중인 거점은 v가 0을 지나면 중립.
- 결과 시간: 봇 5인 분대 하나로 중립→점령 25초, 적 소유→아군 50초. 플레이어 혼자 42초 / 84초. 세력 3 이상이면 8초 / 17초.
| 항목 |
점령전 |
빠른 점령전 |
근거 |
| 시작 티켓 |
800 |
300 |
아래 길이 추정 |
| 거점 열세 출혈 |
거점이 적은 쪽이 0.1 × (적 거점 수 − 내 거점 수) 티켓/초 |
같음 |
1개 열세 = 분당 6 |
| 시간 제한 |
35분 |
15분 |
한 판 목표 + 여유 |
| 손실 |
티켓 |
근거 |
| 봇 분대원 1명 / 플레이어 보병 사망 |
1 |
사람 한 명 = 1 (배틀필드 관례) |
| 경차량·수송 트럭 |
2 |
전투 가치 비례 |
| 장갑차·방공 차량·본진 고정 대공 |
3 |
|
| 전차·수송 헬기 |
4 |
|
| 공격 헬기·전투기 |
5 |
전장 최강 단일 전력 |
- 탈것 티켓에는 승무원이 포함된다(봇 탈것의 승무원은 따로 세지 않는다). 태워 가던 분대원은 따로 1명당 1(수송 헬기 격추 = 4 + 탑승 인원).
- 티켓은 죽을 때 깎인다(리스폰할 때가 아님).
-
승패: 한쪽 티켓이 0이면 즉시 상대 승리. 시간 제한이면 티켓 많은 쪽 → 거점 많은 쪽 → 무승부.
-
1차 밸런스 (B1-15, 하니스 20시드): 빠른 점령전은 티켓 200·출혈 0.3/초·거점으로 바꿨다(표의 300·0.1은 점령전 값). 봇만으로 한 판 중앙값 약 12분, 대리 헬기가 있으면 약 11분. 결과표는 저장소
docs/battle/baseline.md.
-
구현 메모 (B1-8,
sim/battle/conquest.ts): 점령·출혈·손실·승패는 1Hz. 분대원 손실은 인원이 줄어드는 순간(1초 안) 1명당 1, 봇 탈것은 파괴 순간 분류별 비용. 플레이어 아파치 격추 = 1 + 공격 헬기 5 = 6. 티켓은 소수로 깎이고(출혈 0.1/초) 표시·시간 제한 비교는 내림. 양쪽이 같은 초에 0이 되면 무승부. 경기 방식 수치의 원본은 src/content/battle/modes.json(빠른 점령전은 extends: conquest).
-
한 판 길이 추정(점령전): 봇끼리 소모 진영당 분당 15
25(추정: 분대원 사망 1218 + 탈것 12대), 플레이어가 적에게 더하는 손실 분당 38, 거점 13개 열세 출혈 분당 618. 지는 쪽 분당 약 3045 → 800티켓이면 **1827분**. 빠른 점령전: 편제 절반·출혈 분당 6 → 지는 쪽 분당 약 2535 → 300티켓이면 **912분**.
- 편제에서 빠진 유닛은 30초마다 한 번 파도로 되살린다(티켓이 남아 있을 때만). 봇 분대의 쓰러진 인원은 분대가 전멸하기 전에는 돌아오지 않는다(돌격병 구급 상자 예외, 보병 12.4).
- 스폰 위치: 봇 분대는 교전 중이 아닌 아군 거점 또는 본진, 탈것은 플레이어 역할 2.3 표의 위치.
- 사망 → 티켓 1 차감(탈것을 타고 있었으면 탈것 티켓도) → 사망 화면 3초 → 배치 화면. 대기 10초(추정, 첫 배치 0초).
- 스폰 지점:
| 지점 |
조건 |
무엇으로 |
| 본진 |
항상 |
보병, 모든 탈것 슬롯 |
| 아군 거점 |
아군 소유 + 교전 중 아님 + 적 보병·탈것이 거점 150m 안에 없음 |
보병, 경차량, (FARP 딸린 거점이면) 장갑차 1·헬기 |
| 아군 분대 |
플레이어가 보병일 때, 봇 분대가 교전 중(최근 10초 사격)이 아니고 적이 100m 안에 없음 |
보병(분대 옆 5m) |
|
전방 집결지 (#192, 결정 O9) |
맵에 진영·모드별로 정한 고정 좌표(modes.<mode>.rally), 적이 100m 안에 없음(분대 옆과 같은 열림 조건). 거점이 아니다 — 점령·티켓·지휘관 효용과 무관 |
보병. 보병 첫 배치의 기본 선택. 맵 검사(rally.test.ts): 가장 가까운 비소유 거점 원 ≤ 600m, 주변이 걸을 수 있는 땅, 보병 규칙으로 걸어 닿는 길 ≤ 780m |
| 스폰 비콘 |
정찰병이 설치한 비콘(1개), 적이 30m 안에 없음 |
보병 |
| 전투기 |
본진 상공 공중 출격 |
전투기 |
- 스폰 무적은 없다(소유자 결정). 대신 본진 반경 800m에는 적 지상 봇이 들어오지 않고, 적 본진 방공은 내 본진 이륙 구역에 닿지 않도록 맵을 배치한다(전장 맵 6.2).
- 지상(보병·지상 탈것)과 헬기: 맵의 전투 구역(맵마다 다각형) 밖으로 나가면 경고 + 10초 카운트다운, 넘기면 사망/파괴(티켓 차감). 전투기: 외곽 공역 경계에 같은 규칙. 이 규칙은 추가 결정 A3의 권장안이며 B1에서 헬기부터 적용한다.
- 표준 맵의 일부(하레크 계곡이면 거점 A·D·G와 두 본진이 들어가는 5 × 10km 띠)를 전투 구역으로 쓴다.
- 편제는 대규모의 절반(진영당 분대 10·지상 탈것 7·공격 헬기 1·전투기 1·본진 고정 대공 2), 수송 헬기 없음.
-
B1 첫 배포의 경기 방식. B1에서는 플레이어 탈것이 아파치뿐이고 봇은 지상군만 있다(로드맵).
- 공격 쪽과 수비 쪽을 경기 설정에서 고른다(진영과 별개: 연합 공격/VPA 공격 모두 가능, D8 대칭).
- 맵을 남→북 3구역으로 나누고 구역마다 거점 2개. 공격 쪽이 현재 구역의 두 거점을 동시에 소유하면 구역이 무너진다 → 수비 봇 퇴각, 공격 티켓 +200, 그 구역 거점 잠김, 공격 본진·FARP 전진.
- 공격 티켓 600 시작, 0이면 수비 승리. 마지막 구역 붕괴면 공격 승리. 수비는 티켓 대신 구역마다 편제 고정 + 재보충 파도 3회.
- 뒤 구역일수록 대공망이 두꺼워진다(1구역 방공 차량 1 → 3구역 SAM 2 + 레이더). 전장 안에서 가장 "이야기가 있는" 방식(P4′).
경기 방식 수치는 src/content/battle/modes.json에 둔다(문서 표 → JSON, 이후 밸런스는 JSON에서).
{
"conquest": { "tickets": 800, "bleedPerPointPerSec": 0.1, "timeLimitSec": 2100,
"captureRatePerSec": 4, "captureCap": 3, "contestedBelow": 0.3,
"strength": { "squadPerMember": 0.2, "player": 0.6, "groundVehicle": 0.5, "air": 0 },
"ticketCost": { "person": 1, "light": 2, "apc": 3, "airDefense": 3, "tank": 4, "transportHeli": 4, "attackHeli": 5, "jet": 5 },
"botWaveSec": 30, "playerRespawnSec": 10, "boundaryGraceSec": 10 },
"quickConquest": { "extends": "conquest", "tickets": 300, "timeLimitSec": 900, "rosterScale": 0.5 },
"breakthrough": { "attackerTickets": 600, "sectorBonus": 200, "defenderWavesPerSector": 3 }
}