Skip to content

GauthamThomas/wildgrove

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WILDGROVE

A top-down, cel-shaded action playground in the spirit of Tunic with Breath of the Wild-style systemic chemistry: everything that should burn, burns; everything that should tumble, tumbles.

engine

Play

node serve.js        # then open http://localhost:8123

(Any static file server works - the project is plain ES modules with all dependencies vendored in vendor/, so it runs fully offline.)

Controls

input action
WASD / arrows move
J / Z / click sword slash
space dodge roll (i-frames)
E pluck / throw bombs

Things to try

  • Slash grass. Slash a torch flame to set your blade alight, then slash grass.
  • Fire spreads cell-to-cell across the field and burns crates, barrels, slimes… and you.
  • Pluck a bomb flower, throw it at the crate pyramid or the red barrels (they chain).
  • Throw a lit bomb into the pond - water defuses it. Water also extinguishes anything burning.
  • Knock the first domino. Bomb the seesaw. Shove the boulder around.
  • Walk north past the fence: the camera tilts up to the vista of drifting isles.

Architecture

Everything is dependency-free ES modules (no build step):

file responsibility
js/main.js game loop, input, camera (incl. vista camera zone + occluder fading), HUD, hints
js/world.js terrain w/ vertex-painted paths, lighting, sky, sun, ocean, vista islands, clouds, birds, trees, torches, ruins
js/grass.js 15k GPU-instanced grass blades - wind + player push in the vertex shader; cut/burn state and cell-based fire spread on the CPU
js/objects.js all physics props + the fire/water/explosion chemistry, bomb flowers, hearts, pooled flame lights
js/player.js fox hero: frictionless velocity-driven controller, roll, sword, flaming-blade state
js/enemies.js hopping slimes: chase, squash & stretch, knockback, respawn
js/particles.js two pooled point-sprite systems (additive fire/sparks, alpha smoke/debris), sized in world-meters
js/audio.js 100% synthesized WebAudio SFX, ambient wind, birdsong, generative chord pads
js/utils.js shared toon material (gradient map), inverted-hull outlines

Tuning knobs worth knowing

  • Fire spread: grass.js - burn duration (cell.t > 2.8), spread chance (0.72), max burning cells (90).
  • Explosion force/radius: objects.js explosion().
  • Camera: main.js bottom of tick() - follow offset, vista blend zone.
  • Grass density/height: grass.js COUNT, scale.

Physics notes (hard-won)

  • The player body uses a zero-friction contact material - otherwise ground friction fights the velocity-driven controller and caps speed.
  • Static ground/walls are explicitly assigned world.defaultMaterial, or per-pair ContactMaterials silently fall back to the default (high-friction) contact.
  • Dominoes use a slick self-pair material so chains don't jam; sword/blast impulses are applied above/off the center of mass so props topple.

Ideas for where to take it next

  • Combat depth: charge slash, shield block, more enemy types (fire-immune, armored).
  • Wind gusts that bend the whole field and push fire directionally (BotW style).
  • Day/night cycle (sun angle + fog color ramp are already isolated in world.js).
  • Secrets under burnable grass patches; a key/door; a shrine on a vista island.
  • Gamepad support (navigator.getGamepads) and mobile twin-stick.
  • Save the fox. He has seen things.

About

🌿 Cel-shaded top-down action playground with systemic fire, tumbling physics, and slime chemistry in three.js

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors