Go to file
rizkyaz0 33a3318e48 Tantangan harian dan hadiah hari pertama (RENCANA 7.1 dan 7.2): daily.js dan daily.css. Satu tantangan per tanggal lokal dari hash tanggal (aturan, lawan, arena, tingkat) dengan 10 aturan (Darah satu, Hanya ultimate, Tanpa blok, Lawan cepat, Lantai licin, Tanpa lompat, Kombo wajib, Satu ronde, Counter saja, Raksasa). Tombol HARIAN di menu utama membuka kartu tantangan (aturan, deskripsi, lawan, arena, tingkat, hadiah, streak, pilih petarung). Menang = 150 koin + 25 per hari beruntun, sekali per tanggal, masuk rincian koin layar hasil; MAIN LAGI mengulang tantangan yang sama. Baris aturan di layar VS dan penanda aturan di arena. Hadiah hari pertama +25 koin tiap tanggal dan kejutan tanggal (1 Jan, 14 Mar, 8 Agu, 17 Agu) sekali per tahun. Simpanan di Meta.save.daily. Kait kecil di game.js (arm, deny, hit, parry, cooldowns, slip, foeScale, heroHpShown, match.toWin di HUD) yang no-op tanpa tantangan aktif. Uji manual: ?daily=YYYY-MM-DD atau Daily.setDate(...) di konsol. 2026-10-05 14:48:24 +07:00
assets Gabung wf/t5-balance: simulator keseimbangan, tier list, uji otomatis 2026-10-05 14:13:44 +07:00
content Tier list otomatis (RENCANA 5.2): content/tiers.js dibuat simulator (BAL_TIERS=1), menu Koleksi menampilkan 'Peringkat karakter (versi simulator)' dengan keterangan bukan kebenaran mutlak; berkas dimuat malas dari meta.js sehingga index.html tidak berubah 2026-10-05 14:12:57 +07:00
docs Tantangan harian dan hadiah hari pertama (RENCANA 7.1 dan 7.2): daily.js dan daily.css. Satu tantangan per tanggal lokal dari hash tanggal (aturan, lawan, arena, tingkat) dengan 10 aturan (Darah satu, Hanya ultimate, Tanpa blok, Lawan cepat, Lantai licin, Tanpa lompat, Kombo wajib, Satu ronde, Counter saja, Raksasa). Tombol HARIAN di menu utama membuka kartu tantangan (aturan, deskripsi, lawan, arena, tingkat, hadiah, streak, pilih petarung). Menang = 150 koin + 25 per hari beruntun, sekali per tanggal, masuk rincian koin layar hasil; MAIN LAGI mengulang tantangan yang sama. Baris aturan di layar VS dan penanda aturan di arena. Hadiah hari pertama +25 koin tiap tanggal dan kejutan tanggal (1 Jan, 14 Mar, 8 Agu, 17 Agu) sekali per tahun. Simpanan di Meta.save.daily. Kait kecil di game.js (arm, deny, hit, parry, cooldowns, slip, foeScale, heroHpShown, match.toWin di HUD) yang no-op tanpa tantangan aktif. Uji manual: ?daily=YYYY-MM-DD atau Daily.setDate(...) di konsol. 2026-10-05 14:48:24 +07:00
guide Bersihkan sisa AETHER CLASH, kutipan layar loading, dan daftar Yang baru (RENCANA 2.5, 2.7, 2.8) 2026-10-03 07:53:09 +07:00
tests Uji otomatis satu perintah (RENCANA 5.4): node tests/all.mjs menjalankan sintaks semua JS, smoke, 49 pasangan arah singkat oleh bot (galat konsol, angka tidak wajar, jurus terpakai, data peringkat, tampilan Koleksi); perintah dicatat di ENGINE_NOTES dan README 2026-10-05 14:12:57 +07:00
tools Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
.gitignore Initial commit: base game dari AETHER CLASH (Bang Tutorial), MIT + CC BY-NC 4.0 2026-10-01 10:11:31 +07:00
.htaccess Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
DEPLOY.md Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
LICENSE Initial commit: base game dari AETHER CLASH (Bang Tutorial), MIT + CC BY-NC 4.0 2026-10-01 10:11:31 +07:00
LICENSE-ASSETS.md Initial commit: base game dari AETHER CLASH (Bang Tutorial), MIT + CC BY-NC 4.0 2026-10-01 10:11:31 +07:00
README.md Gabung wf/t5-balance: simulator keseimbangan, tier list, uji otomatis 2026-10-05 14:13:44 +07:00
RENCANA.md Tambah RENCANA.md: rencana pengerjaan berurutan 2026-10-02 21:51:17 +07:00
ROADMAP.md Blok, parry, lempar, Arcade, Survival, dua pemain, varian skill, teriakan jurus, tombol sentuh, ganti nama 2026-10-01 20:54:11 +07:00
access.css Tambah mode bantuan dan aksesibilitas (RENCANA 4.2 dan 4.3): modul access.js + access.css 2026-10-05 13:52:22 +07:00
access.js Tambah mode bantuan dan aksesibilitas (RENCANA 4.2 dan 4.3): modul access.js + access.css 2026-10-05 13:52:22 +07:00
announcer.js Initial commit: base game dari AETHER CLASH (Bang Tutorial), MIT + CC BY-NC 4.0 2026-10-01 10:11:31 +07:00
brand.js Bersihkan sisa AETHER CLASH, kutipan layar loading, dan daftar Yang baru (RENCANA 2.5, 2.7, 2.8) 2026-10-03 07:53:09 +07:00
browo.js Penyetelan angka berdasarkan simulator (RENCANA 5.3): Mega Chan dan Gufron diturunkan (78% dan 72% menjadi 58% dan 56%), Solo Man dan Ethanol Man dinaikkan (29% dan 27% menjadi 44% dan 45%), Bro Wo sedikit naik; hanya angka data (manifest, browo.js, pasif), tanpa mengubah mekanik; laporan sebelum/sesudah dan temuan di docs/balance-report.md 2026-10-05 14:12:57 +07:00
daily.css Tantangan harian dan hadiah hari pertama (RENCANA 7.1 dan 7.2): daily.js dan daily.css. Satu tantangan per tanggal lokal dari hash tanggal (aturan, lawan, arena, tingkat) dengan 10 aturan (Darah satu, Hanya ultimate, Tanpa blok, Lawan cepat, Lantai licin, Tanpa lompat, Kombo wajib, Satu ronde, Counter saja, Raksasa). Tombol HARIAN di menu utama membuka kartu tantangan (aturan, deskripsi, lawan, arena, tingkat, hadiah, streak, pilih petarung). Menang = 150 koin + 25 per hari beruntun, sekali per tanggal, masuk rincian koin layar hasil; MAIN LAGI mengulang tantangan yang sama. Baris aturan di layar VS dan penanda aturan di arena. Hadiah hari pertama +25 koin tiap tanggal dan kejutan tanggal (1 Jan, 14 Mar, 8 Agu, 17 Agu) sekali per tahun. Simpanan di Meta.save.daily. Kait kecil di game.js (arm, deny, hit, parry, cooldowns, slip, foeScale, heroHpShown, match.toWin di HUD) yang no-op tanpa tantangan aktif. Uji manual: ?daily=YYYY-MM-DD atau Daily.setDate(...) di konsol. 2026-10-05 14:48:24 +07:00
daily.js Tantangan harian dan hadiah hari pertama (RENCANA 7.1 dan 7.2): daily.js dan daily.css. Satu tantangan per tanggal lokal dari hash tanggal (aturan, lawan, arena, tingkat) dengan 10 aturan (Darah satu, Hanya ultimate, Tanpa blok, Lawan cepat, Lantai licin, Tanpa lompat, Kombo wajib, Satu ronde, Counter saja, Raksasa). Tombol HARIAN di menu utama membuka kartu tantangan (aturan, deskripsi, lawan, arena, tingkat, hadiah, streak, pilih petarung). Menang = 150 koin + 25 per hari beruntun, sekali per tanggal, masuk rincian koin layar hasil; MAIN LAGI mengulang tantangan yang sama. Baris aturan di layar VS dan penanda aturan di arena. Hadiah hari pertama +25 koin tiap tanggal dan kejutan tanggal (1 Jan, 14 Mar, 8 Agu, 17 Agu) sekali per tahun. Simpanan di Meta.save.daily. Kait kecil di game.js (arm, deny, hit, parry, cooldowns, slip, foeScale, heroHpShown, match.toWin di HUD) yang no-op tanpa tantangan aktif. Uji manual: ?daily=YYYY-MM-DD atau Daily.setDate(...) di konsol. 2026-10-05 14:48:24 +07:00
feel.css Rasa kena: tabel penyetelan hit-stop dan getaran, K.O. slow-motion, angka damage pop, peringkat kombo 2026-10-02 22:49:36 +07:00
feel.js Tambah mode bantuan dan aksesibilitas (RENCANA 4.2 dan 4.3): modul access.js + access.css 2026-10-05 13:52:22 +07:00
fenr.js Initial commit: base game dari AETHER CLASH (Bang Tutorial), MIT + CC BY-NC 4.0 2026-10-01 10:11:31 +07:00
files.json Bangun ulang daftar aset precache (simulator dan tier list) 2026-10-05 14:14:13 +07:00
game.js Tantangan harian dan hadiah hari pertama (RENCANA 7.1 dan 7.2): daily.js dan daily.css. Satu tantangan per tanggal lokal dari hash tanggal (aturan, lawan, arena, tingkat) dengan 10 aturan (Darah satu, Hanya ultimate, Tanpa blok, Lawan cepat, Lantai licin, Tanpa lompat, Kombo wajib, Satu ronde, Counter saja, Raksasa). Tombol HARIAN di menu utama membuka kartu tantangan (aturan, deskripsi, lawan, arena, tingkat, hadiah, streak, pilih petarung). Menang = 150 koin + 25 per hari beruntun, sekali per tanggal, masuk rincian koin layar hasil; MAIN LAGI mengulang tantangan yang sama. Baris aturan di layar VS dan penanda aturan di arena. Hadiah hari pertama +25 koin tiap tanggal dan kejutan tanggal (1 Jan, 14 Mar, 8 Agu, 17 Agu) sekali per tahun. Simpanan di Meta.save.daily. Kait kecil di game.js (arm, deny, hit, parry, cooldowns, slip, foeScale, heroHpShown, match.toWin di HUD) yang no-op tanpa tantangan aktif. Uji manual: ?daily=YYYY-MM-DD atau Daily.setDate(...) di konsol. 2026-10-05 14:48:24 +07:00
index.html Tantangan harian dan hadiah hari pertama (RENCANA 7.1 dan 7.2): daily.js dan daily.css. Satu tantangan per tanggal lokal dari hash tanggal (aturan, lawan, arena, tingkat) dengan 10 aturan (Darah satu, Hanya ultimate, Tanpa blok, Lawan cepat, Lantai licin, Tanpa lompat, Kombo wajib, Satu ronde, Counter saja, Raksasa). Tombol HARIAN di menu utama membuka kartu tantangan (aturan, deskripsi, lawan, arena, tingkat, hadiah, streak, pilih petarung). Menang = 150 koin + 25 per hari beruntun, sekali per tanggal, masuk rincian koin layar hasil; MAIN LAGI mengulang tantangan yang sama. Baris aturan di layar VS dan penanda aturan di arena. Hadiah hari pertama +25 koin tiap tanggal dan kejutan tanggal (1 Jan, 14 Mar, 8 Agu, 17 Agu) sekali per tahun. Simpanan di Meta.save.daily. Kait kecil di game.js (arm, deny, hit, parry, cooldowns, slip, foeScale, heroHpShown, match.toWin di HUD) yang no-op tanpa tantangan aktif. Uji manual: ?daily=YYYY-MM-DD atau Daily.setDate(...) di konsol. 2026-10-05 14:48:24 +07:00
input.css Gamepad dan ubah tombol (RENCANA 4.5): modul input.js + input.css. Gamepad: stik/D-pad dan tombol aksi memanggil __game.input (pad kedua = P2 di mode dua pemain), Start = jeda, navigasi menu depan/dialog/layar VS dengan D-pad, A, B, getaran saat kena (dapat dimatikan), toast 'Gamepad terhubung', pemetaan tampil di Pengaturan. Ubah tombol: dialog untuk 11 aksi Pemain 1 (localStorage, deteksi bentrok dengan tukar, Atur ulang, tombol P2/Esc/R dicadangkan); penerjemahan di fase capture; bantuan kontrol, label HUD, dan Daftar gerakan menu jeda mengikuti pemetaan. Catatan mesin diperbarui (mode ringan: diuji manual oleh pengguna) 2026-10-05 13:44:54 +07:00
input.js Gamepad dan ubah tombol (RENCANA 4.5): modul input.js + input.css. Gamepad: stik/D-pad dan tombol aksi memanggil __game.input (pad kedua = P2 di mode dua pemain), Start = jeda, navigasi menu depan/dialog/layar VS dengan D-pad, A, B, getaran saat kena (dapat dimatikan), toast 'Gamepad terhubung', pemetaan tampil di Pengaturan. Ubah tombol: dialog untuk 11 aksi Pemain 1 (localStorage, deteksi bentrok dengan tukar, Atur ulang, tombol P2/Esc/R dicadangkan); penerjemahan di fase capture; bantuan kontrol, label HUD, dan Daftar gerakan menu jeda mengikuti pemetaan. Catatan mesin diperbarui (mode ringan: diuji manual oleh pengguna) 2026-10-05 13:44:54 +07:00
manifest.webmanifest Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
match.js Bersihkan sisa AETHER CLASH, kutipan layar loading, dan daftar Yang baru (RENCANA 2.5, 2.7, 2.8) 2026-10-03 07:53:09 +07:00
menu.css Perbaiki layar hasil yang tetap menutupi arena setelah MAIN LAGI: atribut hidden pada menu depan kini selalu menang atas aturan display data-screen (result dan about) 2026-10-04 00:40:22 +07:00
menu.js Tambah tutorial singkat terpandu (RENCANA 4.1) 2026-10-05 13:55:19 +07:00
meta.css Tier list otomatis (RENCANA 5.2): content/tiers.js dibuat simulator (BAL_TIERS=1), menu Koleksi menampilkan 'Peringkat karakter (versi simulator)' dengan keterangan bukan kebenaran mutlak; berkas dimuat malas dari meta.js sehingga index.html tidak berubah 2026-10-05 14:12:57 +07:00
meta.js Gabung wf/t5-balance: simulator keseimbangan, tier list, uji otomatis 2026-10-05 14:13:44 +07:00
mobile.html Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
mystery.css Slot misteri yang hidup (RENCANA 3.7): lima petak terkunci jadi sistem petunjuk bertahap tanpa gambar baru 2026-10-04 07:25:08 +07:00
mystery.js Slot misteri yang hidup (RENCANA 3.7): lima petak terkunci jadi sistem petunjuk bertahap tanpa gambar baru 2026-10-04 07:25:08 +07:00
offline.html Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
passives.js Tambah pasif dan kelemahan per karakter serta pilihan gaya bertarung (RENCANA 3.2 dan 3.3): satu titik kait passiveMod untuk pemain, CPU, dan P2; gaya Agresif/Seimbang/Bertahan di menu Karakter (Meta.save.style, simpanan lama tetap terbaca), CPU memakai gaya acak per pertandingan; tampil di menu Karakter, layar VS, dan Daftar gerakan 2026-10-04 06:59:25 +07:00
precache.js Bangun ulang daftar aset precache (simulator dan tier list) 2026-10-05 14:14:13 +07:00
preload.js Initial commit: base game dari AETHER CLASH (Bang Tutorial), MIT + CC BY-NC 4.0 2026-10-01 10:11:31 +07:00
pwa.js Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
serve.py Perbaiki ukuran Solo Man, skala pose otomatis, server lokal tanpa cache 2026-10-01 20:43:28 +07:00
stats.css Layar statistik pertandingan (RENCANA 5.5): modul stats.js dengan kait kecil di game.js, kartu Statistik di layar hasil, ringkasan seumur hidup di Koleksi 2026-10-05 13:48:55 +07:00
stats.js Layar statistik pertandingan (RENCANA 5.5): modul stats.js dengan kait kecil di game.js, kartu Statistik di layar hasil, ringkasan seumur hidup di Koleksi 2026-10-05 13:48:55 +07:00
story.css Perhalus tampilan Bayangan: filter lebih gelap dan ungu (hasil hitung warna per nada), aura lebih tipis, lapisan warna ungu hanya sebagai cadangan bila peramban tanpa ctx.filter 2026-10-04 07:32:56 +07:00
story.js Mode cerita Arcade dan bos rahasia Bayangan: kartu cerita pembuka, antar-lawan, bos, dan akhir khas tiap karakter (content/story.js, story.js, story.css); setelah semua lawan kalah muncul BAYANGAN, salinan gelap karakter pemain (HP +40%, damage +10%, CPU excellent, filter ungu tanpa gambar baru) dengan hadiah 1000 koin, pencapaian BAYANGAN, dan gelar; layar VS dan hasil menampilkan BAYANGAN <NAMA>; ?arcade=N untuk uji manual; catatan mesin diperbarui (mode ringan: diuji manual oleh pengguna) 2026-10-04 07:30:20 +07:00
style.css Tambah meter ultimate di HUD (SIAP/mode) dan daftar gerakan di menu jeda (Tahap 2.1 dan 2.4) 2026-10-03 07:27:34 +07:00
sw.js Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
touch.js Initial commit: base game dari AETHER CLASH (Bang Tutorial), MIT + CC BY-NC 4.0 2026-10-01 10:11:31 +07:00
touchlayout.css Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
touchlayout.js Tata letak tombol sentuh yang bisa diatur dan PWA (RENCANA 4.6 dan 4.7) 2026-10-05 13:47:22 +07:00
tutorial.css Tambah tutorial singkat terpandu (RENCANA 4.1) 2026-10-05 13:55:19 +07:00
tutorial.js Tambah tutorial singkat terpandu (RENCANA 4.1) 2026-10-05 13:55:19 +07:00
vs.css Dialog pasangan: balon pembalas muncul belakangan di sisi mana pun, rapikan beberapa baris dialog, dan lepas berkas uji t3-dialog (mode ringan: diuji manual); catatan mesin diperbarui 2026-10-04 06:58:03 +07:00
vs.js Gabung wf/t4-assist: bantuan dan aksesibilitas 2026-10-05 13:56:59 +07:00

