08 — HUD KOKPIT MEDALLION (capacitor, module, ring, heat, glass)
Status: SPEC-FINAL (eksekusi: fase UE, setelah 10.V DONE). Induk:06-gameplay-systems.md(skill/UX/acceptance),04-graphics.md(UMG/material/anggaran),03-implementasi.md(kontrak mirror),combat.ts(damage per-subsystem + ceiling 12),cockpitGradePass/hud.ts(web). Prinsip satu kalimat: HUD = command board ke simulation engine, bukan dekorasi — tiap piksel = state server. Anti-duplikasi: layout TAC/VESSEL/slot = 06 §2.6; angka damage =combat.ts; file ini HANYA: glass angka, capacitor, module, ring, heat, animasi, UX.
1. Geometri medallion (FINAL)
- Lingkaran tengah = fokus mata: speed + capacitor + 3 ring defense.
- Weapon slot (4, hotkey 1-4) = kanan bawah; TAC kiri; VESSEL kanan.
- Alasan radial: semua info tempur dalam radius pandang 15° — tanpa gerak mata.
2. Glass panel — resep angka (FINAL, bukan “kaca gelap” kualitatif)
- Base:
#0a0f14, opacity 0.15–0.35 (Idle 0.15, Combat 0.35). - Edge glow: cyan
#52c8ff/ amber#ffb347, intensity 0.2–0.6 (aktif 0.6). - Fresnel: boost edge highlight 1.5x di tepi, 0 di tengah (teks steril).
- Micro-noise emissive: 0.01–0.03 (anti flat, anti plastik 10.V §9).
- Scanline: opsional, drift
tick*2(polahud.ts:54), alpha ≤0.08. - Depth: gradient alpha + blur ringan background + parallax ikut kamera ±2px.
3. Capacitor (FINAL — kurva non-linear ala EVE)
- Kapasitas 100. Recharge/ detik =
8 * (1 - cap/100) + 1→ kosong ngisi cepat, penuh melambat. Tiap aksi (scan/warp/repair/fire) kuras cap (06 §2.7). - Visual: lingkaran segmented, 1 segmen = 5 unit. Cap <25 = flicker + warning ring.
- Server hitung cap; UE render segmen (habis = modul mati, bukan angka minus).
4. Module slot (FINAL — slot = sistem, bukan tombol)
- State: OFF (gelap) / ACTIVE (glow 0.6) / COOLDOWN (radial sweep time-based) / OVERHEAT (merah + lock sampai dingin).
- Tiap fire menaikkan heat rack +12; dingin -6/detik; 100 = OVERHEAT 5 detik.
- Cooldown sweep = waktu server (
cooldownssnapshot), bukan GIF. - Charge animation saat aktivasi + delay feedback 100ms (samakan tick).
5. Defense 3-ring (FINAL — mapping ke combat.ts, bukan model baru)
- Outer = shield ←
defense.health; middle = armor ←integrityvessel; inner = hull ←hullOf(mean systems). Damage layer-by-layer luar→dalam. - Ring pecah = threshold lewat: shield 0 → armor kena; armor 0 → hull kena.
- Visual: ring utuh glow, retak <50%, hilang 0 + spark di titik hit.
6. Speed/nav (FINAL)
- Throttle % + velocity m/s + boost indicator 2.2x. Warp = align bar 75% (06 §2.7).
7. Animasi (FINAL)
display = lerp(prev, current, dt*speed)speed 8 (eat: capacitor/HP, bukan snap).- Pulse low HP/cap: emissive
0.5 + 0.5*sin(t*6). Transisi mode 0.3s fade/scan.
8. UX principles (FINAL)
- Clarity: angka kritis (cap/hull) ≥24px, selalu di medallion — tidak di panel jauh.
- Telegraphing: OVERHEAT/wanted/threat = merah + gerak (pulse), info biasa statis.
- Grouping: mirip→dekat (slot+cooldown, ring+cap, speed+throttle).
9. Kontrak C++ (mirror, tambah — bukan ubah existing)
FUE5Capacitor { Cap, Max, Recharge },FUE5Module { Id, State, CooldownEnd, Heat },FUE5Rings { Shield, Armor, Hull }← snapshot field 1:1.- Intent:
use_module { moduleId },overheat_vent {}(key SAMA dua klien). - Acceptance: cap 0 = modul mati; overheat lock 5s; ring pecah berurutan; glass lulus banded (browser vs UE); HUD ≤0.5ms HIGH.