# Chrome Dino 3D — Nines forest runner

This game is adapted from https://github.com/addyosmani/chrome-dino-3d,
which is based on https://github.com/Priler/dino3d.

Upstream revision: cdcc3b328daa5cdce4147c81384999eddcbb4887

The upstream LICENSE (GPL version 3) is preserved at [LICENSE](LICENSE).
The original runtime and component source are in [source/js/](source/js/build.js).
The reproducible integration is [build-dino-reference.py](source/build-dino-reference.py).
The replacement model loader is [model-loaders.js](source/model-loaders.js).
The world design is [world-design.js](source/world-design.js), sky and sunlight are
[atmosphere.js](source/atmosphere.js), hero animation is [hero-motion.js](source/hero-motion.js),
ground contact is [hero-feedback.js](source/hero-feedback.js), and interface is
[interface.js](source/interface.js).
The early three-height flying-hazard progression is [crow-progression.js](source/crow-progression.js).
Endless progression and encounter spacing are [forest-run.js](source/forest-run.js), and
fitted rock and timber hazards are [forest-obstacles.js](source/forest-obstacles.js).
Equal obstacle warning distance is [obstacle-visibility.js](source/obstacle-visibility.js);
responsive framing in `hero-motion.js` fits that same approach corridor on every screen.
Replacement model data and rebuild source are at [/dino-reference-models/README.md](/dino-reference-models/README.md).

The active Rex is the user-supplied LasquetiSpice model, restored after the
Quaternius trial. Its textured skin, original animation and presentation are
adapted to the existing game's controls. See its
[CC BY 4.0 credits and modifications](/dino-reference-models/sketchfab-rex-CREDITS.md)
and [preparation script](source/build-sketchfab-rex.py).
The Quaternius trial remains in local source with its provenance, but is not loaded.
The original Blender creek kit is authored by Nines. Its reproducible source is
[build-creek-environment.py](source/build-creek-environment.py), with
[asset notes](source/creek-environment.md).
Forest-floor and sandstone albedo textures were generated for Nines using built-in imagegen.
Exact prompts and provenance are in [forest-floor.md](source/forest-floor.md) and
[terrain-textures.md](source/terrain-textures.md). The earlier sand texture remains
in source but the forest ground uses the organic soil texture.

Changes: local asset paths; omission of AI summaries/translation services;
correct completion of asynchronous asset loads; new Blender scenery and bird models;
the original Sketchfab Rex at a slightly smaller uniform scale with a taller chest/neck posture,
a brighter coral/burgundy skin recolor preserving texture detail and natural facial features,
original normal, gloss, specular and occlusion shading;
a forest glade with layered trees, Blender-authored grass and ferns,
rounded mottled creek stones, an earthy trail, continuous riverbanks and flowing water;
grooved bark, mossy roots, driftwood/gravel bars and low trail litter;
solid fractured-rock and broken-trunk hazards with lighter mineral faces and warm exposed wood,
fitted to the original collision bounds;
planted crouching feet, phased takeoff/tuck/landing and pooled footfall, takeoff and landing dust;
an animated impact reaction before the result screen, with physics and score
stopped at collision;
a living ready preview and quieter interface;
audio muted by default. Runs continue until a collision, with increasing speed,
score, a saved personal best, pause/resume and retry. The ten-second cutoff and
fixed three-encounter sequence are no longer active. Crows unlock at 50 points
(about five seconds). Three early
introductions at 50, 100 and 150 points use distinct shuffled flight heights;
each waits for a distant slot with safe arrival gaps. Later flight heights use
a shuffled three-height bag. New random groups are spaced by their collision
extents and approach times, including the crow's faster flight, with recovery
room at the original maximum speed. Reused ground hazards reset their yaw;
retries clear milestone state and repeated bird unlocks cannot grow the pool.
Every crossed score milestone triggers once, including low-frame-rate runs at
the highest score rate. All viewports reveal obstacles at z=-45, 60 units
ahead of the player. The complete Rex and approaching hazards fit on portrait and
landscape screens; extra width does not reveal later hazards earlier. Original
camera position/rotation, movement, collision rules, scoring and later speed/score
progression remain from the upstream runtime. The adapters clear stale airborne
state on retry, preserve brief jump inputs, and require deliberate resume after
focus loss. The sky dome fits within the camera's far plane. The runtime loads
only the current Rex and obstacle geometry; hidden legacy hero frames use small
placeholders. Third-party libraries retain
their own notices.