README.md

[!NOTE] Konoha Fighting adalah proyek turunan dari AETHER CLASH karya Bang Tutorial (repo asli, tutorial YouTube). Kode asli berlisensi MIT; aset bawaan (karakter, seni, audio, panduan) berlisensi CC BY-NC 4.0, jadi tidak untuk penggunaan komersial. Perubahan di sini: roster karakter diganti dengan karakter parodi buatan sendiri, ditambah mode, toko, efek jurus, dan menu baru. Rincian kredit ada di bagian Kredit dan lisensi.

Konoha Fighting

Game fighting 2D di browser dengan tokoh publik versi parodi: Bro Wo, Mega Chan, Son of Solo Man, Ethanol Man, A Nice, Solo Man, dan Gufron, plus 5 slot misteri. Semua karakter adalah karikatur untuk hiburan; nama dan jurus hanya plesetan. Tanpa instalasi, tanpa dependensi.

Menjalankan

python3 serve.py 8141   # server lokal tanpa cache

Buka http://localhost:8141/?touch=0. (Mode sentuh otomatis di HP.)

Cukup server file statis apa pun; tidak ada langkah build. Sajikan lewat http://localhost atau HTTPS agar layar loading dan cache service worker aktif. Membuka index.html langsung dari disk (file://) tetap bisa dimainkan, hanya tanpa cache. Browser yang didukung: Chrome, Edge, Firefox, dan Safari terbaru (desktop dan HP). Audio mulai setelah klik atau ketukan pertama.

