fighting-konoha/ROADMAP.md

20 KiB
Raw Blame History

ROADMAP — Konoha Fighting

Satu berkas yang memuat semua hal yang bisa dikembangkan dari game ini, dari perbaikan rasa bermain sampai mode baru, toko, skin, easter egg, dan teknis. Setiap butir diberi perkiraan ukuran kerja (S kecil: kurang dari 1 sesi, M sedang: 1–3 sesi, L besar: beberapa sesi) dan biaya kuota gambar (jumlah gambar ChatGPT yang dibutuhkan) bila ada.

Status per 2026-10-02. Dokumen ini adalah usulan; urutan dan isi sepenuhnya bisa diubah oleh pemilik proyek.


Status pengerjaan (2026-10-02, branch feat/gamefeel-shop)

Sudah dikerjakan dan diuji: jarak berdiri 54→80 px dan jangkauan pukulan +28% (1.1, 1.5); skala sprite lompat ×1.14 dan jongkok ×1.10 (1.2); gerakan perintah ↓↓+Spasi (uppercut, menjatuhkan) dan ↓→+Spasi (tinju maju); salto dua-ketuk-S dipindah (lompat ganda tetap W W) (1.4, keputusan 1); counter hit dan pengurangan damage kombo panjang plus peringkat kombo C/B/A/S (1.3 sebagian); koin, toko (5 jurus, 6 skin warna), menu Karakter (skin, jurus toko tombol K, daftar gerakan), Koleksi (15 pencapaian, statistik, ekspor/impor simpanan) (2, 3, 5 sebagian); easter egg: kode Konami, ketik syududu / mbg / esemka, klik judul 7x, ketuk slot tanda tanya (6 sebagian). Belum: launcher/juggle penuh, blok/parry/lempar, skill tambahan per karakter (butuh gambar), skin kostum, mode Arcade/Survival/2P, suara, gamepad, rebind tombol, hit-stop per serangan, kalibrasi ukuran kepala sejati (sekarang pakai faktor tetap).

0. Kondisi sekarang

Sudah ada

  • 7 karakter bisa dimainkan: Bro Wo, Mega Chan, Son of Solo Man, Ethanol Man, A Nice, Solo Man, Gufron. Masing-masing punya kombo 3 pukulan, 2 skill, 1 ultimate sinematik (kamera zoom, layar gelap, lawan tertahan), dan mode pasca-ultimate 10 detik dengan skill dan ultimate pengganti. A Nice berubah menjadi bentuk Senator (atlas sprite kedua).
  • 5 slot misteri bertanda tanya (tidak bisa dipilih) di layar pilih karakter.
  • Mesin karakter data-driven (window.FIGHTERS): karakter baru cukup berupa data + aset, tanpa mengubah game.js.
  • Pipeline pembuatan karakter otomatis (work/pipeline.py): gambar dasar, atlas 15 gerakan, UI, mode, pemasangan.
  • Mode Latihan, VS Komputer (4 tingkat kesulitan), 5 arena, announcer, kontrol sentuh untuk HP.

Belum ada / terasa kaku (catatan pemilik proyek)

  • Jarak pukulan terasa terlalu dekat.
  • Karakter terlihat lebih kecil saat lompat dan jongkok.
  • Kombo terasa tidak ada.
  • Gerakan perintah (misalnya bawah, bawah, Space) belum ada.
  • Tidak ada easter egg.
  • Belum ada toko, menu pengaturan karakter, skin, atau pilihan skill.
  • Suara ultimate dan suara karakter belum ada.

1. Perbaikan rasa bermain (prioritas tertinggi)

Ini membuat semua yang lain terasa lebih baik, dan sebagian besar murah.

1.1 Jarak pukulan dan jarak berdiri (M)

