fighting-konoha/guide/rhea-reference.md

69 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# RHEA — orrery kecil
RHEA adalah petarung Mecha keenam dan karakter kesembilan di roster: anak ajaib 14 tahun dengan harness orrery kuningan, dua cincin dan tiga bola planet di lengan engsel. Ia berasal dari 8 karakter showcase dan dibuat playable setelah ISOLDE. Pemain dapat memilihnya di roster VS/Training dan di Pengaturan → Karakter pemain; CPU memakai kit yang sama. Kartu identitas: assets/rhea/character.md.
## Dari showcase ke playable
Alurnya sama dengan ISOLDE ([isolde-reference.md](isolde-reference.md)). Body showcase v1 (sudah chibi) langsung menjadi base sprite (base-selected.png, job `7d4aafa4-898c-4cc4-b7f3-5ada55367b5a`), dan avatar showcase dipakai sebagai portrait HUD. Di roster.json RHEA ditandai `promoted`, jadi showcase kini berisi 3 karakter (semua Demi-Human). Semua gambar baru dibuat dengan **GPT Image 2.5 Sunburst**, chroma hijau. Announcer tetap Grady. Alat pipeline: `tools/rhea_*.py`.
Filter keamanan provider menolak tiga strip v1 (crouch, hurt, recover) sebagai false positive. Kalimat aksinya diubah ke bentuk netral dan v2 langsung lolos; detail di qa-notes.
## Paket siap digunakan ulang
| Paket | Isi |
| --- | --- |
| Sprite | 15 state / 54 frame, atlas 1792×4320, cell 448×288, anchor 224/280, idle 170 px (sepatu sampai puncak cepol), lebar 118–119 px |
| UI | portrait 384 (avatar showcase), cut-in 1600×686, 4 ikon 256, roster art dari showcase |
| VFX | 4 PNG alpha 256: drift (planet kecil), planet (planet raksasa bercincin), well (pusaran gravitasi), burst (ledakan bintang) |
| Audio | `select_rhea` "Rhea!" (0.993 s), `rhea_wins` "Rhea wins!" (1.306 s), Grady. Voice ultimate Chloe "Grand Orrery!" (1.306 s) |
Ukuran 170 px dipilih dari lineup 160/170/180/190 (size-candidates.png). Pada ukuran itu wajah setara NAJA dan badannya tetap kecil sesuai umur. Wrapper `RHEA_MANIFEST/METRICS` ada di [assets/rhea/manifest.js](../assets/rhea/manifest.js). Sprite library memutar semua animasi.
## Kemampuan dan balance
| Input | Gerakan | Damage / cooldown |
| --- | --- | --- |
| Space×3 | ORBIT STRIKE: bola kuningan diayun maju, bola krem naik, tiga bola sejajar. Reach 100/85/115 di dalam bola terukur (109/80/128 px). Knockback 75/100/190 | 6/8/12 |
| I | PLANET DRIFT: planet kecil setinggi dada melayang 380 px/s selama 3.2 s (melintasi arena). Paling lambat di roster: RHEA bisa berjalan di belakangnya. Lompatan melewatinya | 16 / 3 s |
| O | GRAVITY WELL: pusaran terbuka 230 px di depan dan runtuh setelah 0.3 s, mengenai lawan di lantai dalam 95 px dari pusatnya (135–325 px dari RHEA). Lawan yang menempel atau jauh aman | 24 / 6 s |
| P | GRAND ORRERY: pose cast 0.5 s, tiga planet raksasa mengorbit RHEA | 48 / 18 s |
Setiap basic hit yang valid mengembalikan 5% cooldown maksimum semua skill. HP tetap 200 dalam dua lapis. Semua nilai ada di [rhea.js](../rhea.js).
### Timeline Grand Orrery
| Bagian | Waktu dari cast |
| --- | --- |
| Cut-in banner burgundy/kuningan | 0–0.78 s |
| Pose cast pemain | 0–0.50 s, lalu bebas bergerak/menyerang |
| Planet 1 / 2 / 3 dilepas | 0.80 / 1.18 / 1.56 s dari titik 230 px di depan RHEA |
| Orbit | satu putaran elips 230×70 px mengelilingi RHEA dalam 0.9 s, mengikuti posisi RHEA; 16 damage, satu hit per planet |
| Selesai | setelah 2.6 s dan semua planet menyelesaikan putarannya |
Ketiga planet berjalan dengan fase yang sama dan dilepas 0.38 s berselang, lebih pendek dari stun 0.42 s, sehingga lawan yang diam di dalam orbit (depan atau belakang) terkena 48. Lawan yang menjaga jarak lebih dari ±260 px aman: ini ultimate zoner, bukan serangan pengejar. Tidak ada global hit-stop; knockback 40/40/190. Pause membekukan serangan ini, sedangkan reset, kembali ke menu dan akhir ronde membatalkannya. Serangan pemain (`orrery`) dan CPU (`enemyOrrery`) memiliki owner terpisah.
## CPU
- RHEA sebagai CPU memakai otak yang sama ([cpu-ai.md](cpu-ai.md)) dan kit-nya lewat `KITS`. Planet Drift memakai jangkauan proyektil standar (560 px) karena ia melintasi arena.
- Benchmark (RHEA sebagai CPU): pemain diam K.O. dalam 17.6 / 16.7 / 19.2 / 15.8 s (Easy→Excellent); Hard lebih lambat dari Medium pada pemain diam (belum dianalisis). Proyektil yang mengenai CPU 52 / 42 / 41 / 30%. Detail di [cpu-ai.md](cpu-ai.md).
## Voice
"Grand Orrery!" digenerate dengan empat preset wanita muda: Pixie, Zoe, Chloe dan Gia. Chloe dipilih karena pitch mediannya paling tinggi (±390 Hz; Zoe ±299, Gia ±274, Pixie ±234) dengan take pendek (ucapan selesai 1.08 s), cocok untuk anak ajaib 14 tahun. Angka pitch hanya panduan; timbre belum didengar pengguna. Cara mengganti: salin kandidat lain dari `assets/rhea/audio/ultimate-candidates/` ke `rhea-ultimate.mp3`, lalu ganti `VOICE_NAMES.rhea` di game.js. Record: generation.json.
## Integrasi engine
- `KITS` memetakan `rhea` ke kontrak kit yang sama. RHEA memiliki `rheaStrike` (ayunan bola, planet melayang, pusaran) dan summon `startOrrery`/`updateOrrery` (dipilih lewat `startSummon`).
- Proyektil kini mendukung `inert` (menunggu di tempat lalu memanggil `wellBurst` saat habis) dan `orbit` (mengelilingi pemiliknya pada elips; `spent` setelah satu hit). Proyektil lama tidak berubah.
- Snapshot QA berisi `orrery`/`enemyOrrery`. Cut-in memakai kelas `.rhea-cutin`, art ui/cutin.png, dan judul GRAND ORRERY dari HTML.
## Reproduksi
1. Prompt/job: desain di roster.json; strip di strip-requests.json (12 × v1, 3 × v2); UI di ui-requests.json.
2. `tools/rhea_pipeline.py measure`, `tools/rhea_measure.py`, lalu tulis `rel.json` (alasan di `qa/rel-decision.json`).
3. `tools/rhea_pipeline.py calibrate`, `sprite_gen.cli prepare --out-dir assets/rhea/run --character-id rhea --base-image assets/rhea/base/base-selected.png --request assets/rhea/request.json --chroma-key #00FF00`, lalu `normalize` dan `extract`.
4. `tools/rhea_align.py`, lalu `publish`. Hitung emitter (ujung terjauh di frame 2) ke `emitters.json`, lalu jalankan `publish` sekali lagi.
5. `tools/rhea_assets.py` mengekspor portrait/ikon/cut-in/VFX, lalu `tools/web_images.py` dan `node tools/build_dist.mjs`.
Catatan QA: assets/rhea/run/qa-notes.md. Tes: `node tests/rhea.test.cjs` (13 tes).