Kontrol

Tombol Fungsi
A D / W / S jalan, lompat (W dua kali = lompat ganda), jongkok
Spasi serang (ketuk 3x = kombo)
↓ ↓ + Spasi uppercut (menjatuhkan lawan)
↓ → + Spasi tinju maju
I / O / P skill 1, skill 2, ultimate
K jurus toko
L (tahan) / L (ketuk) blok / parry
J lempar (menembus blok)
Esc jeda
R ulang (ronde di Latihan, pertandingan di VS Komputer)
P2: ← → ↑ N M , . jalan, lompat, serang, skill 1, skill 2, ultimate

Di menu: W A S D atau tombol panah untuk memilih, Enter untuk konfirmasi, Esc untuk kembali.

Sentuh (HP dan tablet): pad arah di kiri, tombol serang besar dengan skill dan ultimate di kanan lengkap dengan hitungan cooldown, ditambah tombol jurus perintah, blok, dan lempar. HP otomatis membuka mobile.html dalam tampilan landscape; ?touch=1 memaksa tampilan sentuh di desktop dan ?touch=0 mematikannya.

Atur tombol dan pasang aplikasi: di layar sentuh, Pengaturan memuat baris Tata letak tombol (ATUR): seret kotak pad arah, tombol aksi, atau tombol tambahan untuk memindahkannya dan tarik lingkaran di sudutnya untuk mengubah ukuran; tombol ATUR ULANG mengembalikan ke bawaan. Tata letak tersimpan di perangkat. Bila peramban mengizinkan (Chrome, Edge, Android), Pengaturan juga menampilkan Pasang aplikasi agar game bisa dibuka layar penuh dari layar utama; di iPhone/iPad pasang lewat Bagikan, lalu Tambah ke Layar Utama.

