125 lines
12 KiB
Markdown
125 lines
12 KiB
Markdown
# Laporan keseimbangan karakter
|
||
|
||
Dibuat oleh `node tests/harness.mjs tests/balance.mjs` (simulator RENCANA 5.1). Tanggal: **2026-10-05** · Jalan: **Setelah penyetelan**.
|
||
|
||
- Tingkat CPU: **hard** · ronde per pasangan arah: **8** · karakter: BRO WO, MEGA CHAN, SON OF SOLO MAN, ETHANOL MAN, A NICE, SOLO MAN, GUFRON.
|
||
- Satu **ronde** = satu pertarungan sampai K.O. atau waktu habis (90 dtk), arena Bellora, gaya Seimbang, tanpa layar VS. Pasif dan kelemahan karakter ikut aktif.
|
||
- Tiap pasangan dimainkan di **kedua posisi** (A sebagai bot lalu B sebagai bot) dan digabung. Pertandingan cermin (karakter sama) hanya dipakai sebagai pembanding bot terhadap CPU, tidak masuk persentase karakter.
|
||
- Bot pemain (tests/bot.mjs) mendekat, memukul dan menyambung kombo, memakai skill saat jaraknya cocok dan akan kena, memblok atau parry sebagian serangan yang terbaca setelah jeda reaksi, kadang melompati proyektil, dan **membalas ultimate lawan dengan ultimate** (atau memakainya sendiri setelah 8 dtk). Tidak memakai lempar, jurus perintah, atau jurus toko, dan tidak menghindari genangan.
|
||
- Total ronde dimainkan: 392 (termasuk cermin). Ronde macet: 0.
|
||
|
||
## Persentase menang per karakter
|
||
|
||
Persen menang = (menang + setengah seri) dibagi jumlah ronde lawan non-cermin, gabungan kedua posisi. Sisa HP dari 200.
|
||
|
||
| # | Karakter | Menang % | Tier | M-K-S | Menang sbg bot % | Menang sbg CPU % | Sisa HP saat menang | Sisa HP akhir ronde | Durasi rata-rata (dtk) |
|
||
| ---: | --- | ---: | :---: | :---: | ---: | ---: | ---: | ---: | ---: |
|
||
| 1 | MEGA CHAN | **58,3** | S | 56-40-0 | 100,0 | 16,7 | 45,1 | 26,3 | 18,8 |
|
||
| 2 | GUFRON | **56,3** | A | 54-42-0 | 81,3 | 31,3 | 35,4 | 19,9 | 18,8 |
|
||
| 3 | SON OF SOLO MAN | **53,1** | A | 51-45-0 | 77,1 | 29,2 | 28,6 | 15,2 | 17,8 |
|
||
| 4 | A NICE | **49,0** | B | 47-49-0 | 87,5 | 10,4 | 28,7 | 14,1 | 17,6 |
|
||
| 5 | BRO WO | **44,8** | C | 43-53-0 | 66,7 | 22,9 | 33,4 | 15,0 | 17,5 |
|
||
| 6 | ETHANOL MAN | **44,8** | C | 43-53-0 | 79,2 | 10,4 | 45,6 | 20,4 | 17,4 |
|
||
| 7 | SOLO MAN | **43,8** | C | 42-54-0 | 72,9 | 14,6 | 46,4 | 20,3 | 17,7 |
|
||
|
||
## Posisi: bot melawan CPU
|
||
|
||
- Pertandingan non-cermin: bot menang **80,7%**, CPU menang 19,3%, seri 0,0% (336 ronde).
|
||
- Pertandingan cermin (karakter sama, hanya cermin posisi): bot menang **76,8%**, CPU menang 23,2%, seri 0,0% (56 ronde). Selisih dari 50% menunjukkan keunggulan struktural satu posisi (urutan pemrosesan, kebal saat jurus, bonus counter hanya untuk pemain); karena tiap karakter dimainkan di kedua posisi, selisih ini saling meniadakan di persentase per karakter.
|
||
|
||
- Ultimate pertama dalam ronde (semua ronde): bot lebih dulu **0,0%**, CPU lebih dulu **34,4%**, hampir bersamaan (selisih di bawah 0,3 dtk, saling kunci) 65,6%, tak ada yang memakai 0,0%.
|
||
|
||
## Tabel menang-kalah 7 x 7
|
||
|
||
Persen menang karakter **baris** terhadap karakter **kolom**, gabungan kedua posisi (`M-K-S` ada di tabel berikutnya).
|
||
|
||
| baris \ kolom | BRO WO | MEGA CHAN | SON OF SOLO MAN | ETHANOL MAN | A NICE | SOLO MAN | GUFRON |
|
||
| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |
|
||
| **BRO WO** | · | 50% | 44% | 50% | 56% | 56% | 13% |
|
||
| **MEGA CHAN** | 50% | · | 50% | 56% | 69% | 56% | 69% |
|
||
| **SON OF SOLO MAN** | 56% | 50% | · | 75% | 44% | 63% | 31% |
|
||
| **ETHANOL MAN** | 50% | 44% | 25% | · | 50% | 63% | 38% |
|
||
| **A NICE** | 44% | 31% | 56% | 50% | · | 50% | 63% |
|
||
| **SOLO MAN** | 44% | 44% | 38% | 38% | 50% | · | 50% |
|
||
| **GUFRON** | 88% | 31% | 69% | 63% | 38% | 50% | · |
|
||
|
||
### Menang-kalah-seri (ronde)
|
||
|
||
| baris \ kolom | BRO WO | MEGA CHAN | SON OF SOLO MAN | ETHANOL MAN | A NICE | SOLO MAN | GUFRON |
|
||
| --- | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
|
||
| **BRO WO** | · | 8-8-0 | 7-9-0 | 8-8-0 | 9-7-0 | 9-7-0 | 2-14-0 |
|
||
| **MEGA CHAN** | 8-8-0 | · | 8-8-0 | 9-7-0 | 11-5-0 | 9-7-0 | 11-5-0 |
|
||
| **SON OF SOLO MAN** | 9-7-0 | 8-8-0 | · | 12-4-0 | 7-9-0 | 10-6-0 | 5-11-0 |
|
||
| **ETHANOL MAN** | 8-8-0 | 7-9-0 | 4-12-0 | · | 8-8-0 | 10-6-0 | 6-10-0 |
|
||
| **A NICE** | 7-9-0 | 5-11-0 | 9-7-0 | 8-8-0 | · | 8-8-0 | 10-6-0 |
|
||
| **SOLO MAN** | 7-9-0 | 7-9-0 | 6-10-0 | 6-10-0 | 8-8-0 | · | 8-8-0 |
|
||
| **GUFRON** | 14-2-0 | 5-11-0 | 11-5-0 | 10-6-0 | 6-10-0 | 8-8-0 | · |
|
||
|
||
## Sebelum dan sesudah penyetelan
|
||
|
||
Sebelum: jalan "Sebelum penyetelan" (2026-10-05, 8 ronde per pasangan arah, benih 11). Sesudah: jalan ini (benih 11).
|
||
|
||
| Karakter | Sebelum % | Sesudah % | Selisih | Tier sebelum | Tier sesudah |
|
||
| --- | ---: | ---: | ---: | :---: | :---: |
|
||
| MEGA CHAN | 78,1 | **58,3** | −19,8 | S | S |
|
||
| GUFRON | 71,9 | **56,3** | −15,6 | S | A |
|
||
| SON OF SOLO MAN | 50,0 | **53,1** | +3,1 | B | A |
|
||
| A NICE | 52,1 | **49,0** | −3,1 | A | B |
|
||
| BRO WO | 41,7 | **44,8** | +3,1 | C | C |
|
||
| ETHANOL MAN | 27,1 | **44,8** | +17,7 | C | C |
|
||
| SOLO MAN | 29,2 | **43,8** | +14,6 | C | C |
|
||
|
||
## Cara membaca dan batasan
|
||
|
||
- Angka berasal dari simulasi bot melawan CPU, **bukan kebenaran mutlak**. Dengan 8 ronde per pasangan arah, tiap karakter punya sekitar 96 ronde; galat acak sekitar ±5,1 poin persen (satu simpangan baku), jadi selisih di bawah itu belum berarti.
|
||
- Ultimate dan mode pasca-ultimate mengunci lawan beberapa detik, sehingga siapa yang lebih dulu dan seberapa mematikan rangkaian ultimate-nya menentukan sebagian besar ronde. Bot sengaja membalas ultimate lawan agar yang diukur adalah adu rangkaian, bukan sekadar siapa menekan duluan.
|
||
- Bot tidak menghindari genangan api atau asam dan tidak memakai lempar atau jurus toko, jadi karakter berbasis genangan mungkin sedikit terlalu tinggi dibanding pemain manusia yang pandai menghindar.
|
||
- Batas tier: S ≥ 58% (Dewa Arena), A ≥ 52% (Jagoan Kampung), B ≥ 46% (Lumayan Lah), selebihnya C (Butuh Semangat).
|
||
|
||
<!-- catatan-manual: bagian di bawah baris ini dipertahankan saat laporan dibuat ulang -->
|
||
|
||
## Penyetelan angka (RENCANA 5.3)
|
||
|
||
Hasil awal (benih 11, 8 ronde per pasangan arah): **MEGA CHAN 78,1%** dan **GUFRON 71,9%** di atas batas 65%, **ETHANOL MAN 27,1%** dan **SOLO MAN 29,2%** di bawah 35%. Angka disetel dalam empat putaran kecil: hanya angka data (manifest karakter, `browo.js`, `content/passives.js`), tanpa mengubah mekanik.
|
||
|
||
| Karakter | Perubahan angka (sebelum → sesudah) |
|
||
| --- | --- |
|
||
| MEGA CHAN | ultimate: banteng 8 → 7; mode ultimate TANDUK NERAKA: damage per banteng 7 → 6; pasif KEPALA BANTENG: damage diterima −8% → −5% |
|
||
| GUFRON | skill 1 BAHASA SEMUT: damage per semut 4 → 3 dan jumlah semut 10 → 8; ultimate: gelombang semut 9 → 8; mode ultimate: 12 → 11; pasif: pulih skill +12% → +5% |
|
||
| SOLO MAN | skill 1 ESEMKA RUSH 20 → 22; skill 2 SARUNG PUTAR 16 → 18; ultimate KONVOI ESEMKA: mobil 6 → 7 dan damage per mobil 8 → 9; mode ultimate: mobil 9 → 10; kelemahan: damage keluar −6% → −3% |
|
||
| ETHANOL MAN | skill 2 ETHANOL SPLASH 18 → 20; ultimate BANJIR BIOETANOL: damage per gelombang 9 → 10; mode ultimate: damage per pilar 4 → 5; kelemahan: pulih cooldown −5% → −4% |
|
||
| BRO WO | ultimate HUTAN SAWIT: damage per pohon 3 → 4 |
|
||
| A NICE, SON OF SOLO MAN | tidak diubah |
|
||
|
||
Riwayat (persen menang, benih 11, 8 ronde per pasangan arah; satu putaran = satu kali jalan simulator sesudah beberapa perubahan sekaligus):
|
||
|
||
| Karakter | Awal | Putaran 1 | Putaran 2 | Putaran 3 | Akhir (putaran 4, tabel di atas) |
|
||
| --- | ---: | ---: | ---: | ---: | ---: |
|
||
| MEGA CHAN | 78,1 | 53,1 | 47,9 | 52,1 | **58,3** |
|
||
| GUFRON | 71,9 | 70,8 | 71,9 | 54,2 | **56,3** |
|
||
| SON OF SOLO MAN | 50,0 | 46,9 | 55,2 | 52,1 | **53,1** |
|
||
| A NICE | 52,1 | 47,9 | 46,9 | 47,9 | **49,0** |
|
||
| BRO WO | 41,7 | 45,8 | 45,8 | 46,9 | **44,8** |
|
||
| ETHANOL MAN | 27,1 | 49,0 | 51,0 | 55,2 | **44,8** |
|
||
| SOLO MAN | 29,2 | 36,5 | 31,3 | 41,7 | **43,8** |
|
||
|
||
Putaran 4 menambah buff kecil BRO WO (belum tersentuh sebelumnya, terendah pada jalan konfirmasi). Jalan konfirmasi dengan benih bot lain (benih 23, keadaan akhir, tidak tertulis ke laporan): GUFRON 62,5 · MEGA CHAN 52,1 · ETHANOL MAN 51,0 · A NICE 51,0 · SON OF SOLO MAN 49,0 · BRO WO 42,7 · SOLO MAN 41,7. Pada kedua jalan semua karakter berada di antara 41% dan 63%. Selisih antar putaran sebesar 5 sampai 10 poin masih wajar dari galat acak, jadi jangan membaca satu angka sebagai ukuran pasti.
|
||
|
||
## Temuan penting
|
||
|
||
1. **Rangkaian ultimate menentukan hampir semua ronde.** Terhadap sasaran pasif, ultimate pertama ditambah ultimate mode (pasca-ultimate) menghasilkan 110 sampai 148 damage dari 200 HP sebelum penyetelan (MEGA CHAN 148, A NICE 134, SON OF SOLO MAN 129, BRO WO 127, SOLO MAN 126, GUFRON 126, ETHANOL MAN 110), dan selama itu lawan terkunci. Bot yang dikunci CPU kehilangan rata-rata sekitar 155 HP per ronde dari rangkaian ultimate dan ultimate mode (diukur pada GUFRON dan MEGA CHAN sebagai CPU, 18 ronde masing-masing). Karena itu hampir semua penyetelan di atas menyentuh angka ultimate, dan satu atau dua damage per denyut bisa menggeser persen menang belasan poin.
|
||
2. **Penutup ultimate menjatuhkan lawan.** Penutup (finisher) membuat sasaran jatuh dan bangun sekitar 2,1 dtk, dan denyut ultimate mode yang jatuh pada waktu itu tidak mengenai (sasaran jatuh dianggap tidak hidup oleh `bwAlive`). Memakai ultimate mode segera setelah rangkaian pertama membuang beberapa denyut; bot menunggu lawan bangun.
|
||
3. **CPU hampir tidak pernah memakai skill 2 ETHANOL MAN dan SOLO MAN** (pada uji pasangan `tests/pairs.mjs`: SOLO MAN 0 dari 7 ronde, ETHANOL MAN 1 dari 7). Keduanya berjenis area tanpa `ahead` (jangkauan 135 dan 140), lebih pendek dari pukulan dasar (161), dan `cpuPick` selalu mendahulukan pukulan dasar, sedangkan penutup kombo (`cpuFollowUp`) praktis tidak pernah memenuhi `cpuLands` (sisa stun pemain lebih pendek dari waktu kena skill). Akibatnya kedua karakter ini lebih lemah sebagai lawan CPU daripada angka kitnya. Ini celah AI (mekanik), bukan angka; uji pasangan (`tests/pairs.mjs`) mencatatnya sebagai peringatan. Bila AI atau datanya diperbaiki (misalnya `ahead` di manifest), jalankan ulang simulator dan setel ulang kedua karakter. **Pembaruan (cabang wf/t6-ai, RENCANA 6.5):** `cpuPick` kini mendahulukan jurus area pemusat-diri bila lawan di dalam lingkarannya (`cpuAreaKit`, `cpuAreaFits`) dan CPU berdiri lebih rapat saat jurus itu siap; angka di tabel laporan ini dibuat SEBELUM perbaikan itu dan belum dijalankan ulang penuh, jadi persen menang ETHANOL MAN dan SOLO MAN (terutama sebagai CPU) bisa sedikit naik.
|
||
4. **Posisi bot punya keunggulan besar.** Bot menang 77 sampai 85% pada semua jalan, juga pada pertandingan cermin. Penyebabnya struktural (pemain kebal saat skill dan ultimate, bonus counter 25% hanya untuk pukulan pemain, urutan pemrosesan hero lebih dulu) ditambah bot yang cukup rapi. Persen menang per karakter menggabungkan kedua posisi sehingga keunggulan ini saling meniadakan, tetapi banyak pasangan berakhir 8-8-0 (bot menang di kedua posisi), yang berarti hasilnya ditentukan posisi dan bukan karakter. Resolusi pengukuran jadi lebih kasar; untuk keputusan penyetelan pakai `BAL_N` 12 atau lebih, atau lemahkan bot (`BAL_BOT`).
|
||
5. **Pasangan paling timpang** (jalan akhir): GUFRON atas BRO WO 88% (14-2), SON OF SOLO MAN atas ETHANOL MAN 75%, MEGA CHAN atas A NICE dan atas GUFRON 69%. Pasangan GUFRON dan BRO WO layak diperiksa lebih dulu pada penyetelan berikutnya.
|
||
6. **Kebijakan ultimate bot menentukan apa yang diukur.** Pada percobaan awal bot memakai ultimate sendiri pada detik ke-5 seperti CPU tanpa membalas, dan menang sekitar 93% ronde apa pun karakternya (siapa yang menekan duluan menang; tidak informatif). Maka bot kini membalas ultimate lawan dalam waktu reaksi: sekitar dua pertiga ronde menjadi adu rangkaian yang hampir bersamaan, dan sepertiga sisanya CPU lebih dulu (biasanya bot sedang terkena serangan atau sedang menjalankan skill saat CPU mulai).
|
||
|
||
## Menjalankan ulang
|
||
|
||
```bash
|
||
BAL_N=8 BAL_WORKERS=2 BAL_LABEL="Setelah penyetelan" BAL_BASE=docs/balance-before.json BAL_JSON=docs/balance-after.json BAL_TIERS=1 \
|
||
node tests/harness.mjs tests/balance.mjs 2026-10-05
|
||
```
|
||
|
||
`BAL_BASE` memakai hasil sebelum penyetelan (`docs/balance-before.json`, benih 11, N=8) untuk tabel perbandingan, `BAL_TIERS=1` menulis ulang `content/tiers.js`, dan bagian ini (di bawah penanda catatan manual) dipertahankan. Hasilnya sama untuk benih, N, dan jumlah pekerja yang sama.
|