# Asset Credits

## Mechanical overhaul — original project assets

- `public/models/mechanical-lock.glb`: authored via `scripts/build-mechanism.py` using official Blender 5.2 in background mode. Editable source: `assets/source/mechanical-lock.blend`. Separate named housing, cylinder, five component stacks, springs, tool and lever. 10,528 triangles; 244,848 bytes; six reported materials including unused default; no downloaded textures. Runtime poses are driven by normalized gameplay state, not copied animation clips.
- `assets/source/locksmith-survival-branding.png`: original built-in image-generation output for Alpine survival branding and aged brass, steel and glove reference. Converted to 1200×800 WebP in `public/share.webp`. Original brief: stormy Alpine mountains, aged brass lock exterior, black textured glove, gold LOCKSMITH SURVIVAL lettering. No copied TOOOL artwork. An earlier internal concept-sheet generation failed; the mechanical model was authored directly instead.
- `public/favicon.svg`: original geometric mountain/keyhole mark authored for this project.
- Runtime GLB plus social artwork remain below the additional 5 MB budget; generated source raster and editable Blender source are not public downloads. Material references are not claimed as scanned PBR maps.

This first vertical slice uses authored procedural geometry, materials, and Web Audio synthesis. No external art or audio assets are bundled.

## Runtime libraries

- Three.js 0.185.1 — https://github.com/mrdoob/three.js — MIT License.
- Rapier 3D 0.20.0 / compat build — https://github.com/dimforge/rapier — Apache-2.0 License.

The procedural mountain, rocks, residential portal, tool cache, glove view model, dust, debris, and synthesized sound cues are original project work and can be replaced later with verified permissive assets.

## Generated raster materials

- `public/textures/alpine-ground-albedo.png` — generated with the built-in image generation tool for this project; seamless dark slate/scree albedo, no third-party asset license.
- `public/textures/alpine-rock-albedo.png` — generated with the built-in image generation tool for this project; seamless fractured slate/gneiss albedo, no third-party asset license.
- `public/textures/alpine-snow-albedo.png` — generated with the built-in image generation tool for this project; seamless wind-scoured snow/ice albedo, no third-party asset license.
- `public/textures/portal-steel-albedo.png` — generated with the built-in image generation tool for this project; seamless weathered painted-steel albedo, no third-party asset license.
- `public/textures/portal-concrete-albedo.png` — generated with the built-in image generation tool for this project; seamless cold aggregate-concrete albedo, no third-party asset license.

The matching `*-normal.png` and `*-roughness.png` files are deterministic technical maps derived from the generated albedos by `scripts/generate-material-maps.mjs`. Albedos stay 512²; technical maps are kept at 256² to control runtime payload. Normal/roughness maps use linear color handling in Three.js. No real-world lock or bypass data is present.