Fitur

  • Mode: VS Komputer (4 tingkat, best of 3 ronde), Arcade, Survival, Dua Pemain, dan Latihan.
  • Ultimate sinematik dan mode pasca-ultimate untuk setiap karakter (A Nice berubah jadi Senator).
  • Efek jurus yang bergerak sendiri (gelombang, jurus area, lari dengan bayangan, genangan) dan rasa kena (hit-stop, getaran layar, K.O. gerak lambat, angka damage, peringkat kombo).
  • Blok, parry, dan lempar; koin, toko (jurus toko, varian skill, skin warna), menu Karakter, 20 pencapaian, dan easter egg.
  • Peringkat karakter versi simulator (tier S sampai C, bagian kecil di menu Koleksi), dibuat otomatis dari ratusan ronde bot melawan CPU; angkanya bukan kebenaran mutlak.
  • Lima arena, pengumuman ronde, dan kutipan acak di layar loading.
  • Menu utama berlatar kolase tujuh petarung, tanpa gambar tambahan: seluruhnya disusun dengan CSS dari potret yang sudah ada, dan geraknya menghormati pengaturan "kurangi gerak" di perangkat.
  • Daftar "Yang baru" di layar About, dengan pemberitahuan singkat satu kali saat ada pembaruan.
  • Rencana pengembangan: RENCANA.md (urutan kerja) dan ROADMAP.md (katalog ide).

