Primal Rampage — prehistoric survival wave shooter
Vanilla JS + Canvas 2D, zero dependencies. Gameplay: campaign waves vs 12 dino species + 3 bosses, arena mode, 7 weapons, hero talents, pets, ult/bombs, card roguelite picks. World: day/night cycle, weather fronts (rain+lightning), Blood Moon weekends, 3 act biomes (jungle -> swamp -> ashlands with lava veins). Meta: gems economy, upgrade tree, quests, bestiary, achievements, shop (weapons/heroes/skins incl. premium), revive, ad-cap system, endless scaling past wave 25, live-painted shop/bestiary icons, pro main menu, auto-aim toggle (F). Headless smoke suite included.
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
# PRIMAL RAMPAGE — Stone Age Survival
|
||||
|
||||
A from-scratch, dependency-free clone of the *Unfair Shooter*-style browser
|
||||
wave shooter, re-themed as **prehistoric tribe survival vs dinosaurs**:
|
||||
endless campaign waves (plus an **Endless Mode** past wave 25), alpha-dinosaur
|
||||
bosses every 5th wave with Jurassic-style footstep tremors, roguelite card
|
||||
picks between waves, an ON FIRE heat/combo system, a full meta-progression
|
||||
layer (bestiary, permanent upgrades, daily quests, achievements, pets,
|
||||
hard currency), and an Arena deathmatch vs rival tribesmen bots.
|
||||
|
||||
Everything is original: code, **procedurally drawn canvas art** (cel-outlined
|
||||
tribal hero with recoil + muzzle flash, raptors with animated tails & jaws,
|
||||
triceratops, dilophosaurus frill-flare spitters, flapping pteranodons, a
|
||||
sail-backed Spinosaurus boss, a T-Rex with hinged jaw…), synthesized
|
||||
WebAudio SFX/music/wind ambience, and a living jungle arena. No assets were
|
||||
taken from any existing game.
|
||||
|
||||
## Run
|
||||
|
||||
```bash
|
||||
cd jsshooter
|
||||
python3 -m http.server 8899
|
||||
# open http://127.0.0.1:8899/
|
||||
```
|
||||
|
||||
No build step — plain script tags.
|
||||
|
||||
## Controls
|
||||
|
||||
| Action | Keyboard / Mouse | Touch |
|
||||
|---|---|---|
|
||||
| Move | WASD / Arrows | left stick |
|
||||
| Aim + fire | mouse (hold LMB or Space; auto-fire on by default) | right stick + 🔥 |
|
||||
| Ultimate | R | ★ |
|
||||
| Bomb | Q | 💣 |
|
||||
| Pause | P / Esc | ⏸ |
|
||||
|
||||
## The cast
|
||||
|
||||
- **Act biomes**: waves 1–9 in **The Green Jungle**, 10–18 descend into
|
||||
**The Murk Swamp** (creeping fog banks, two extra tar pits), 19+ burn
|
||||
across **The Ashlands** (pulsing lava veins that sear anyone standing on
|
||||
them). Ground palette, grass and rim tint all shift per biome.
|
||||
- **Beasts**: Velociraptor, Compys, Dilophosaurus (venom spit — its frill
|
||||
flares before firing!), Triceratops, Stegosaurus (plate rows + thagomizer),
|
||||
Pachycephalosaurus (telegraphed `!` head-butt dash), Pteranodon (splits
|
||||
into chicks), Alpha Raptor. Kills leave blood decals; runners kick dust;
|
||||
the player leaves alternating footprints.
|
||||
- **Alphas (boss waves)**: REX THE ELDER (charges, calls raptors) → SPINO OF
|
||||
THE REEDS (sail, venom barrages) → GIGA BROODMOTHER (splits into two
|
||||
juveniles). Every stride shakes the screen — harder up close — with dust
|
||||
rings and a deep stomp thud.
|
||||
- **Arsenal**: Slingshot → Bone Blowpipe → Spear Burst → Obsidian Lance →
|
||||
Fire Bomb Thrower.
|
||||
- **Heroes**: Raider, Trail Runner, Bear-Clan Brute, Spirit Hunter; war-paint
|
||||
skins incl. premium gem tier (Ashfang Chief, Jade Serpent, Solaris).
|
||||
|
||||
## Living arena & atmosphere
|
||||
|
||||
Campfire hub with flickering light at the world centre · tar pits that slow
|
||||
anything crossing them (55%) · giant buried T-Rex skull + ribcage landmarks ·
|
||||
totem stakes · a 60s **day/night cycle** (night floods the valley in
|
||||
darkness, punched through by warm light around every flame; beasts move
|
||||
8% faster under moonlight) · **tropical rain fronts** with lightning flashes
|
||||
and rolling thunder · **Blood Moon weekend live-op** (real-calendar Sat/Sun:
|
||||
amber ×2, +25% herd budget, red cast + HUD badge) · drifting cloud shadows · circling vulture shadow · floating
|
||||
ash motes · wind ambience with distant beast calls · painted dusk menu scene
|
||||
(volcano, brachiosaurus, raptor silhouettes). Low quality setting disables
|
||||
the air layers for weak devices.
|
||||
|
||||
## Meta progression (commercialization layer)
|
||||
|
||||
- **💪 Permanent upgrades** — six amber-bought nodes applied to every run:
|
||||
Wolf-Heart (+HP), Viper Fangs (+dmg%), Wind Heels (+speed%),
|
||||
Young Sun (+ult rate), Vulture Eye (+amber%), Shaman Pouch (+start bombs).
|
||||
- **📖 Bestiary** — 12 species entries with bilingual lore; completing one
|
||||
pays Ngọn Lửa (🔥 hard currency).
|
||||
- **📜 Daily quests** — 3 of 6 picked deterministically per date, login
|
||||
streak counter, claim rewards (🔥 + $).
|
||||
- **🏆 Achievements** — ten unlock conditions, each grants 🔥.
|
||||
- **🥚 Pet raptor** — bosses may drop an egg; hatch names a companion that
|
||||
follows you and snipes pebbles; persists across runs.
|
||||
- **🔥 Ngọn Lửa economy + rewarded-ad stub** — post-death “watch ad” bonus
|
||||
(5s fake countdown, capped 3/day); swap in a real H5 ads SDK at
|
||||
`setupAdButton()` in `js/ui.js`. Server leaderboards/accounts plug in via
|
||||
`US.net` hooks noted in `js/save.js`.
|
||||
- **🎓 First-run tutorial** — five skippable steps; settings add screen-shake
|
||||
amount slider and effects quality toggle.
|
||||
|
||||
## HUD
|
||||
|
||||
Professional panel layout: vitals card (HP gradient bar + HEAT/ON FIRE +
|
||||
weapon chip + bomb icons), wave banner with pill remaining-count, full-width
|
||||
boss bar with name/percent, economy card (amber + score) with pulsing combo
|
||||
pill, ult dial with % readout and ready flare, danger vignette under 30% HP.
|
||||
|
||||
## Layout
|
||||
|
||||
```
|
||||
index.html shell + DOM UI overlays (menus, quests, bestiary, tutorial)
|
||||
style.css stone-age jungle theme + meta UI bits
|
||||
js/i18n.js EN/VI strings
|
||||
js/save.js profile v2: gems/upgrades/bestiary/quests/achievements/pet
|
||||
js/util.js helpers
|
||||
js/audio.js synth SFX + music loop + wind ambience + stomps
|
||||
js/art.js procedural painters: hero, dinos, ground props, sky, menus
|
||||
js/data.js weapons/heroes/skins/beasts/alphas/cards/upgrades/bestiary…
|
||||
js/entities.js player/enemy/bullet/pickup/particles
|
||||
js/game.js engine: campaign+arena+endless, On Fire, HUD, meta hooks
|
||||
js/ui.js menus/shop tabs/cards/overlays/tutorial/ad stub
|
||||
js/main.js input (keyboard/mouse/touch sticks) + bootstrap
|
||||
```
|
||||
|
||||
## Testing
|
||||
|
||||
`/tmp/smoke.js` is a headless harness (DOM/canvas stubs incl. gradient
|
||||
factories, pinned-target sims) that boots the real modules and simulates
|
||||
campaign, boss waves, cards, shop, arena, plus the meta layer:
|
||||
|
||||
```bash
|
||||
node /tmp/smoke.js # ALL SMOKE TESTS PASSED
|
||||
```
|
||||
|
||||
Publishing: `cloudflared tunnel --url http://127.0.0.1:8899 --no-autoupdate`
|
||||
(quick tunnels are ephemeral — restart to get a fresh URL).
|
||||
Reference in New Issue
Block a user