Gejala: pukulan terasa harus sangat dekat. Penyebab yang saya temukan di kode:

  • Tubuh dua petarung dijaga hanya 54 px dari pusat ke pusat (bodyGap), sehingga mereka berdiri hampir bertumpuk.
  • Jangkauan pukulan dasar 105–120 px dibanding ujung kepalan yang terlihat sekitar 80–97 px, jadi serangan kena dari jarak yang tidak sejajar dengan gambar. Rencana:
  • Naikkan jarak badan (sekitar 80–90 px) dan buat dorongan antar-badan lebih halus.
  • Samakan jangkauan hitbox dengan ujung kepalan yang terlihat, lalu beri tiap serangan jangkauan sendiri sesuai gambar (diukur dari atlas, sudah ada datanya di emitters).
  • Tambah tampilan hitbox yang jelas untuk menyetel (sudah ada tombol hitbox di pengaturan).
  • Pukulan jarak jauh vs dekat: beri tiap karakter gaya jarak berbeda (zoner, rushdown, grappler).

1.2 Ukuran sprite saat lompat dan jongkok (S–M)

Penyebab: gerakan satu pose (lompat, salto) diskalakan ke tinggi tertentu (150 px dan 112 px) sedangkan idle 180 px, jadi kepala ikut mengecil. Jongkok juga sedikit lebih kecil. Rencana: kalibrasi skala berdasarkan ukuran kepala (lebar kepala sama dengan idle), bukan tinggi total, lalu bangun ulang atlas ketujuh karakter (tanpa gambar baru, hanya proses ulang). Hasilnya kepala tetap sama besar di semua gerakan.

1.3 Sistem kombo (L)

Sekarang: rantai pukulan 3 kali (ketuk Space), skill bisa memotong pukulan dasar, penghitung "HITS" ada. Yang bisa ditambah:

  • Rantai dengan jendela waktu (ketukan terlalu cepat atau terlambat memutus rantai) dan buffer input supaya tidak ada ketukan yang hilang.
  • Cancel: pukulan ke skill (sudah ada), skill ke skill, dan batalkan di frame tertentu dengan biaya meter.
  • Launcher dan juggle: serangan yang mengangkat lawan, lalu lawan bisa diserang saat di udara beberapa kali, dengan batas agar tidak ada kombo tak berujung.
  • Pengurangan damage bertahap (damage scaling) di kombo panjang dan counter-hit (kena saat lawan menyerang = damage ekstra).
  • Finisher kombo dan kombo tersembunyi per karakter (urutan tertentu memicu efek khusus).
  • Penghitung kombo yang lebih besar dengan "hits, damage, rank" (D, C, B, A, S) dan hadiah koin sesuai rank.
  • Mode Latihan Kombo (Combo Trial) per karakter dengan tantangan bertingkat.

1.4 Gerakan perintah / input khusus (L)

Sekarang: A/D jalan, dua ketuk lari, W lompat, S jongkok, dua ketuk S = salto, Space serang, I/O/P skill. Catatan penting: dua ketuk bawah sudah dipakai salto, jadi "bawah, bawah, Space" akan bentrok. Perlu keputusan: memindahkan salto (misalnya ke W dua kali sudah ada lompat ganda) atau memakai urutan lain. Yang bisa ditambah:

  • Input gerakan gaya fighting game: ↓ → + Space (tinju maju), ↓ ↓ + Space (sapuan bawah / uppercut), ← ↓ → + Space (penyerang jarak jauh), dan lainnya, dengan buffer input.
  • Serangan jongkok (bawah + Space), serangan udara (lompat + Space, lompat + bawah + Space), anti-udara (uppercut).
  • Lempar (throw) yang menembus blok, dan lepas lempar.
  • Blok yang benar (tahan belakang), blok rendah dan tinggi, parry dengan waktu ketat, guard break.
  • Dash dan backdash dengan frame kebal singkat, dorong blok (pushback).
  • Daftar gerakan (move list) per karakter di menu, sehingga pemain tahu inputnya.
  • Setiap karakter mendapat 2–3 gerakan perintah khas (jangkauan, damage, risiko berbeda).

