Ten animals form a finished world with no extension API
Clay Safari puts 10 animals and 7 exploration objects into one handcrafted Three.js scene. A child walks or taps around the map, selects an animal, hears its English name, hears a synthesized call, then hears the Chinese name. Discoveries fill a field guide, and finding all 10 triggers a celebration. A robot guide can run the route automatically while A* pathfinding keeps the character out of the river.
This is a small shipped game. The modules separate animal data, world generation, navigation, sound, effects, controls, and the guided tour, but there is no level editor or plugin API. Adding one animal means editing the Blender builder, the item data, animation code, and audio definitions. That makes the repository valuable as readable source. It also means product teams must own a fork rather than configure an off-the-shelf learning platform.
Nineteen checked-in models keep Blender out of the quick start
The repository includes 19 GLB files for the animals, props, explorer, and robot. You need Node 20.19 or 22.12 to run the Vite project, but you do not need Blender just to open the existing world. The README documents a local server on port 5290 and a production preview on port 5291. There are no API keys, databases, or server processes behind the scene.
Blender 5.x enters the picture when you change the figures. One Python script builds the models from rounded primitives and exports them with separate pivot objects for moving parts. The browser then rotates heads, jaws, tails, ears, and wings without a skeletal rig. That workflow is clever and inspectable, yet it assumes the contributor is comfortable crossing between Blender Python and JavaScript. A visual artist cannot add a creature entirely through the browser.
What happened when we ran it
Our fresh Debian sandbox installed commit fadcc85 in 9 seconds on 3 CPUs with 8 GB of RAM and no secrets. Npm added 21 packages, and the installed project occupied 87 MB. The production build completed successfully in 10 seconds. Npm audit reported 0 known vulnerabilities: 0 critical, 0 high, 0 moderate, and 0 low.
The checkout contained 46 files, about 2,676 lines of source, and 4.9 MB on disk. No test script or test target existed, so we skipped tests. Our scan found 0 CI workflow files, no Dockerfile, and no tests directory. The successful build proves that this commit bundles in the measured Node 22 environment. It does not measure frame rate, speech quality, touch behavior, or whether every animal interaction finishes correctly.
Browser speech makes bilingual output device-dependent
The scene carries no recorded audio files. Its 17 animal calls and effects come from oscillators, noise, filters, and wave shaping, while the Web Speech API reads Chinese and English names. This keeps the checked-out project at 4.9 MB and lets it work without an audio CDN. It also hands voice selection and pronunciation to the browser and operating system, so two classroom devices may sound different.
The README lists real CC0 animal recordings as an unchecked idea, along with more languages and a quiz mode. The checklist gives no schedule for any of them. Today, the data entries hold Chinese, pinyin, and English labels. You can add another label field, but proper localization would also need interface copy, speech-language choices, layout checks, and a fallback when the requested device voice is unavailable.
Mobile graphics fallbacks leave keyboard access unfinished
Clay Safari detects coarse pointers or a viewport below 800 pixels and changes its rendering path. Mobile drops bloom, caps pixel density at 1.5, lowers the shadow map, widens the portrait camera, and supplies a virtual joystick. Desktop keeps postprocessing and supports mouse orbit, wheel zoom, WASD movement, a map view, labels, help, and the guided-tour shortcut.
Keyboard movement is present, but object discovery in the README remains click or tap. The full-screen canvas does not expose each of the 10 animals as a focusable control, and the icon buttons depend on title text rather than visible words. A museum kiosk controlled by touch may be fine. A school procurement checklist covering screen readers, switch input, or keyboard-only play will need an HTML interaction layer and deliberate testing.
Cloudflare deployment is simple once the domain is yours
The included Worker configuration serves the built dist directory as static assets. The README pins Wrangler 4.114.0 for login and says forks must change the Worker name and custom domain or remove the route for a workers.dev address. Because there is no application backend, the same output can also sit on another static host that serves the model files with the correct paths.
GitHub showed 180 stars, an MIT license, and 0 open issues or pull requests on October 1, 2026. The last push was September 7, and there are no releases or any issue history to show how maintainers handle reports. Version 0.1.0 is a polished source drop without the history of an established platform. Its strongest use is specific: study the compact scene, adapt the finished activity, and keep ownership of the fork you create.

