15 전투기 - kyhsa93/karda GitHub Wiki
15. 전투기
D7: 전투기는 처음부터 플레이어가 조종한다. 이 장은 단순화한 비행 모델, 무장, 12km 맵이 좁은 문제, 대공 위협과 P2(지형이 무기다)의 관계를 정한다.
15.1 목표와 위험
- 판타지: 빠른 속도로 전장을 가로지르며 적 헬기를 잡고, 적 기갑에 폭탄을 떨어뜨리고, 대공망을 플레어로 피해 빠져나간다.
- 위험 1 — 맵이 좁다: 240m/s면 12km를 50초에 건넌다. 선회 반지름(7G, 200m/s)은 약 580m. 12km 안에서만 날면 매번 경계에 부딪힌다.
- 위험 2 — P2가 죽는다: 전투기가 저공 헬기를 마음대로 잡으면 "능선 뒤에 숨는" 헬기 전술이 무의미해진다.
- 위험 3 — 너무 세다: 폭탄 한 번에 거점 방어가 무너지면 지상전이 무의미.
- 아래 설계가 세 위험을 각각 막는다(15.3, 15.5, 15.6·15.7).
15.2 비행 모델 — sim/jet/flight.ts
실제 공력 대신 속도·G 제한 기반의 단순 모델(아케이드와 시뮬레이터 사이). sim 층, 120Hz, 결정론.
| 항목 |
값 (추정) |
설명 |
| 상태 |
위치, 속도 벡터, 자세(쿼터니언), 스로틀, 연료 없음(한 출격 시간은 탄약이 제한) |
|
| 입력 |
피치 · 롤 · 러더 · 스로틀(0~1, 끝 10% = 후연소) |
|
| 속도 |
실속 70m/s · 최적 선회 160m/s · 최고 240m/s(전장 상한, 약 466kt) |
상한은 맵 크기에 맞춘 게임 수치 |
| 추력 |
스로틀 1.0에서 0.6g, 후연소 1.0g |
|
| 항력 |
0.5 × Cd × v²에 G 비례 유도 항력(선회하면 감속) |
계속 돌면 느려진다 → 속도 관리 |
| 선회 |
가용 G = min(7G, 7G × (v/160)²), 피치율 = G × g / v |
느리면 못 돈다 |
| 롤 속도 |
180°/s (v < 100m/s면 선형 감소) |
|
| 러더 |
요 속도 10°/s |
조준 미세 보정용 |
| 실속 |
v < 70m/s면 기수가 떨어지고 조종 효율 30%, 경고음 |
|
| 지면·충돌 |
지형(외곽 원경 지형 포함)·물·다른 기체와 닿으면 파괴 |
|
| 착륙 |
없음(활주로 없음). 출격은 공중, 재보급은 회랑(15.6) |
비용·맵 제약 |
- 조종 보조(기본 켬): 입력을 놓으면 날개 수평 복귀, 실속 방지(속도 80m/s 아래면 기수 자동 하강), 지면 충돌 경고(3초 전 음성·HUD). 설정에서 끔.
- 3인칭 추적 카메라(기체 뒤 25m) 기본,
V로 조종석(코드 조종석 + HUD).
15.3 공역 — 12km 맵이 좁은 문제
권장안(추가 결정 A2): 12km 상세 지형은 그대로 두고, 전투기 전용 외곽 공역 링을 더한다.
| 구역 |
범위 |
내용 |
비용 (추정) |
| 상세 지형 |
±6km (12.5m 셀) |
기존 지형 전부 |
기존 |
| 외곽 공역 |
±16km (100m 셀, 320² = 10만 높이) |
절차 원경 산맥(상세 지형 가장자리와 이어지게 높이 보간), 나무·도로·유닛·거점 없음, 안개 |
생성 약 0.1초, 렌더는 먼 청크 LOD 한 겹(드로우콜 +4) |
| 경계 |
±16km |
넘으면 10초 경고 후 파괴(A3) |
|
- 효과: 240m/s로 경계까지 가장 먼 거리 약 22km — 선회·재진입할 여유(한 바퀴 약 30
40초). 공격 한 번 = 진입 → 투하 → 이탈 → 외곽에서 선회 → 재진입, 주기 약 6090초.
- 대안(A2의 다른 선택지): ② 전장 맵 자체를 16km로 확대(지형 1,280², 생성 약 1.8초·메모리 약 1.8배, 보병 이동은 그대로) ③ 12km 유지 + 최고 속도 170m/s로 낮춤(전투기 같지 않음).
- 카메라 원거리 평면: 전투기일 때 12km + 안개(보병 3km, 헬기·지상 7km).
15.4 무장
| 무장 |
수량 |
수치 (추정) |
조준 |
재사용 |
| 기관포 20mm |
500발 |
1,050m/s · 100/s · 피해 10 · 관통 2 · 사거리 1,500m |
선도 조준점(공중 표적: 표적 속도 × 탄 비행 시간), 지상은 탄착 예측점 |
projectile.ts, predictGunImpact 방식 확장 |
| 공대공 적외선 미사일 |
2 (제공 구성 4) |
사거리 0.5~5km, 속도 750m/s, 피해 260, 잠금 1.5초 |
시커 원 + 잠금음 |
stinger.ts 시커·missile.ts 유도 |
| 무유도 폭탄 |
4 |
투하, 피해 350 · 관통 4 · 폭발 반경 25m |
CCIP(연속 계산 탄착점) |
ballistics.ts 탄도 예측 |
| 공대지 미사일 |
2 |
사거리 6km, 피해 400 · 관통 5, 발사 후 표적 추적(발사 전 조준 포드로 표적 지정) |
조준 포드 화면(TADS 뷰 재사용, 협각 줌) |
hellfire.ts LOBL 유도, tadsView.ts |
| 레이저 유도 폭탄 |
2 |
피해 400 · 관통 5 |
아군 레이저 점(정찰병·봇 저격조·아파치) 향해 투하 |
헬파이어 레이저 유도 로직, remoteLasers |
| 플레어 |
30 |
기존 ase.ts |
CMWS 경보 |
ase.ts |
- 공대지 균형(위험 3): 폭탄 4발 × 폭발 25m로 한 번에 분대 1
2개 또는 지상 탈것 23대. 재보급 회랑까지 왕복 약 90초 → 분당 공격 1회 이하. 봇 전투기의 대지 공격도 120초마다 1회(봇 AI 5.2).
15.5 대공 위협과 P2
| 규칙 |
내용 |
P2와의 관계 |
| 지면 클러터 |
공대공 적외선 시커는 표적이 지면 30m 이하이거나 표적 뒤 배경이 지형(시커 시선이 표적을 지나 3km 안에서 지형에 닿음)이면 잠그지 못한다. 기존 방공 레이더의 지면 클러터 규칙과 같은 판정(awareness.ts의 스카이라인·지형 배경 검사 재사용) |
능선 아래로 붙어 나는 헬기는 전투기 미사일에 안전 → 저공이 헬기의 생존 규칙으로 남는다 |
| 기관포 강하 |
전투기는 저공 헬기를 기관포로만 칠 수 있다(강하각 20° 이상, 1.5km 안). 강하하면 전투기가 지상 방공에 노출 |
헬기 사냥의 대가 |
| 방공이 전투기를 위협 |
방공 차량·본진 SAM·대공조가 플레이어 전투기에 실제 미사일·탄(기존 enemyMissile.ts 경로), 봇 전투기엔 통계 판정 |
전투기도 고도·지형을 고른다: 지면 100m 이하로 내려가면 방공 레이더 발견 모델이 헬기 규칙으로 바뀐다(봇 AI 5.6) |
| 발견 |
지면 100m 이상 전투기는 방공 레이더·시각 6km에서 보인다 |
높이 날면 편하지만 잡힌다 |
- 하니스 기준(1.3): 지면 30m 이하 헬기에 대한 공대공 잠금 0회(단위 테스트로도).
15.6 출격·재보급·손실
- 출격: 본진 상공(고도 800m, 속도 180m/s, 전장 안쪽 방향) 공중 스폰. 스폰 무적 없음.
- 재보급 회랑: 본진 뒤쪽 폭 1km·길이 3km 구역을 지면 300m 이하로 15초 이상 통과하면 무장·플레어 가득(한 번에). 회랑은 적 방공 사거리 밖(전장 맵 6.2 원칙 14). 착륙 없는 게임에서 P4′(탄약 유한)를 지키는 방법.
- 피해: HP 200/장갑 1, 계통 피해 없음(단순화). HP 30% 이하면 연기, 롤 속도 −40%.
- 손실: 격추·추락·경계 이탈 = 플레이어 사망 + 전투기 티켓 5.
- 탈출(낙하산) 없음 — 격추 = 사망.
15.7 조종석·HUD
- 코드 조종석(단순 계기판·캐노피 틀·스틱) 두 벌(연합·VPA 모양 차이: 연합 단일 넓은 유리 HUD, VPA 좁은 HUD + 둥근 계기).
- HUD 기호(단색,
ihadss.ts의 캔버스 그리기 방식 재사용): 속도 테이프·고도 테이프·헤딩·피치 사다리·G 수치·기관포 선도 조준점·미사일 시커 원/잠금 표시·CCIP 점과 낙하선·실속·지면 경고·재보급 회랑 방향 화살표.
- 전장 공통 HUD(티켓 바·미니맵 5km 축척·처치 알림)는 HUD 테두리 밖.
15.8 봇 전투기
| 임무 |
행동 |
판정 |
| 제공 |
적 항공기(전투기 우선, 그다음 지면 30m 초과 헬기)가 발견되면 요격 — 후방 진입, 5km 안에서 미사일(통계), 1km 안 기관포(통계) |
플레이어 기체에는 실제 미사일 |
| 대지 |
120초마다 한 번, 지휘관이 고른 거점(집중·핵심)으로 진입 → 알려진 적 탈것·분대에 폭탄(통계 피해, 폭발 연출) → 외곽으로 이탈 |
|
| 이동 |
외곽 공역 경주로(반지름 3km) 대기 → 임무 진입 |
단순 운동학(비행 모델 없이 경로 + 선회율 제한) |
- 비용: 진영당 2대, 운동학만 → 무시할 수준(추정 < 0.01ms/프레임).
15.9 조작
| 동작 |
키보드·마우스 |
게임패드 |
터치 |
| 피치 / 롤 |
↑↓ / ←→ (또는 마우스 조종 모드: 마우스가 기수 방향) |
오른쪽 스틱 |
오른쪽 가상 스틱 |
| 러더 |
A / D |
왼쪽 스틱 좌우 |
왼쪽 스틱 좌우 |
| 스로틀 |
W / S |
왼쪽 스틱 위아래 |
왼쪽 스틱 위아래(놓아도 유지) |
| 발사 / 무장 전환 |
Space·좌클릭 / Q·휠 |
RT / RB |
발사 / 무장 |
| 플레어 |
F |
B |
플레어 |
| 조준 포드(공대지 미사일) |
T |
십자키 위 |
포드 |
| 시점 |
V |
Y |
일시정지 메뉴 |
| 전황·무전·일시정지 |
Tab · G · Esc |
Back · 십자키 아래 길게 · Start |
티켓 바 · 무전 · ≡ |
- 마우스 조종 모드(설정, 데스크톱 기본): 마우스 커서 방향으로 기체가 자동으로 기수를 돌린다(피치·롤 자동 조합) — 키보드 방향키보다 배우기 쉽다.
- 터치 버튼: 발사·무장·플레어·포드 = 4개 + 두 스틱.
15.10 외형과 에셋
- 기본은 코드 모델(동체·주익·꼬리·캐노피·배기구, 삼각형 약 400): 연합 = 단발·단일 수직꼬리, VPA = 쌍발·쌍수직꼬리. 모양으로 식별(P3′).
- 외부 전투기 모델은 외부 에셋의 후보 조사 → 소유자 채택 결정 후 교체.
- 제트 엔진 소리: 기존 터빈 합성음(
audio/rotor.ts 터빈 성분)을 고역 강조 + 도플러 — 폴백. 녹음 후보는 16장.
15.11 재사용과 신규
- 재사용: 시커·유도(
stinger.ts·missile.ts), 탄도 예측(ballistics.ts), 헬파이어 LOBL, 조준 포드 = TADS 뷰(tadsView.ts), ASE 플레어·CMWS, enemyMissile.ts(플레이어를 노리는 미사일), 캔버스 HUD 그리기(ihadss.ts).
- 신규:
sim/jet/flight.ts, sim/jet/arms.ts(폭탄·CCIP·선도 조준점), sim/battle/jetAi.ts, 외곽 공역 지형(terrain.ts에 저해상도 링 옵션), 조종석·HUD 두 벌, 재보급 회랑.
- 예상 코드(추정): sim 약 700줄, render 약 500줄, ui 약 150줄.