1.5 Rasa kena pukul (S–M)

  • Hit-stop (jeda singkat saat kena) dan getaran layar yang disetel per serangan.
  • Dorongan (knockback) dengan kurva, bukan konstan; variasi animasi kena (atas, bawah, tengah).
  • Efek percikan berbeda per tipe serangan, dan suara kena yang lebih tebal.
  • Efek perlambatan (slow motion) sesaat pada K.O. dan pada kena ultimate.

1.6 Gerak dan fisika (S)

  • Setel kecepatan jalan dan lari, tinggi lompat, gravitasi, dan lompat ganda per karakter (berat vs ringan).
  • Hentikan "meluncur" saat berhenti, tambah efek debu saat mendarat dan berbalik.

2. Toko (Shop)

2.1 Ekonomi koin (M)

  • Sumber koin: menang ronde dan pertandingan, bonus kesulitan, bonus kombo (rank), tantangan harian, pencapaian, kemenangan sempurna, mode Arcade.
  • Penyimpanan: di browser (localStorage) dengan versi data, fitur ekspor dan impor save, dan perlindungan sederhana dari kerusakan data.
  • Layar ringkasan hadiah setelah pertandingan.

2.2 Barang yang bisa dibeli (L)

Kategori Isi Biaya aset
Skill tambahan tiap karakter punya kumpulan 4–6 skill; pemain membeli skill baru untuk dipilih 2–3 baris sprite + 1–2 efek + ikon per skill
Skin warna variasi palet (gratis dibuat dengan recolor-palette) 0 gambar
Skin kostum pakaian baru per karakter (kemeja lain, jas, batik) sekitar 15 gambar per skin
Aksesori topi, kacamata, selempang (perlu penempelan per frame; ditunda) sulit, lihat bagian risiko
Gerakan perintah gerakan khas tambahan (bagian 1.4) 1–2 baris sprite
Gaya ultimate variasi efek ultimate (warna dan bentuk efek) 2–3 efek
Gaya mode variasi mode pasca-ultimate tergantung
Arena latar baru (Bromo, taman malam, stadion merah, dan lainnya) 1–2 gambar besar per arena
Musik lagu latar tambahan audio, bukan gambar
Pose dan kutipan menang pose kemenangan dan kalimat 1 baris sprite per pose
Gelar dan bingkai profil label pemain, bingkai potret kecil
Paket (bundle) beberapa barang sekaligus, diskon tidak ada

2.3 Sistem toko (M)

  • Layar toko dengan tab per kategori dan per karakter, pratinjau animasi sebelum membeli, harga, dan status (terkunci, dibeli, dipakai).
  • Syarat buka kunci selain koin: menang N kali dengan karakter itu, capai rank tertentu, selesaikan tantangan.
  • Barang langka yang hanya muncul di toko pada hari tertentu atau lewat easter egg.
  • Toko harian dengan barang bergilir, agar ada alasan kembali bermain.

3. Menu Karakter (atur skin, skill, dan lainnya)

3.1 Layar "Loadout" per karakter (M–L)

  • Skill: pilih 2 dari kumpulan skill yang sudah dibeli (ultimate tetap satu, atau bisa memilih gaya ultimate).
  • Skin: pilih skin warna dan kostum, lihat pratinjau gerak.
  • Aksesori dan gelar, bila sudah ada.
  • Preset: simpan beberapa loadout (misalnya "Agresif", "Jarak jauh") dan ganti cepat sebelum bertanding.
  • Lihat statistik: kekuatan, kecepatan, jangkauan, pertahanan (dan bagaimana skill pilihan mengubahnya).
  • Daftar gerakan (move list) dan biografi singkat (cerita parodi, tanpa fakta yang menuduh).
  • Pratinjau: karakter memutar idle, serangan, dan ultimate di layar.

3.2 Pilihan di awal pertandingan (S–M)

  • Layar singkat memilih skill sebelum ronde pertama (atau pakai preset), sesuai keinginan pilihan di awal.
  • CPU memilih loadout acak atau sesuai tingkat kesulitan.

4. Jurus tambahan (kumpulan skill per karakter)