Struktur proyek

.
├── index.html        # pintu masuk desktop: menu, HUD, dialog, urutan skrip
├── mobile.html       # cangkang landscape untuk HP (rotasi, layar penuh)
├── style.css         # HUD arena, cut-in, kontrol sentuh
├── menu.css          # menu utama, pilih karakter dan arena, hasil, latar kolase, About
├── feel.css          # peringkat kombo
├── meta.css          # toko, karakter, koleksi, toast
├── mystery.css       # gaya slot misteri di layar pilih karakter
├── game.js           # mesin: loop, fisika, pertarungan, otak CPU, rendering, HUD
├── menu.js           # menu: alur layar, roster, arena, tingkat kesulitan, kolase latar
├── match.js          # aturan ronde, timer, arena, penyetelan tingkat CPU
├── feel.js           # rasa kena: hit-stop, getaran, K.O. gerak lambat
├── meta.js           # koin, toko, skin, pencapaian, Arcade/Survival
├── mystery.js        # slot misteri yang hidup: siluet dan petunjuk bertahap dari kemajuan pemain
├── brand.js          # kutipan layar loading dan daftar "Yang baru"
├── content/          # data teks: loading.js (kutipan), changelog.js (Yang baru), mystery.js (petunjuk slot misteri), tiers.js (peringkat, dibuat simulator)
├── announcer.js      # antrean suara pengumuman
├── touch.js          # kontrol sentuh di layar
├── touchlayout.js    # editor tata letak tombol sentuh (+ touchlayout.css)
├── pwa.js            # tombol "Pasang aplikasi" (beforeinstallprompt); manifest.webmanifest, offline.html, assets/pwa/
├── browo.js, fenr.js # kit tulisan tangan (karakter lain berbasis data di assets/<id>/manifest.js)
├── preload.js        # layar boot kunjungan pertama, mengisi cache
├── precache.js       # daftar berkas runtime (dibuat oleh tools/build_precache.py)
├── sw.js             # service worker: gambar dari cache, kode dari jaringan dulu
├── tests/            # uji headless (Playwright): node tests/all.mjs (semua), harness.mjs smoke, balance.mjs (simulator)
├── docs/             # catatan mesin untuk pengembang (ENGINE_NOTES.md) dan laporan keseimbangan (balance-report.md)
├── guide/            # panduan produksi warisan AETHER CLASH
├── LICENSE           # MIT (kode)
├── LICENSE-ASSETS.md # CC BY-NC 4.0 (seni, audio, panduan) dan pengecualian
└── assets/
    ├── <petarung>/   # atlas sprite (WebP) + manifest.js, potret, ikon, FX
    ├── audio/        # klip pengumuman dan musik latar
    ├── menu/         # seni pilih karakter dan latar arena
    ├── ui/           # seni HUD bersama
    └── fonts/        # Rajdhani (SIL Open Font License)

