Karakter data-driven (window.FIGHTERS): dash banteng, gelombang suara menembus, ultimate stampede celeng dengan kamera sinematik. Lengkap dengan potret, ikon, cut-in, efek, dan gambar pilih karakter. |
||
|---|---|---|
| assets | ||
| docs | ||
| guide | ||
| .gitignore | ||
| .htaccess | ||
| DEPLOY.md | ||
| LICENSE | ||
| LICENSE-ASSETS.md | ||
| README.md | ||
| announcer.js | ||
| browo.js | ||
| cora.js | ||
| edda.js | ||
| fenr.js | ||
| files.json | ||
| game.js | ||
| haldor.js | ||
| index.html | ||
| isolde.js | ||
| match.js | ||
| menu.css | ||
| menu.js | ||
| mira.js | ||
| mobile.html | ||
| naja.js | ||
| nib.js | ||
| precache.js | ||
| preload.js | ||
| rhea.js | ||
| solan.js | ||
| style.css | ||
| sw.js | ||
| touch.js | ||
| zanni.js | ||
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. Bagian di bawah ini masih dokumentasi asli dan akan diperbarui bertahap.
⚔️ AETHER CLASH
A 2D browser fighting game — Mecha vs Demi-Human. Twelve chibi fighters, cinematic ultimates and a CPU that reads your moves. Runs in any modern browser, on desktop and mobile, with no install.
📺 Tutorial
The whole game — fighters, animations, voices and code — was made step by step on YouTube (in Bahasa Indonesia):
Bikin Game Fighting Pakai ChatGPT (GPT-6 Astra + Higgsfield MCP) — by Bang Tutorial
📑 Contents
- Features
- Screenshots
- Roster
- Controls
- Getting started
- Deployment
- Project structure
- Guides
- How it works
- Credits
- License
✨ Features
- 12 playable fighters in two factions (6 Mecha, 6 Demi-Human). Each has a 3-hit basic chain, two skills and an ultimate with a full-screen cut-in and a voice line.
- VS Computer: best of 3 rounds, 90 seconds each, with 4 CPU levels (Easy, Medium, Hard, Excellent). The CPU dodges projectiles, punishes whiffs, anti-airs jumps and only continues combos that actually landed.
- Training mode with unlimited time, a passive dummy, a combo tracker and a hitbox view.
- 5 arenas: Bellora Courtyard, Sunspire Terrace, Azure Harbor, Elderwood Glade and Moonrise Bastion.
- Announcer calls for character select, rounds, K.O. and the winner.
- Mobile ready: phones open a landscape shell with touch controls (d-pad plus MOBA-style skill buttons with cooldown timers) and a fullscreen button.
- Fast loading: the first visit downloads every asset behind a progress screen (about 34 MB); after that a service worker serves images from the cache, so screens change instantly and reloads are near-instant.
- Settings: master volume, background music, sound test, hitboxes and fullscreen.
- No framework, no build step: plain HTML, CSS and JavaScript with Canvas 2D. Deploy it as static files anywhere.
🖼️ Screenshots
![]() Character select — 12 fighters, player then rival then arena |
![]() VS Computer — SOLAN's Solar Crescent at Moonrise Bastion |
![]() Ultimate cut-in — EDDA calls the Elder Tortoise |
![]() Ultimate — the spirit stomps three times |
![]() Mobile — landscape layout with touch controls |
|
🥊 Roster
| Fighter | Faction | Style | Basic | Ultimate | |
|---|---|---|---|---|---|
| ARCO — The Aether Arm | Mecha | Brawler / drone summon | Iron Chain | Helios Squadron | |
| FENR — The Wolf Ranger | Demi-Human | Agile / werewolf transformation | Ranger Chain | Feral Awakening | |
| MIRA — The Candy Pilot | Mecha | Heavy mech / rocket barrage | Mitten Chain | Rocket Parade | |
| CORA — The Raven Dancer | Demi-Human | Agile / raven swarm | Feather Waltz | Night Murmuration | |
| NAJA — The Dune Cobra | Demi-Human | Mid-range / urumi whip and sand serpent | Viper Lash | Dune Serpent | |
| HALDOR — The Walking Forge | Mecha | Heavy tank / steam forge hammer | Forge Chain | Forge Quake | |
| ZANNI — The Clockwork Jester | Mecha | Trickster / scissor arms and bladed rings | Scissor Jab | Grand Finale | |
| ISOLDE — The White Strider | Mecha | Long-range lancer / stilt-leg charges | Lance Line | Skyfall Lances | |
| RHEA — The Little Orrery | Mecha | Zoner / orbiting orrery spheres | Orbit Strike | Grand Orrery | |
| SOLAN — The Sunmane | Demi-Human | Powerhouse / greatsword and roar | Sunblade | Sunmane Roar | |
| NIB — The Rooftop Post | Demi-Human | Rushdown / twin courier batons | Baton Flurry | Special Delivery | |
| EDDA — The Shell Sage | Demi-Human | Counter defender / staff and shell guard | Staff Forms | Elder Tortoise |
🎮 Controls
Keyboard
| Key | Action |
|---|---|
A / D |
Move left / right |
Double-tap A / D and hold |
Run |
W |
Jump (press again in the air to double jump) |
S |
Crouch on the ground, fast fall in the air; double-tap for a somersault double jump |
Space |
Basic attack (tap up to 3 times for the full chain) |
I |
Skill 1 |
O |
Skill 2 |
P |
Ultimate |
Esc |
Pause / resume |
R |
Restart (the round in Training, the match in VS Computer) |
Skills cancel a basic attack at any moment. The ultimate pose locks you for only 0.5 s; the summon then finishes on its own while you keep fighting.
In the menus: W A S D / arrow keys to select, Enter to confirm, Esc to go back.
Touch (phones and tablets)
- Left: ◀ ▼ ▶ with ▲ above ▼. Slide your finger between buttons; double-tap ◀/▶ to run, tap ▲ again in the air to double jump.
- Right: a big Basic Attack button with Skill 1 / Skill 2 / Ultimate around it, showing each fighter's icons and cooldowns.
- Phones open
mobile.htmlautomatically in landscape. Add?touch=1to force the mobile layout on desktop, or?touch=0to turn it off.
🚀 Getting started
The game is a set of static files, so there is nothing to install or build.
git clone https://github.com/<your-username>/aether-clash.git
cd aether-clash
# any static file server works, for example:
python -m http.server 8000
# or
npx serve .
Then open http://localhost:8000/.
[!TIP] Serve the folder over
http://localhostor HTTPS to get the loading screen and the service-worker cache. Openingindex.htmlstraight from disk (file://) still plays, just without caching.
Browser support: current Chrome, Edge, Firefox and Safari (desktop and mobile). Audio starts after the first click or tap, because browsers require a user gesture.
🌐 Deployment
Upload the folder to any static host (nginx, Apache, LiteSpeed, Caddy, GitHub Pages, Netlify and so on). All paths are relative, so it works at a domain root or in a subfolder such as https://example.com/aether-clash/.
Server checklist:
- Open the game with the trailing slash (
/aether-clash/) and redirect/aether-clashto it. - Serve
.jsas JavaScript,.webpasimage/webp,.mp3asaudio/mpeg,.mp4asvideo/mp4and.ttfasfont/ttf. - Send
Cache-Control: no-cachefor the game files. The game keeps its own hashed copies in Cache Storage, so updates show up immediately. - Serve MP3/MP4 files with range requests (the default for static files) and without gzip.
Step-by-step instructions for nginx, Apache/LiteSpeed and Caddy, plus a script that checks every file after upload, are in DEPLOY.md. An .htaccess for Apache/LiteSpeed is included.
🗂️ Project structure
.
├── index.html # desktop entry: menu, HUD, dialogs, script order
├── mobile.html # landscape shell for phones (rotation, fullscreen)
├── style.css # arena HUD, cut-ins, touch controls
├── menu.css # main menu, character and arena select, results
├── game.js # engine: loop, physics, combat, CPU brain, summons, rendering, HUD
├── menu.js # front end: menu flow, roster, arena and difficulty select
├── match.js # match rules: rounds, timer, stages, difficulty tuning
├── announcer.js # announcer voice queue
├── touch.js # on-screen touch controls
├── fenr.js … edda.js # one kit file per fighter (moves, balance, timings)
├── preload.js # first-visit loading screen, fills the cache
├── precache.js # generated list of runtime files with sizes and hashes
├── sw.js # service worker: cache-first images, network-first code
├── files.json # file list with sizes (used by the deploy check)
├── LICENSE # MIT (source code)
├── LICENSE-ASSETS.md # CC BY-NC 4.0 (art, audio, guides) and exceptions
├── guide/ # design and production guides (Bahasa Indonesia)
├── docs/screenshots/ # images for this README
└── assets/
├── <fighter>/ # sprite atlas (WebP) + manifest.js, portrait, icons, cut-in, FX, voice
├── audio/ # announcer clips and background music
├── menu/ # menu art, arena backgrounds, character select art
├── ui/ # shared HUD art (ARCO kit, drone, cut-in)
└── fonts/ # Rajdhani (SIL Open Font License)
📚 Guides
The guide/ folder holds the design and production notes behind the game (in Bahasa Indonesia). Start from guide/README.md.
| Topic | Guide |
|---|---|
| Adding a new fighter, step by step | character-workflow.md |
| Shared gameplay rules (movement, combos, HP, cooldowns) | gameplay-standard.md |
| Sprite prompts, pipeline, QA and known issues | sprite-prompts.md, sprite-pipeline.md, sprite-qa.md, sprite-known-issues.md |
| CPU brain and difficulty benchmark | cpu-ai.md |
| Menu flow and match rules | main-menu.md |
| Announcer and ultimate voices | announcer-system.md, ultimate-voice.md |
| Arena backgrounds and menu video | stage-background.md, menu-video.md |
| One reference per fighter (kit, balance, assets, voice) | arco · fenr · mira · cora · naja · haldor · zanni · isolde · rhea · solan · nib · edda |
The guides also mention the full production workspace (raw generation sources, pipeline tools, sprite lab pages). Those are several GB and are not part of this repository.
🔧 How it works
- Fixed-step simulation. The game advances in 1/120 s steps with a seeded random generator, so combat plays the same way on every machine.
- Sprites. Each fighter is a WebP sprite atlas (idle, walk, run, jump, crouch, three attacks, two skills, ultimate, hurt, down and recover) with a manifest of frames, foot anchors and measured hit points. Sprites are drawn pixel-exact, never rescaled at runtime.
- Kits. The rules for each fighter (damage, reach, cooldowns, projectile and summon behaviour) live in their own small file. The player and the CPU use exactly the same kit.
- CPU brain. The CPU reacts with a human-like delay: it jumps projectiles, backs out of attacks, punishes recovery, anti-airs and confirms combos. Each difficulty level changes reaction time, aggression and mistakes.
- Loading.
precache.jslists every runtime file with a content hash.preload.jsdownloads them into Cache Storage behind the loading screen, andsw.jsserves images and fonts from there. On later visits only files whose hash changed are downloaded again.
🙏 Credits
- Game design and development: Bang Tutorial
- Visuals: generated with Higgsfield (GPT Image)
- Voices and announcer: ElevenLabs voices via Higgsfield
- Typography: Rajdhani by Indian Type Foundry, under the SIL Open Font License (see
assets/fonts/OFL.txt) - Background music: "Midday Showdown", generated with Suno
📄 License
- Source code (HTML, CSS, JavaScript) is released under the MIT License.
- Assets (characters, sprites, artwork, effects, video, voices, background music, screenshots and the
guide/documents) are released under CC BY-NC 4.0: free to share and adapt with credit, but not for commercial use. - Exception: the Rajdhani font keeps the SIL Open Font License. See LICENSE-ASSETS.md.
If you enjoyed the project, give it a ⭐ and check out the tutorial on YouTube!




