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:
Primal Rampage Bot
2026-08-23 04:26:58 +00:00
commit 2024ea48b5
14 changed files with 7164 additions and 0 deletions
+125
View File
@@ -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 19 in **The Green Jungle**, 1018 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).