Cara kerja

  • Simulasi langkah tetap. Game maju dalam langkah 1/120 detik dengan pengacak berbenih, jadi pertarungan berjalan sama di setiap perangkat.
  • Sprite. Tiap petarung berupa atlas sprite WebP (diam, jalan, lari, lompat, jongkok, tiga serangan, dua skill, ultimate, terkena, jatuh, bangun) dengan manifest berisi bingkai, titik pijak, dan titik pukul terukur.
  • Kit. Aturan tiap petarung (damage, jangkauan, cooldown, perilaku proyektil) ada di data manifest; pemain dan CPU memakai data yang persis sama.
  • Otak CPU. CPU bereaksi dengan jeda mirip manusia: melompati proyektil, mundur dari serangan, menghukum saat lawan lengah, dan melanjutkan kombo yang benar-benar kena. Tiap tingkat kesulitan mengubah waktu reaksi, agresi, dan kesalahan.
  • Loading. precache.js mendaftar semua berkas runtime beserta hash isinya. preload.js mengunduhnya ke Cache Storage di balik layar boot, dan sw.js melayani gambar dan font dari sana. Pada kunjungan berikutnya hanya berkas yang berubah yang diunduh lagi. Setelah menambah atau mengubah berkas, jalankan python3 tools/build_precache.py.

Pengujian dan keseimbangan

Uji headless memakai Playwright (sudah terpasang di mesin pengembang) dan tidak perlu npm install:

node tests/all.mjs                  # satu perintah: sintaks semua JS, smoke, 49 pasangan karakter singkat, data peringkat; kode keluar 0 bila lolos
node tests/harness.mjs smoke        # smoke saja (7 karakter melawan CPU, gagal bila ada galat halaman)
BAL_N=8 BAL_WORKERS=2 node tests/harness.mjs tests/balance.mjs 2026-10-05   # simulator keseimbangan, tulis docs/balance-report.md
BAL_TIERS=1 BAL_N=8 node tests/harness.mjs tests/balance.mjs 2026-10-05     # juga membuat ulang content/tiers.js (peringkat di menu Koleksi)

Simulator memainkan setiap pasangan 7 x 7 karakter di kedua posisi (bot pemain melawan CPU tingkat hard) tanpa render, lalu menulis tabel menang-kalah dan persen menang per karakter. Cara membaca hasil, riwayat penyetelan angka, dan batasannya ada di docs/balance-report.md; rincian env dan struktur kode ada di docs/ENGINE_NOTES.md.

Penerapan

Unggah folder ke hosting file statis (nginx, Apache, LiteSpeed, Caddy, GitHub Pages, Netlify, dan sejenisnya). Semua jalur bersifat relatif, jadi bisa di akar domain atau subfolder. Buka game dengan garis miring penutup, kirim Cache-Control: no-cache untuk berkas game, dan sajikan MP3 dan MP4 dengan permintaan rentang dan tanpa gzip. Langkah rinci untuk nginx, Apache/LiteSpeed, dan Caddy, beserta skrip pemeriksa berkas setelah unggah, ada di DEPLOY.md (berbahasa Inggris, dari proyek asal). .htaccess untuk Apache/LiteSpeed sudah disertakan.

