∞ Infinite Jungle (mo.town/jungle)
MIT License - Copyright 2026 Mohit Cheppudira
An endlessly scrolling animated isometric pixel-art jungle with vegetation, birds, animals, etc. See it live at: https://mo.town/jungle.
Built in TypeScript with no runtime dependencies, using WebGL, Canvas fallback and a real headless RGBA renderer. Independent agent classes and bounded procedural-world libraries sit alongside the reusable isometric components. Everything runs as a static site.
Still image · Regenerate with npm run readme:preview.
Requires Node.js 22+ and npm.
npm ci
npm run devOpen http://localhost:5174 for the full-screen jungle. Once loading finishes, click the centered Play button to start with sound on (desktop and mobile). Until then, the scene and its controls stay still. Click the jungle or press Enter / Return to show or hide the compact bottom menu. After Play, only the mute button is visible initially, in the top right. Tap the scene on touchscreens to show or hide the menu; double-tap to show it. The GitHub icon opens the official repository in a new tab. The menu fades after 3 seconds unused and stays visible while Settings or Help is open; ? opens Help even while the menu is hidden. This builds assets/code and starts a local static server. It doesn't watch files: rebuild and refresh after edits. Use PORT=8080 npm run serve for another port.
npm run build # deterministic assets, typecheck, bundle → dist/
npm run serve # serve the existing build
npm run check # build, headless tests, PNG/JSON snapshots
npm run stats # build, test coverage, code/asset sizes → artifacts/stats.json
npm run spacecraft:preview # ship/alien contact sheets and complete encounter sequences
npm run test:coverage # headless coverage → coverage/index.html (uses existing assets)
npm run benchmark # streaming, simulation, composition and batching profiles
npm run assets:preview # animal direction/action contact sheets
npm run plants:preview # all tree and understory forms
npm run motion:preview # close-up supported monkey swing sequence
npm run elephants:preview # staged drinking / spraying pose review
npm run audio:preview # generated stereo sound previews
npm run volcanoes:preview # volcano forms, lava and cartoon wildlife effects
npm run volcanoes:preview -- --motion # animated lava preview
npm run patches:preview # generated landscape groups and their trunk templatesThe stats command prints line counts, headless test coverage, asset and bundle sizes, and decoded atlas memory. It also saves JSON, HTML coverage and LCOV reports; see statistics and measurement details.
Copy dist/ to any static host, including a subdirectory. Source artwork is included; normal builds need no image-generation service, API key, CDN, external font or backend. Development dependencies are TypeScript, esbuild, tsx, sharp, c8 and Node types.
Deploy with ./upload.sh dev to muthanna.com/jungle-dev/ or ./upload.sh prod to muthanna.com/jungle/. Each command builds first, uploads hashed assets with a one-day TTL, then publishes the index with a five-minute TTL. Add --clean to prune the selected environment after a six-minute cache/loading grace period. With no environment, the script prints help. npm aliases: npm run upload:dev and npm run upload:prod -- --clean. See deployment and cache details, including cleanup/concurrency limits and local cache previews.
To change application defaults, edit src/config.ts, then rebuild. It covers startup, camera, density, wildlife probabilities, audio (including every individual sound), rendering and cache limits. See configuration details.
The browser console prints a startup banner and repository link, followed by an expandable report after the first frame: package version, Git revision/commit date and modified status (unknown without Git), config SHA-256, effective seed/settings, renderer, camera/audio state, initial world counts, cache budgets and atlas statistics. Identical source builds retain identical metadata; the date is the commit date, not the build time.
| Key / gesture | Action |
|---|---|
Click / tap / Enter / Return |
Show or hide the bottom menu (hidden by default) |
| Arrows / WASD / drag | Travel without an island boundary; drift resumes 3 seconds after navigation ends |
| Shift + arrows / WASD | Travel faster |
J |
Cycle all 25 animal habitats; briefly pause camera drift (whales surface intermittently) |
N |
Visit dry scrub, meadow, lake, forest, then a stream |
V |
Visit the nearest rare active volcano |
Shift+U |
Cycle saucer → lander → scout; call or visit that design (resumes simulation) |
U |
Watch a rare spacecraft clearing; stops drift until P resumes it |
O / Settings |
With overlays visible: adjust vegetation, wildlife, water, lake size, clearings, hills and sound |
H / five quick touchscreen taps |
Toggle hidden artifact likelihood controls |
Shift+Z |
Visit a rare zen sanctuary; P resumes travel |
? |
Open Help, even with the menu hidden: FPS, per-stage CPU timing, world/cache/memory statistics and expanded, tappable keyboard commands |
R |
Generate a new seeded world |
1 / 2 / 3 |
Rainforest / flowering / wetland preset |
T |
Sun / rain / dusk |
Space |
Pause or resume simulation and automatic travel |
P |
Toggle slow one-way camera drift |
+ / − / mouse wheel / pinch |
Zoom from 65% to 250% |
Home / 0 |
Return to the seeded starting forest |
G |
Show tile seams |
Esc |
Close settings or the field guide |
The field guide commands also work as buttons on mobile and desktop. Tap individual arrows to move one step, or choose a habitat or zoom direction directly.
- Birds: toucans, macaws and parakeets (parrots), kingfishers, seagulls, hawks and vultures.
- Predators: jaguars, wolves and crocodiles.
- Large herbivores: deer and fawns, zebras, giraffes and elephants.
- Primates: monkeys and orangutans.
- Other mammals: black bears and cubs, squirrels, wild boar and beavers.
- Snakes and amphibians: solitary boas, smaller striped snakes and toads.
- Aquatic wildlife: fish schools and surfacing whales.
- Decorative insects: fluttering butterflies and firefly-like glints.
- Broadleaf trees: tall tiered crowns, forked and asymmetric crowns, airy young trees and dense mature forms.
- Palms: fan palms and feather palms.
- Banana plants: broad-leaf clumps, taller forms and young shoots.
- Flowering and fruiting groves: colorful blossoms, fruit-bearing crowns and clustered trees with individual trunks.
- Climbing foliage: hanging vines and lianas.
- Flowers: hibiscus, daisies, blue bellflowers, bird-of-paradise, lavender, red ginger, white starflowers and coral-and-cream wildflower clumps.
- Shrubs: rounded small-leaf shrubs, berry bushes, broad-leaf tropical bushes, airy flowering bushes, pink-tipped bushes and cream-blooming bushes.
- Ferns: tall feather ferns, low lime-green ferns and overlapping fern thickets.
- Groundcover: grasses, meadow tufts, clover, wildflower carpets and leaf litter.
- Wetland plants: mossy bank vegetation, reeds, sedges, lily pads and small aquatic plants.
- Additional source/fixture artwork: flowering bromeliad rosettes and mushroom-covered rocks, alongside the individual tree and understory forms.
-
Rare space visitors: silver saucers, amber tripod landers and violet scouts bring distinct alien crews that explore for 15–30 seconds, return aboard and fly away. Landings require clear dry ground and change between visits. Flying saucers and landers spin, scouts bank, and all have detailed hulls, blinking lights, a whistling hum, a flickering glow and space ripples; exploring crews chatter when sound is enabled. Shift+U cycles through the three ship designs. See spacecraft encounters.
-
Terrain: forest floor, grassy clearings, meadows, dry scrub, sandy shores, muddy banks and gently raised ground.
-
Water: lakes, ponds and connected flowing streams, with ripples, glints, foam and drifting woody debris.
-
Small details: fallen leaves, twigs, sparse root litter and weathered bones/hide at vulture feeding spots.
-
Animation and weather: rooted tree sway, rustling leaves and petals, drifting leaves, rain, dusk light, elephant spray and whale blows.
- Environment: rustling leaves, water, rain and dusk insects.
- Wildlife: bird whistles, trills, chatter, gull-like calls, woodpecker-like drumming, footsteps and recorded elephant trumpets.
- Rare spacecraft, alien crews, landing safety and retained artwork
- Snake behavior, rigs and tree wrapping
- Rare volcanoes, lava hazards and replacement wildlife
- Shared landscape artwork, navigation templates and memory
- Recurring colorful regions, canopy wildlife and black bears
- Application defaults and per-sound tuning
- Elephant anatomy, drinking, play and splash responses
- Natural forest composition, variety and procedural vines
- Landscape controls and smooth shorelines
- Reusable audio library and sound generation
- Animal rhythm, supported swings and flap/glide flight
- Herds, new wildlife, tree variety and forest floor
- Library architecture and rendering contracts
- Independent agents, motion and compact serialization
- Procedural terrain, streaming, scrollback, budgets and statistics
- Animation/model design and research
- Sprite sources and reproducible asset generation
- Performance measurements and tradeoffs
- Testing, snapshots and debugging
- Strategy and original web research
- Contributor/agent instructions
Rare red-and-white pagodas have layered tile roofs, a wide stone base, breezy hanging bells and close-set flowering hedges, grassy gardens, softly edged paths and a wooden pond landing, lotus ponds, koi, ducks and fishing pelicans. Monks independently meditate, tend different flower beds and enter/leave the temple; a separate group walks around a small grove. Shift+Z visits one. H or five quick nearby touchscreen taps opens the hidden artifact-likelihood editor, with expandable groups of sliders and a Teleport button offering Volcano, UFO, and Pagoda destinations. UFO calls and cycles spacecraft just like Shift+U. ? opens the ordinary guide. Changes regrow the same seed and reset scrollback. See sanctuary design and validation; npm run zen:preview writes scene and individual-artifact previews.
Rare solitary tigers, bank-loving hippos and grazing/running bison herds join J wildlife navigation and H → Mammals controls. Tigers use a retained CC0 zoo roar; elephant calls are louder by default. See megafauna behavior, audio provenance and validation; npm run megafauna:preview writes inspectable art and habitat scenes.
Bison and hippos now have two detailed body forms and varied sizes. Bison herds are rarer; elephants and hippos are fewer, with broad preferred regions that usually keep the large herbivores apart. Larger black bears mostly walk on all fours, with occasional upright inspection or tree picking. Help now omits Change habitat, Watch for spacecraft, Find wildlife, Show tile seams, Recenter, and the long guide paragraph; Call spacecraft remains. The corresponding keyboard shortcuts remain available.
Animal contributions follow the minimum quality standard. The wildlife review records the baseline findings; the implementation tracker records the completed five-phase implementation and validation. npm run wildlife:preview produces a packed-frame action review in artifacts/animal-motion.html. The catalog now includes species-specific feeding, grooming and habitat interactions, authored forms, smoother transitions and targeted extra animation frames. Bears retain four-legged walking with curved approaches and planted stops; npm run bears:preview writes an animated review page and contact sheets under artifacts/.