Semua jurus di bawah memakai jenis yang sudah ada di mesin (proyektil, gelombang, kawanan, dash, area, pilar, lemparan, dan ultimate volley, stampede, hujan, pilar), jadi biayanya hanya aset.

Karakter Usulan skill tambahan (untuk dibeli)
Mega Chan Sapu Merah (sapuan area), Banteng Kecil (peliharaan membantu), Kepalan Merdeka (pukulan menembus), Orasi Panjang (gelombang berantai)
Son of Solo Man Slepet Turbo, Kemeja Dash, Hujan Kecil (tetesan beruntun), Teriakan Ganda
Ethanol Man Tetes Tebu (lemparan), Botol Molotov Jinak (api di lantai), Tawa Pelan (dorongan area), Semprotan
A Nice Peci Boomerang (lemparan kembali), Sapaan Ramah (pemulihan kecil), Mimbar Retak, Gagasan Ganda
Solo Man Blusukan Dash, Sarung Lilit (menarik lawan), Senyum Tipis (balas serangan), Konvoi Mini
Gufron Hormat Siap (balas serangan), Sarung Putar, Semut Ganda, Syududu Berantai
Bro Wo Tendangan Kuda, Topi Frisbee, Pohon Kecil, Joget Singkat

Setiap karakter bisa mencapai 5–6 skill, sehingga pilihan 2 dari 6 memberi kombinasi gaya yang berbeda.


5. Skin

  • Palet warna (S): pilihan warna baju, rambut, dan efek, dibuat otomatis tanpa gambar baru. Cocok untuk hadiah murah di toko.
  • Kostum penuh (L): tiap skin kostum membutuhkan atlas 15 gerakan baru (sekitar 15 gambar), jadi dibatasi 1–2 per karakter dan dijadikan barang mahal.
  • Skin acara: tema musiman (hari kemerdekaan, tahun baru), muncul pada tanggal tertentu.
  • Skin tersembunyi: diperoleh lewat easter egg atau syarat khusus.
  • Potret dan cut-in ikut skin (untuk skin kostum).

6. Easter egg dan rahasia

Cara menemukannya

  • Kode rahasia (urutan tombol di menu, gaya klasik) yang membuka sesuatu.
  • Input khusus di arena (misalnya urutan tertentu saat pose menang).
  • Klik objek di latar (menara jam, bendera, burung, awan) yang memicu kejutan.
  • Pasangan lawan khusus: dialog atau intro berbeda bila dua karakter tertentu bertemu.
  • Kondisi tak terduga: menang tanpa kena pukul, kalah 10 kali berturut-turut, bermain pada jam tertentu.
  • Slot misteri: petunjuk samar yang bertambah (siluet yang berubah, teka-teki) untuk memicu spekulasi.

Hadiahnya

  • Skin tersembunyi, pose menang, kutipan, gelar, koin, musik rahasia, arena rahasia, dan karakter misteri (bagian 7).
  • Pencapaian (achievement): daftar dengan ikon, sebagian tersembunyi sampai terbuka.
  • Kutipan dan sapaan acak saat intro dan menang (teks parodi ringan).
  • Referensi lucu di arena (papan, spanduk, hewan kecil yang lewat) yang bisa diklik.
  • Hari spesial: perubahan kecil pada tanggal tertentu.

7. Slot misteri dan karakter baru

Lima slot bertanda tanya sudah ada. Bisa dijadikan sistem spekulasi:

  • Petunjuk bertahap: teka-teki, siluet, atau potongan kata yang muncul seiring pemain mencapai target (menang N kali, rank tertentu).
  • Hitung mundur atau tahap pembukaan: slot terbuka satu per satu setelah syarat terpenuhi atau saat Anda merilis karakter baru.
  • Teaser: gambar blur atau siluet setiap kali pemain mengumpulkan sesuatu.
  • Karakter rahasia yang dibuka lewat easter egg (bagian 6).
  • Karakter baru lewat pipeline yang sudah ada (sekitar 35–50 menit dan 25–35 gambar per karakter, termasuk mode). Bisa ditambah kapan saja tanpa mengubah kode.
  • Bos khusus: lawan Arcade yang tidak bisa dipilih pemain.
  • Varian karakter: versi alternatif (seperti bentuk Senator) sebagai karakter terpisah.

8. Mode permainan

Mode Isi Ukuran
Dua pemain lokal VS teman di satu komputer (kontrol sudah dipetakan untuk P2 di panduan, perlu diaktifkan dan diuji) M
Arcade menghadapi semua karakter berurutan, bos di akhir, hadiah koin besar, akhir cerita singkat M
Survival (tanpa akhir) lawan datang bertubi-tubi, darah dipulihkan sedikit tiap kemenangan, skor tertinggi M
Time Attack selesaikan Arcade secepat mungkin S
Boss Rush hanya bos, makin sulit M
Latihan lanjutan dummy yang bisa diatur (diam, melompat, memblok), rekam dan putar ulang, tampilan frame data M
Latihan Kombo tantangan kombo per karakter (bagian 1.3) M
Tantangan Harian satu aturan khusus per hari (darah satu, tanpa skill, hanya ultimate) dengan hadiah M
Turnamen bagan 8 pemain melawan CPU, final panjang M
Tim (2 lawan 2 atau tag) ganti karakter saat bertanding L
Melawan bos bersama (co-op) dua pemain lokal melawan satu bos besar L
Misi tugas per karakter ("kalahkan lawan dengan ultimate saja") M
Mode cerita pendek dialog bergambar antar pertandingan, parodi ringan L
Online bertanding lewat jaringan (WebRTC dengan sinkronisasi ulang) sangat L, risiko tinggi

9. Presentasi dan kenyamanan

  • Layar VS dan intro: layar "VS" sebelum pertandingan, kutipan antar lawan, dan intro khas per karakter.
  • Pose dan kutipan menang; dialog pendek setelah K.O.
  • Suara: teriakan ultimate (rekaman sendiri), suara serangan, suara kemenangan, announcer untuk karakter baru, musik per arena dan per mode.
  • Arena baru: padang pasir ala Bromo, taman malam dengan bangunan putih, stadion merah, pasar malam, dan lainnya; latar bergerak dan penonton yang bereaksi.
  • Kamera dan efek: zoom dramatis saat K.O., gerak lambat, ulang tayang (replay) K.O. terakhir.
  • Pengaturan: mengubah tombol (rebind), dukungan gamepad, ukuran teks, mode warna untuk buta warna, kurangi gerak berlebih (reduce motion), bahasa Indonesia dan Inggris.
  • Layar sentuh (HP): tombol untuk gerakan perintah, tata letak yang bisa digeser.
  • Layar profil: statistik pemain (menang, kalah, kombo terpanjang), koleksi, dan pencapaian.
  • HUD: penghitung meter ultimate yang jelas, indikator mode, ikon status (racun, bakar, tersetun).

10. Teknis dan kualitas

  • Pengujian otomatis: skrip simulasi yang menjalankan CPU melawan CPU dan memastikan tidak ada error (sudah dilakukan manual dengan 50+ pasangan); jadikan suite tetap.
  • Simulator keseimbangan: matriks semua karakter melawan semua dengan statistik menang, untuk menemukan karakter yang terlalu kuat atau lemah.
  • Penyimpanan: format save berversi, ekspor dan impor, pemulihan dari data rusak.
  • Performa: atlas webp sudah ringan (sekitar 30 MB total); tambah muat malas (lazy load) untuk aset toko dan skin.
  • PWA / offline: service worker sudah ada; cek ulang daftar aset (work/build_precache.py) setiap perubahan.
  • Alat produksi: pipeline sudah mendukung pembuatan ulang karakter dengan sedikit perintah; tambah perintah untuk skin palet dan kalibrasi ukuran kepala.
  • Dokumentasi: panduan menambah karakter, jurus, skin, dan arena; daftar semua input dan data.
  • Distribusi: hosting statis (GitHub Pages, Netlify) atau bungkus sebagai aplikasi desktop (Electron). Online multiplayer butuh server tambahan.

