# Bushveld — credits and implementation notes

Created for Lizrom, September 2026. A single-player 3D arcade hunting game, implemented as a static HTML/CSS/JavaScript app. There is no backend, account or payment system.

## Assets

- Three.js r170 (MIT): shared with Fizz Flight at `../fizz-flight/vendor/three.module.js`. Its original license is at `../fizz-flight/vendor/THREE-LICENSE.txt`.
- Grass Ground diffuse and normal textures: Poly Haven, CC0, https://polyhaven.com/a/grass_ground. Diffuse compressed to 1K JPEG; normal resized to 512px.
- Kiara 1 Dawn panorama: Poly Haven, CC0, https://polyhaven.com/a/kiara_1_dawn. Tonemapped panorama resized to 2K JPEG. Poly Haven license: https://polyhaven.com/license.
- Firearm recordings: The Free Firearm Sound Library by Ben Jaszczak, Brian Nelson, Kevin Heras and Matthew Nanney, CC0. https://opengameart.org/content/the-free-firearm-sound-library. Single shots trimmed, filtered, faded and compressed to mono MP3. Added alternate AK-47 `C_29P.wav` and 9mm `X_31P.wav` takes, outdoor reflections and synthesized mechanical layers. AK-47 uses `AK-47/C_28P.wav`; shotgun uses `Model 12/K_17P.wav`; Glock uses an adapted 9mm recording, `Walther PPQ/X_39P.wav`; the suppressed rifle uses a filtered adaptation of `Savage 10 .300 Blackout/T_27P.wav`. The latter two are sound-design approximations, not recordings of the exact named weapons.
- Rigged animal artwork and animations: **Wildfire Games / 0 A.D.**, [CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0/), https://www.wildfiregames.com/. Original assets and artwork license: https://github.com/0ad/0ad/tree/master/binaries/data/mods/public/art. Converted and adapted for Bushveld: Loop subdivision with skin-weight interpolation, normal smoothing, UV correction, scale/orientation changes, animation retargeting and GLB packing. `elephant.glb`, `rhino.glb`, `lion.glb`, `leopard.glb`, `zebra.glb`, `giraffe.glb`, `bushpig.glb` and `buffalo.glb`, including embedded textures and animations, remain **CC BY-SA 3.0**. Leopard adapts the lioness mesh with procedural rosettes; buffalo adapts the black bull with a new horn boss; bush pig adapts the boar. These are artistic game representations, not zoological scans. Detailed source manifest: `assets/models/SOURCES.json`.
- Lion detail update: additional skin-aware subdivision, muzzle/body refinements, rounded ears, whiskers, tail tuft and layered skeletal mane. The original 256px 0 A.D. atlas was adapted with the OpenAI built-in image generation tool to a 1254px atlas. The adapted lion GLB and texture remain **CC BY-SA 3.0**. Build source, source notes and generation prompt: `assets/models/LION-SOURCES.json`.
- Long-gun base models: **3dassets.dev**, CC0, https://3dassets.dev/. Wood Stock Rifle (#33322), Semi-Auto Shotgun (#33310), Suppressed Bolt Sniper (#33338). Materials, wood grain, sights, optic, first-person mounting, hands and action effects were adapted or added for Bushveld. They are game approximations of the named loadouts.
- Vervet and chacma baboon models: original continuous skinned anatomy, facial detail, hands/feet, groomed fur cards and species-specific procedural skeletal animation, built with `scripts/bushveld/build-primates.cjs`. Original fur swatch generated with the OpenAI built-in image generation tool, reduced to a 1K JPEG and embedded in both GLBs. Geometry and texture provenance, including the generation prompt: `assets/models/PRIMATE-SOURCES.json`. These are original game models, not animal scans.
- Original Glock-style pistol and kettie meshes, articulated primates, surface shaders, hand poses, acacia trees, grass, shrubs, rocks, safari-inspired pentatonic music, kettie sound and synthesized ambience were created for this game. Music uses layered kalimba-like tones, hand-drum synthesis and bass. Synthesized firearm fallbacks cover slow/failed audio downloads.
- Barlow Condensed and DM Sans delivered by Google Fonts, with system fallbacks.

- Anatomical left/right hand meshes: Immersive Web / WebXR Input Profiles Assets, MIT, copyright (c) 2019 Amazon. Source: https://github.com/immersive-web/webxr-input-profiles/tree/main/packages/assets. Downloaded from the generic-hand profile; subdivided with interpolated skin weights and smooth normals, indexed for size, converted to hierarchical finger chains and posed per weapon. Added skin shading, nail plates, sleeves and trigger-finger motion. License: `assets/models/HAND-LICENSE.txt`; source manifest: `assets/models/HAND-SOURCES.json`.

## Research / design references

- theHunter: Call of the Wild — https://callofthewild.thehunter.com/thehunter-base-game/ : open exploration, species behaviour, atmospheric reserves, loadouts and reaction to shots.
- Way of the Hunter: Wild America — https://www.thqnordicmobile.com/en/games/way-of-the-hunter-america/ : roaming animal groups and shot review.
- Adobe Flash end of life — https://www.adobe.com/products/flashplayer/end-of-life-alternative.html : WebGL/HTML5 replaces the unsupported Flash runtime for current desktop and mobile browsers.

No art, code, audio or branding was copied from those commercial hunting games.

## Behaviour

Ten species / 49 animals per entry: 5 buffalo, 3 elephants, 3 rhinos, 4 lions, 4 leopards, 7 zebras, 4 giraffes, 8 bush pigs, 6 vervet monkeys and 5 chacma baboons. Wildlife positions and headings are regenerated from a new cryptographic seed on every entry. One fixed bush reserve, with species-specific sizes, textures and gaits, wandering/grazing/fleeing states, terrain following, obstacle/water avoidance and perimeter limits.

Five weapons, unlimited ammunition, no reloading. Magnified Creedmoor scope; physical front/rear sights on pistol and AK; shotgun bead; aligned kettie forks. Shotgun uses eight spread rays. Damage, range, fire rate, recoil and disturbance radius differ by weapon. Terrain, rocks and trunks block shots. Hits produce an isolated animal render with an exact local-space impact annotation and a small dark red mark; confirmed animals enter the scorecard. The most recent 100 confirmed entries are retained in localStorage on the current device, including points, range, weapon and hit region.

Desktop: W/S or up/down arrows walk; A/D or left/right arrows rotate. Move the mouse to look without dragging. Play/Resume capture the pointer for continuous 360° turning; unsupported browsers use button-free hover look. Click/hold to fire, Space/right-click to aim, L to toggle the field log, Escape to pause and release the mouse. Touch: left stick to move, drag landscape to look, AIM and FIRE. Holding FIRE repeats AK, shotgun and kettie fire. Pause and hidden-tab handling stop wildlife and audio. Sound and music can be switched independently in the pause menu.

## Performance and limits

Instanced scenery and grass; shared textured GLB templates and cloned skeletal rigs; capped device pixel ratio; adaptive reduction to 1× resolution, fewer grass instances and disabled shadows on sustained slow frames. Explicit Performance graphics mode is also available. Assets are served locally apart from optional fonts. The game needs WebGL 2.

This is a browser arcade game, not a photorealistic hunting simulator. Eight species use authored skeletal walk, run, idle and death clips; primates use articulated procedural animation. Death poses settle against ground height. Weapon ballistics and environmental audio remain simplified. Physical mobile devices have not been benchmarked; responsive layouts and real touch events were tested in mobile browser emulation.
