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 — 선회·재진입할 여유(한 바퀴 약 3040초). 공격 한 번 = 진입 → 투하 → 이탈 → 외곽에서 선회 → 재진입, 주기 약 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로 한 번에 분대 12개 또는 지상 탈것 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줄.