11. Risiko dan hal yang perlu dijaga

  1. Tokoh nyata dan parodi. Karakter berbasis tokoh publik dengan nama plesetan. Repo sebaiknya tetap privat sampai ada keputusan sadar untuk membuka. Jaga nada ringan, tanpa tuduhan fakta, tanpa unsur agama, dan tanpa merendahkan secara pribadi. Gufron adalah warga biasa yang viral, jadi lebih sensitif.
  2. Bentuk Senator (A Nice) terinspirasi karakter game berhak cipta. Cukup aman untuk proyek pribadi, tetapi hati-hati bila dipublikasikan.
  3. Lisensi aset bawaan. Aset awal dari AETHER CLASH (Bang Tutorial) berlisensi CC BY-NC 4.0: wajib kredit dan tidak boleh komersial. Karena itu toko dengan uang sungguhan tidak boleh sebelum seluruh aset bawaan diganti. Koin dalam game (tanpa uang asli) aman.
  4. Suara tokoh asli tidak ditiru; pakai rekaman sendiri atau suara umum.
  5. Foto acuan wajah. Dipakai sebagai acuan gaya; hasilnya tetap ilustrasi pixel art. Simpan foto hanya di folder lokal yang tidak ikut git.
  6. Data pemain. Penyimpanan hanya di browser; jangan menyimpan data pribadi.

12. Urutan pengerjaan yang saya sarankan

Tahap Isi Ukuran Biaya gambar
A. Perbaiki rasa bermain bagian 1.1, 1.2, 1.5, 1.6 (jarak, ukuran kepala, rasa kena, fisika) M 0
B. Kombo dan input perintah bagian 1.3, 1.4 (rantai, cancel, launcher, gerakan perintah, daftar gerakan) L sedikit (baris sprite gerakan perintah)
C. Loadout dan toko dasar menu karakter, pilih 2 skill, koin, skin palet, toko dengan skill awal L sekitar 2–3 per skill
D. Konten toko skill tambahan per karakter, arena, gaya ultimate, kutipan L banyak (bertahap)
E. Mode permainan Dua pemain, Arcade, Survival, Latihan lanjutan, Latihan Kombo L sedikit
F. Easter egg dan slot misteri kode rahasia, petunjuk bertahap, achievement M sedikit
G. Poles suara, gamepad, rebind, replay, bahasa, layar profil M 0
H. Distribusi pengujian, dokumentasi, hosting, opsi online L 0

Alasan urutannya: tahap A dan B membuat game terasa seperti fighting game sungguhan sebelum menambah barang untuk dibeli. Tahap C membutuhkan struktur skill yang bisa dipilih, yang paling mudah dibangun setelah gerakan dan input beres.


13. Keputusan yang saya butuhkan dari pemilik proyek

  1. Input "bawah, bawah, Space": salto saat ini memakai dua ketukan bawah. Pindahkan salto, atau pakai urutan lain untuk gerakan perintah?
  2. Jangkauan pukulan: apakah maksudnya berdiri terlalu rapat, atau pukulan yang harus sangat dekat? (Saya akan menyetel keduanya dan Anda menilai.)
  3. Jumlah skill per karakter di toko: 4, 5, atau 6?
  4. Skin: cukup palet warna dulu, atau langsung 1 kostum penuh per karakter?
  5. Mode permainan yang paling Anda inginkan setelah Dua Pemain: Arcade atau Survival?
  6. Slot misteri: mau saya bangun sistem petunjuk bertahap, atau cukup tetap tanda tanya sampai Anda mengisinya?
  7. Karakter baru berikutnya: ada nama dan foto yang ingin dimasukkan untuk 5 slot?
  8. Rencana rilis: tetap privat, hanya dibagikan ke teman, atau akan dibuka publik? (Menentukan seberapa hati-hati soal bagian 11.)