Kredit dan lisensi

  • Berbasis AETHER CLASH oleh Bang Tutorial (repo asli, tutorial YouTube): kerangka mesin, sistem menu, layar loading, pengumuman, kontrol sentuh, dan panduan di folder guide/ berasal dari karya itu. Game asalnya dibuat langkah demi langkah di YouTube (berbahasa Indonesia).
  • Visual awal dibuat dengan Higgsfield (GPT Image); suara dan pengumuman memakai suara ElevenLabs lewat Higgsfield; musik latar "Midday Showdown" dibuat dengan Suno.
  • Tipografi: Rajdhani oleh Indian Type Foundry, lisensi SIL Open Font License (lihat assets/fonts/OFL.txt).
  • Kode (HTML, CSS, JavaScript) berlisensi MIT.
  • Aset bawaan (karakter, sprite, ilustrasi, efek, video, suara, musik latar, tangkapan layar, dan dokumen guide/) berlisensi CC BY-NC 4.0: bebas dibagikan dan diadaptasi dengan menyebut sumber, tetapi tidak untuk penggunaan komersial.
  • Pengecualian: font Rajdhani tetap di bawah SIL Open Font License. Lihat LICENSE-ASSETS.md.
  • Semua karakter di Konoha Fighting adalah karikatur untuk hiburan, bukan pernyataan tentang orang sebenarnya.