MARK ZERO - CREDITS
===================
Made by Jurek (Gzowo Space Program), with AI help.
A free, non-commercial fan game. Not affiliated with, endorsed or sponsored by Marvel, Disney or
Sony. Iron Man, Spider-Man and all related characters and names are trademarks of Marvel.
MUSIC (CC BY 4.0 - https://creativecommons.org/licenses/by/4.0/)
-----
"Volatile Reaction" - Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0 License
"Epic Hero" - migfus20 (opengameart.org)
Licensed under Creative Commons: By Attribution 4.0 License
SOUND EFFECTS - attribution required
-------------
Gravity Sound (Wikimedia Commons) - CC BY 4.0
metal hits, latches, servo scrapes, winds, punches, charging, chimes and many more
Work With Sounds / Museum of Technology, Stockholm; recordings by Torsten Nilsson (Wikimedia Commons) - CC BY 4.0
Saab J35D Draken turbojet (thrusters), sandblasting, sirens, foghorn, harbour, theatre stage
Michel Baradari (submitted by qubodup, opengameart.org) - CC BY 3.0
"11 male human pain/death sounds"
HaelDB (opengameart.org) - OGA-BY 3.0
"Male Grunt/Yelling sounds"
reemax (opengameart.org) - CC BY 3.0
Also used, no attribution required (credited with thanks): Kenney (CC0), rubberduck (CC0),
Freesound CC0 contributors, OpenGameArt CC0 contributors, and Jurek's own recordings.
TEXTURES, CODE, FONTS
---------------------
City surface textures: ambientCG (CC0) - https://ambientcg.com
Water normal maps: three.js examples (MIT, (c) three.js authors)
Engine: three.js r186 (MIT) - https://threejs.org
Server: Node.js (MIT) and the ws library (MIT)
Fonts: Barlow Condensed and JetBrains Mono (SIL Open Font License 1.1)
3D suits, characters, city, animations: made for Mark Zero.
FULL PER-FILE CREDITS
---------------------
Every sound with its source URL, author and licence, as recorded by the people who made the
sound banks:
---------------------------------------------------------------- v3assets/audio/music/CREDITS.md
# Music credits (both tracks are CC BY 4.0 — attribution required, shown in the game's credits)
| file | track | author | licence | source | used for |
|---|---|---|---|---|---|
| `volatile_reaction.ogg` | "Volatile Reaction" | Kevin MacLeod (incompetech.com) | CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/ | https://incompetech.com/music/royalty-free/ | intro trailer + menu loop |
| `epic_hero_trailer.ogg` | "Epic Hero" (Track 34, trailer_4) | migfus20 | CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/ | https://opengameart.org/content/epic-hero-epic-orchestra | Spider-Man theme (Jurek: "epic trailer for Spider-Man") |
Credit lines (verbatim for the credits screen):
- "Volatile Reaction" Kevin MacLeod (incompetech.com) — Licensed under Creative Commons: By Attribution 4.0 License
- "Epic Hero" by migfus20 (opengameart.org) — Licensed under Creative Commons: By Attribution 4.0 License
Changes: re-encoded from the downloaded MP3s to Ogg Vorbis (oggenc -q 6) after EBU R128 loudness normalisation
(ffmpeg loudnorm I=-16 LUFS, TP=-1.5 dB); no edits to the music. Loop points (menu) are set in playback only:
`web/js/intro/timeline.json`. Downloaded 2026-09-26 by the orchestrator with Jurek's approval (SOURCES.txt).
---------------------------------------------------------------- v3assets/audio/ui/CREDITS-ui.md
# UI sound pack — credits
Every file in `v3/assets/audio/ui/` is built by `v3/design/tools/build_ui_audio.py` from **real recordings only** (no oscillators): layered, varispeeded, filtered, with a small convolution plate made of filtered noise. Delivered as `.ogg` (oggenc -q 6) + `.mp3` (192k), 44.1 kHz stereo, each normalised to max-momentary −16 LUFS (400 ms K-weighted) and capped at −1.5 dBFS peak; the per-sound mix level is `gain` in `index.json` (bus `ui`).
## Licences in use
* **CC0 1.0 / Public domain** — no attribution required (credited anyway).
* **CC BY 4.0** — inherited through reused NEXT bank layers; attribution below is required in the game credits.
## A. Recordings fetched for this pack (Wikimedia Commons) — code `C:` in the recipes
| source | author | licence | used as |
|---|---|---|---|
| [Clickick switch.ogg](https://commons.wikimedia.org/wiki/File%3AClickick_switch.ogg) | stephan | Public domain | switch clicks (back, thump) |
| [Dipswitch on off.ogg](https://commons.wikimedia.org/wiki/File%3ADipswitch_on_off.ogg) | stephan | Public domain | muted knocks (error) |
| [Mechanical tack.ogg](https://commons.wikimedia.org/wiki/File%3AMechanical_tack.ogg) | stephan | Public domain | slide + latch (tab, panels) |
| [Computer mouse single click.ogg](https://commons.wikimedia.org/wiki/File%3AComputer_mouse_single_click.ogg) | Darklanlan | CC0 | click body (confirm, joined) |
| [415061 gsb1039 clock-chime-tubebells-handbells-vibes.wav](https://commons.wikimedia.org/wiki/File%3A415061_gsb1039_clock-chime-tubebells-handbells-vibes.wav) | gsb1039 | CC0 | tubular-bell strikes, varispeeded x2-x10 (the 'sparkle' of every sound) |
| [SingingBowl1.ogg](https://commons.wikimedia.org/wiki/File%3ASingingBowl1.ogg) | BambooBeast | Public domain | bowl bloom/shimmer (room, map, error beating) |
| [SingingBowl2.ogg](https://commons.wikimedia.org/wiki/File%3ASingingBowl2.ogg) | BambooBeast | Public domain | bowl shimmer (panels, retint, glowing suits) |
| [Wine glass.ogg](https://commons.wikimedia.org/wiki/File%3AWine_glass.ogg) | hugh | Public domain | downloaded, auditioned, NOT used (too quiet/noisy) |
| [Tuning-fork-440Hz.ogg](https://commons.wikimedia.org/wiki/File%3ATuning-fork-440Hz.ogg) | jmuehlhans | CC0 | pure tone (countdown, ping, scan) |
| [Auslösegeräusch SLR Serienaufnahme mit AF Schärfepriorität.ogg](https://commons.wikimedia.org/wiki/File%3AAusl%C3%B6seger%C3%A4usch_SLR_Serienaufnahme_mit_AF_Sch%C3%A4rfepriorit%C3%A4t.ogg) | Smial (talk) | CC0 | camera-shutter micro clicks (focus, ticks, zoom, ping) |
## B. Layers reused from the vetted NEXT banks — code `N:` in the recipes
Taken as-is from `next/assets/audio//.ogg`; their original sources, authors and cuts are logged row by row in the bank credits (`next/assets/audio/{classics,core,mk42,mk85,hulkbuster,spider}/CREDITS-*.md`, which in turn point at `Projects/MarkZero/audio/CREDITS.md` and Jurek's own recordings). Used here: `cl_servo_small, cl_mk1_hydraulic, cl_plate_clank, cl_flame_start, cl_servo_fast, cl_clamp_lock, cl_faceplate_close, thruster_whine, mk42_whoosh_1, mk42_whoosh_2, mk42_whoosh_big_1, mk42_lock_1, mk42_lock_2, mk42_lock_big_1, mk42_lock_big_2, mk42_suit_ready, im_thruster_burst, mk85_nano_flow, mk85_nano_crystallise, mk85_nano_lock, hb_clamp_heavy, hb_step_heavy_1, hb_hydraulic_hiss, sp_nano_seal, sp_leg_deploy, sp_lens_focus, sp_thwip_1, sp_sneaker_1, sp_cloth_1`.
**Required attribution inherited through those layers (CC BY 4.0):** Gravity Sound (Wikimedia Commons — latch/lock, metal hits, servo scrapes, 'Complete' chime); Work With Sounds / Torsten Nilsson (Saab J35D Draken, sandblasting — thruster whine); plus the other CC BY 4.0 rows listed in `CREDITS-mk85.md` for `im_thruster_burst` and `mk85_nano_flow`. Everything else in those banks used here is CC0 / public domain or Jurek's own recordings.
## C. Per-sound recipes
| id | ms | gain | what | recipe |
|---|---|---|---|---|
| `ui_focus_1` | 94 | 0.55 | focus moved to the next item (round-robin 1-3) | C:SLR shutter click #1 HP1.8k + C:tubular bell strike 0 x8 speed, 90 ms, -13 dB |
| `ui_focus_2` | 94 | 0.55 | focus moved to the next item (round-robin 1-3) | C:SLR shutter click #4 HP1.8k + C:tubular bell strike 1 x8 speed, 90 ms, -13 dB |
| `ui_focus_3` | 94 | 0.55 | focus moved to the next item (round-robin 1-3) | C:SLR shutter click #7 HP1.8k + C:tubular bell strike 2 x8 speed, 90 ms, -13 dB |
| `ui_slider_tick_1` | 34 | 0.4 | slider step (1-3 = low/mid/high end of the range) | C:SLR click #9 HP3k, varispeed x1.00 |
| `ui_slider_tick_2` | 30 | 0.4 | slider step (1-3 = low/mid/high end of the range) | C:SLR click #10 HP3k, varispeed x1.12 |
| `ui_slider_tick_3` | 26 | 0.4 | slider step (1-3 = low/mid/high end of the range) | C:SLR click #11 HP3k, varispeed x1.26 |
| `ui_confirm` | 987 | 0.8 | confirm / select (cross or A) | C:mouse click + C:switch x0.45 LP900 (thump) + C:bell x4 450 ms + C:bell x8 250 ms, 0.25 s plate |
| `ui_back` | 824 | 0.65 | back / cancel (circle or B) | C:SLR click reversed LP6k (air) + C:switch #2 + C:bell x3 280 ms, 0.2 s plate |
| `ui_error` | 319 | 0.7 | invalid action / cannot select (pairs with danger colour) | C:dipswitch x0.6 + x0.55 LP2k (two knocks 85 ms apart) + C:singing bowls 1 & 2 detuned 6 % (beating) |
| `ui_tab` | 199 | 0.6 | tab / shoulder-button page switch (L1/R1) | C:mechanical tack x1.35 HP400 + C:bell x8 80 ms |
| `ui_panel_open` | 1213 | 0.7 | panel / menu opens (holo slide-in) | N:mk42_whoosh_1 0.35-0.8 s HP500 + N:cl_servo_small x1.5 + C:tack latch + C:bowl 2 x2 + C:bell x8 |
| `ui_panel_close` | 1036 | 0.65 | panel / menu closes | N:mk42_whoosh_1 reversed + N:cl_servo_small x1.2 + C:tack latch x0.8 LP5k |
| `ui_room_created` | 2688 | 0.9 | room opened / hosted — a small ceremony | N:mk42_lock_big_1 + C:bell x2 1.4 s + C:bell x3 1.0 s + C:bowl 1 x2 + C:bell x8, 0.6 s plate |
| `ui_player_joined` | 1440 | 0.75 | a player joined the room (rising third) | C:mouse click + C:bell x4 then x5.04 (+4 st) 110 ms apart + C:bell x10 |
| `ui_player_left` | 1409 | 0.6 | a player left the room (falling third, darker) | C:bell x5.04 then x4, LP 4k / 3k, 120 ms apart |
| `ui_ready` | 981 | 0.75 | player toggled READY | N:mk42_lock_1 (clamp click + ring + thump) + C:bell x6 350 ms |
| `ui_unready` | 462 | 0.6 | player un-readied | N:mk42_lock_2 x0.85 LP4k |
| `ui_countdown_3` | 280 | 0.7 | match start countdown tick 3 | C:SLR click + C:tuning fork x2 (880 Hz) 280 ms |
| `ui_countdown_2` | 280 | 0.7 | match start countdown tick 2 | C:SLR click + C:tuning fork x2 (880 Hz) 280 ms |
| `ui_countdown_1` | 280 | 0.7 | match start countdown tick 1 | C:SLR click + C:tuning fork x2 (880 Hz) 280 ms |
| `ui_countdown_go` | 3014 | 1.0 | match start — GO | N:mk42_lock_big_2 + N:im_thruster_burst + C:fork x3 (1320 Hz) + C:bell x2 + N:mk42_whoosh_big_1, 0.7 s plate |
| `ui_map_zoom_in` | 215 | 0.5 | map zoom step in (R2) | N:sp_lens_focus x1.25 + C:SLR click + C:bell x9 |
| `ui_map_zoom_out` | 173 | 0.5 | map zoom step out (L2) | N:sp_lens_focus reversed x0.9 + C:SLR click |
| `ui_map_ping` | 3290 | 0.85 | map ping / mark (square) — sonar with two echoes | C:SLR click + C:tuning fork x3 (1320 Hz) 700 ms + C:bell x6, echoes at 220/440 ms LP 5k/3k, 0.8 s plate |
| `ui_map_open` | 2253 | 0.8 | full map opens — pairs with the rise-reveal (starts at t=0, bell lands at 120 ms) | N:mk42_whoosh_2 + C:bowl 1 x3 + C:bell x4 + C:SLR click, 0.5 s plate |
| `ui_map_close` | 517 | 0.65 | full map closes | N:mk42_whoosh_2 reversed + C:switch |
| `ui_retint_wave` | 2899 | 0.7 | palette wave sweeping the UI on suit change (layer under the suit stinger) | N:mk42_whoosh_big_1 + C:bowl 2 x4 + C:bell x8, 0.6 s plate |
| `ui_scan_sweep` | 895 | 0.35 | map / HUD scan sweep passing (quiet one-shot; retrigger with each sweep) | N:mk42_whoosh_1 band-passed 3.5k + C:fork x4 faint |
| `ui_suit_mk1` | 2254 | 0.9 | suit select stinger — raw steel: hydraulic + plate clank + ember flame | N:cl_mk1_hydraulic + N:cl_plate_clank + N:cl_flame_start + C:bell x1.80 tail |
| `ui_suit_mk2` | 2135 | 0.9 | suit select stinger — brushed silver + ice: fast servo + clamp + high icy bell/bowl | N:cl_servo_fast + N:cl_clamp_lock + C:bell x6.00 tail + C:bowl 2 shimmer |
| `ui_suit_mk3` | 2337 | 0.9 | suit select stinger — hot-rod: faceplate slam + clamp + thruster whine tail | N:cl_faceplate_close + N:cl_clamp_lock + N:thruster_whine + C:bell x3.00 tail |
| `ui_suit_mk42` | 2207 | 0.9 | suit select stinger — plates clamping in a burst + suit-ready chime | N:mk42_lock_1 + N:mk42_lock_2 + N:mk42_lock_big_1 + N:mk42_suit_ready + C:bell x4.00 tail |
| `ui_suit_mk85` | 2310 | 0.9 | suit select stinger — nanotech: flow -> crystallise -> lock + cyan shimmer | N:mk85_nano_flow + N:mk85_nano_crystallise + N:mk85_nano_lock + C:bell x5.04 tail + C:bowl 2 shimmer |
| `ui_suit_hulkbuster` | 2253 | 0.9 | suit select stinger — heavy clamp + a giant step + hydraulic hiss | N:hb_clamp_heavy + N:hb_step_heavy_1 + N:hb_hydraulic_hiss + C:bell x1.50 tail |
| `ui_suit_ironspider` | 2204 | 0.9 | suit select stinger — nano seal + spider legs deploy + lens focus | N:sp_nano_seal + N:sp_leg_deploy + N:sp_lens_focus + C:bell x4.50 tail + C:bowl 2 shimmer |
| `ui_suit_peter` | 2276 | 0.9 | suit select stinger — web thwip + sneaker landing + cloth (no metal: out of suit) | N:sp_thwip_1 + N:sp_sneaker_1 + N:sp_cloth_1 + C:bell x6.00 tail |
Rebuild: `python3 v3/design/tools/audio_fetch.py && python3 v3/design/tools/build_ui_audio.py` (raw downloads cached in `v3/design/tools/_cache/`, git-ignored). Analysis sheets (waveform + log spectrogram of every output): `v3/docs/design/ui_audio_sheet_{1,2}.png`.
---------------------------------------------------------------- assets/audio/city/CREDITS-city.md
# Audio credits — city / apartment / villa
All real recordings, cut and processed by `next/blender/city/audio/build_audio.py` (loops crossfaded seamless, loudnorm). No synthesis.
| id | what | source file | author | licence |
|---|---|---|---|---|
| `city_traffic` | street-level traffic + pedestrians bed (loop 42 s) — play near the ground, fade with altitude | [Sunday in the city street noise1.ogg](https://commons.wikimedia.org/wiki/File:Sunday_in_the_city_street_noise1.ogg) | cori | Public domain |
| `city_traffic` | street-level traffic + pedestrians bed (loop 42 s) — play near the ground, fade with altitude | [Sunday in the city street noise3.ogg](https://commons.wikimedia.org/wiki/File:Sunday_in_the_city_street_noise3.ogg) | cori | Public domain |
| `city_rumble_far` | distant city rumble heard from rooftops / flight height (loop 60 s, low-passed) | [Urban Street on a Rainy Afternoon.flac](https://commons.wikimedia.org/wiki/File:Urban_Street_on_a_Rainy_Afternoon.flac) | Extemporalist | CC0 1.0 |
| `city_wind_high` | wind at height (rooftops, skyscraper tops, flying slowly) (loop 12 s) | [Wind outside atmosphere (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Wind_outside_atmosphere_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `city_wind_high` | wind at height (rooftops, skyscraper tops, flying slowly) (loop 12 s) | [Windy day (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Windy_day_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `city_harbour` | harbour water lapping on piers and the seawall (loop 56 s) | [WWS Smallwaves.ogg](https://commons.wikimedia.org/wiki/File:WWS_Smallwaves.ogg) | Work With Sounds / Museum of Technology | CC BY 4.0 |
| `city_siren_police` | distant police siren pass with street reflections (one-shot 11 s) | [WWS Policevansirenoutsideofthevehicle.ogg](https://commons.wikimedia.org/wiki/File:WWS_Policevansirenoutsideofthevehicle.ogg) | Work With Sounds | CC BY 4.0 |
| `city_siren_fire` | distant fire engine siren (one-shot 12 s) | [WWS Fireenginesiren.ogg](https://commons.wikimedia.org/wiki/File:WWS_Fireenginesiren.ogg) | Work With Sounds | CC BY 4.0 |
| `city_siren_us` | American wail/yelp police siren (one-shot 12 s) | [American police siren i.ogg](https://commons.wikimedia.org/wiki/File:American_police_siren_i.ogg) | lezer | Public domain |
| `city_foghorn` | ship foghorn across the river (one-shot 9 s) | [WWS Foghorn.ogg](https://commons.wikimedia.org/wiki/File:WWS_Foghorn.ogg) | Work With Sounds | CC BY 4.0 |
| `city_window_unlatch` | window handle turned open (metal latch release) | [Lock (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Lock_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `city_window_open` | casement leaves swinging out (hinge + frame release, light creak) | [Open closet door (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Open_closet_door_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `city_window_open` | casement leaves swinging out (hinge + frame release, light creak) | [Open squeaky door (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Open_squeaky_door_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `city_window_close` | casement leaves pulled shut against the frame | [Close door (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Close_door_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `city_window_latch` | window handle turned shut (latch engages) | [Lock (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Lock_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `villa_bay_door` | hangar door panels motoring into their wall pockets (3.6 s, clip bay_open/bay_close t=0) | [WWS REVOLVING THEATRE STAGE underneath.ogg](https://commons.wikimedia.org/wiki/File:WWS_REVOLVINGTHEATRESTAGEunderneath.ogg) | Work With Sounds | CC BY 4.0 |
| `villa_bay_door_thud` | hangar door panels closing against each other (heavy thud) | [MarkZero bank metal_heavy.mp3 (from Slam closet door (Gravity Sound).wav)](https://commons.wikimedia.org/wiki/File:Slam_closet_door_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `villa_hum` | villa interior hum: HVAC + faint electronics (loop 12 s) | [Air conditioner hum (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Air_conditioner_hum_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `villa_hum` | villa interior hum: HVAC + faint electronics (loop 12 s) | [WWS UPS uninterruptible power supply.ogg](https://commons.wikimedia.org/wiki/File:WWS_UPS8211uninterruptiblepowersupply.ogg) | Work With Sounds | CC BY 4.0 |
| `villa_workshop` | workshop ambience: air handling + server/UPS whine (loop 24 s) | [MarkZero bank room_workshop.mp3 (from Air vent (Gravity Sound).wav)](https://commons.wikimedia.org/wiki/File:Air_vent_(Gravity_Sound).wav) | Gravity Sound | CC BY 4.0 |
| `villa_workshop` | workshop ambience: air handling + server/UPS whine (loop 24 s) | [WWS UPS uninterruptible power supply.ogg](https://commons.wikimedia.org/wiki/File:WWS_UPS8211uninterruptiblepowersupply.ogg) | Work With Sounds | CC BY 4.0 |
---------------------------------------------------------------- assets/audio/classics/CREDITS-classics.md
# Classics sound credits
Every file is cut/layered/processed from recordings already vetted for
redistribution in this project (no synthesis, no new downloads). Built by
`next/blender/classics/audio-build.py` (44.1 kHz mono, loudnorm I=-16 LUFS, TP -1.5).
Sources: **U** = Jurek's own recordings (`Projects/MarkZero/audio/user-provided/`); **B** = the MarkZero bank (`Projects/MarkZero/audio/sfx/`, licences + original URLs in its CREDITS.md: Gravity Sound CC BY 4.0, rubberduck CC0, Work With Sounds CC BY 4.0 …); **K** = Kenney CC0 (`game/assets/audio/`, see its CREDITS.md).
| id | what | cut from |
|---|---|---|
| `cl_faceplate_close` | Mk II/III faceplate closing: slide flow + pressure hiss + latch + seat | B nano_flow band 500-3500 + B thruster_hot hiss + B latch @0.95x + B concrete_c lowpass |
| `cl_faceplate_open` | Mk II/III faceplate unlock + lift | B latch @1.25x + B thruster_hot hiss + B nano_flow |
| `cl_mk1_visor` | Mk I welded visor slamming (scrap clatter + crude latch, no ring) | B metal_debris @0.8x + B latch @0.75x + B concrete_b lowpass 900 Hz |
| `cl_servo_fast` | fast robot-arm sweep (hydraulic rush, no pitch) | B thruster_mid 0.3-0.85 s band 150-1800 Hz + B rubble_b 0-0.5 s lowpass 400 Hz |
| `cl_servo_small` | small precise approach (fine hydraulic flow, no pitch) | B nano_flow 0.5-0.85 s band 400-3000 Hz |
| `cl_servo_big` | big actuator move / arm stows (heavy hydraulics, no pitch) | B thruster_mid lowpass 900 + B rubble_b lowpass 350 + B concrete_b lowpass 800 |
| `cl_hiss` | pneumatic release hiss | B thruster_hot (sandblasting nozzle) 0.6-1.6 s, highpass 1.4 kHz, exponential decay |
| `cl_impact_driver` | torque head: ratcheting burst + seat click (no motor pitch) | B metal_debris @1.2x band 400-6000 Hz with 24 Hz tremolo (ratchet) + B latch @0.9x |
| `cl_clamp_lock` | armour piece clamps home (thud + latch, no ring) | B latch @0.85x + B concrete_c lowpass 900 Hz + B metal_debris 0-0.15 s |
| `cl_plate_clank` | plate touches plate (dull, no ring) | B concrete_c + B latch @1.1x |
| `cl_sparks` | spark crackle when a bolt seats | B metal_debris @1.4x, highpass 2.5 kHz |
| `cl_floor_unlock` | floor hatches unlock and drop (thud, latch, hiss) | B latch @0.8x + B concrete_b lowpass 700 + B metal_debris lowpass 2.5k + hiss |
| `cl_floor_open` | floor hatches swing down / up (rumble + seat) | B rubble_b lowpass 600 + B concrete_a lowpass 1.5k + hiss |
| `cl_gantry_rise` | robot arms rise out of the pit (hydraulic lift, no pitch) | B thruster_mid 0-1.6 s lowpass 700 + B rubble_b lowpass 300 |
| `cl_reactor_on` | arc reactor housing locks + ring lights up (hum swell) | B latch @0.9x + B reactor 0-1.6 s + B repulsor_charge @0.8x lowpassed |
| `cl_reactor_off` | reactor ring powers down + housing unlocks (suit-off) | B reactor reversed + B latch @0.85x |
| `cl_hud_on` | eyes / HUD boot chirp when the faceplate locks | B hud_confirm + B hud_scan 0-0.8 s + B servo_fine @1.4x |
| `cl_hud_off` | HUD shuts off (suit-off) | B hud_click + B hud_tick @0.8x |
| `cl_mk1_hydraulic` | Mk I clunky hydraulics (knee/elbow pistons) | B servo_grind @0.65x + hiss tail |
| `cl_mk1_step` | Mk I heavy step — Jurek's armour step, pitched down + scrap rattle | U steps/step-03 @0.82x + B clank_scrap @0.8x + B servo_grind |
| `cl_flame_loop` | flamethrower roar (loop) | B thruster_hot @0.78x lowpass 6.5 kHz + B thruster_sub, crossfade-looped |
| `cl_flame_start` | flamethrower valve + ignition whoomp | B latch + K boost @0.8x + head of cl_flame_loop |
| `cl_flame_stop` | flamethrower shut-off | tail of cl_flame_loop + B latch @0.85x |
| `cl_rocket_launch` | Mk I forearm rocket launch (crude) | K rpg_launch @0.85x + B clank_scrap |
| `cl_missile_launch` | Mk III forearm mini-missile launch | K rpg_launch + B thruster_whine @1.3x |
| `cl_pod_open` | forearm pod hatch flips open | B latch @1.2x + B servo_fine @1.3x |
| `cl_pod_close` | forearm pod hatch shuts | B servo_fine @1.3x + B latch |
| `cl_hatch_pop` | flare hatches pop | B latch @1.4x + hiss |
| `cl_hatch_close` | flare hatches close | B latch @1.1x |
| `cl_flare` | countermeasure flare pop + fizz | K rpg_launch head @1.6x + B thruster_hot @1.5x highpass |
| `cl_flaps_open` | stabiliser flaps deploy | B servo_fast @1.25x |
| `cl_flaps_close` | stabiliser flaps stow | B servo_fast @1.2x + B clank_light @1.3x |
---------------------------------------------------------------- assets/audio/core/CREDITS-core.md
# Core sounds (orchestrator) — credits
| id | built from | source | licence |
|---|---|---|---|
| `repulsor_fire_1..6` | Jurek's own repulsor recordings `MarkZero/audio/user-provided/repulsor/repulsor-0N.mp3`, silence-trimmed, 1.0 s, plus a 150 Hz low-passed body layer from Kenney `explosion_low.ogg`, loudness −14 LUFS | Jurek (user-provided) + [Kenney Sci-fi Sounds](https://kenney.nl/assets/sci-fi-sounds) | Jurek's + CC0 |
| `repulsor_fire_big` | Jurek's `repulsor-charged.mp3` + Kenney `explosion.ogg` (220 Hz low-pass, delayed 0.52 s to land on the discharge) | Jurek + Kenney | Jurek's + CC0 |
| `repulsor_charge` | Gravity Sound "Charging 1" + "Charging 2" layered | [Wikimedia Commons](https://commons.wikimedia.org/wiki/File:Charging_1_%28Gravity_Sound%29.wav) | CC BY 4.0 (Gravity Sound) |
| `repulsor_impact` | rubberduck "75 CC0 breaking/falling/hit" hit + Kenney `explosion_low` | [OpenGameArt](https://opengameart.org/content/75-cc0-breaking-falling-hit-sfx) + Kenney | CC0 |
| `repulsor_impact_big` | Kenney `explosion.ogg` + rubberduck concrete debris | Kenney + OpenGameArt | CC0 |
| `thruster_idle/mid/whine` | Saab J35D Draken turbojet, start and taxi, recorded on the apron | [Work With Sounds / Torsten Nilsson](https://commons.wikimedia.org/wiki/File:WWS_SaabJ35DDrakenstartengineandtaxiing.ogg) | CC BY 4.0 |
| `thruster_hot` | sandblasting a ship hull, next to the nozzle | [Work With Sounds](https://commons.wikimedia.org/wiki/File:WWS_Sandblastingashiphull.ogg) | CC BY 4.0 |
| `thruster_sub` | underwater/space engine rumble | [qubodup, OpenGameArt](https://opengameart.org/content/underwater-or-space-engine-rumble) | CC0 |
| `wind_low/high/gust` | Gravity Sound "Windy day", "Fan", "Wind outside atmosphere" | Wikimedia Commons | CC BY 4.0 |
All re-cut from the vetted bank of the browser build (`Projects/MarkZero/audio`, see its CREDITS.md
for the auditioning notes), loudness-normalised with ffmpeg `loudnorm`, encoded Vorbis q6 (oggenc) + MP3 192k.
---------------------------------------------------------------- assets/audio/enemies/CREDITS-enemies.md
# Audio credits — enemies (`assets/audio/enemies/`)
Every file is a layered / pitched / filtered mix of **real recordings**; nothing is synthesised.
Regenerate: `python3 next/blender/enemies/enaudio.py` (exact recipe per id — sources, pitch ratios, trims,
gains, filters — in that script; the mixer is `blender/hulkbuster/hbaudio.py`). All outputs 44.1 kHz,
`loudnorm I=-16 TP=-1.5`, .ogg (oggenc q6) + .mp3 (192k). `en_rpg_flight` is a seamless loop.
## Sources
**Attribution required in the game credits:** Michel Baradari (CC-BY 3.0) and HaelDB (OGA-BY 3.0) — see the voice rows.
| source (path in this repo tree) | original | author | licence |
|---|---|---|---|
| `next/blender/enemies/_cache/voices/player/` (`michelbaradari-human.7z`) | 11 male human pain/death sounds — opengameart.org/content/11-male-human-paindeath-sounds | Michel Baradari (submitted by qubodup) | **CC-BY 3.0** |
| `next/blender/enemies/_cache/voices/yelling/` (`yelling sounds.zip`) | Male Grunt/Yelling sounds — opengameart.org/content/male-gruntyelling-sounds | HaelDB | CC0 / **OGA-BY 3.0** |
| `next/blender/enemies/_cache/voices/death pain grunts.wav` | grunts of male death and pain — opengameart.org/content/grunts-male-death-and-pain | thebardofblasphemy | CC0 |
| `next/blender/enemies/_cache/Prepared SFX Library/` (`Prepared SFX Library.7z`, 194 MB, downloaded 2026-09-25 with Jurek's approval) | The Free Firearm Sound Library — opengameart.org/content/the-free-firearm-sound-library — 96 kHz stereo field recordings. Used: Walther PPQ `X_39P` (near) / `X_31P` (mid), Colt 1911 `A_42P` / `A_34P`, Bersa .380 `F_47P` / `F_41P`, AK-47 `C_28P` / `C_31P`, Norinco SKS `U_14P` / `U_19P` | Ben Jaszczak, Brian Nelson, Kevin Heras, Matthew Nanney | CC0 |
| `Voxel World/Audio (od jurka)/Shotgun/Shotgun reload+Shoot.mp3` | shotgun pump actions (used for the pistol slide / rifle bolt) | Jurek (provided by him) | owned |
| `Voxel World/assets/audio/explosion_huge.ogg` | Chunky Explosion — opengameart.org/content/chunky-explosion | Joth | CC0 |
| `Voxel World/assets/audio/explosion_0/1.ogg`, `explosion_small_0/1.ogg` | opengameart.org/content/explosions-4 | EZduzziteh | CC0 |
| `Voxel World/assets/audio/explosion_small_2.ogg` | bang_08 — opengameart.org/content/25-cc0-bang-firework-sfx | rubberduck | CC0 |
| `Voxel World/assets/audio/explosion_rumble.ogg` | Muffled Distant Explosion — opengameart.org/content/muffled-distant-explosion | NenadSimic | CC0 |
| `Voxel World/assets/audio/rocket_launch.ogg` | launch.wav — opengameart.org/content/rocket-launch | qubodup | CC0 |
| `Voxel World/assets/audio/swing_0..4.ogg` | Swishes Sound Pack — opengameart.org/content/swishes-sound-pack | artisticdude | CC0 |
| `Voxel World/assets/audio/footstep_concrete_0..5.ogg` | Fantozzi's Footsteps (Stone) — opengameart.org/content/fantozzis-footsteps-grasssand-stone | Fantozzi | CC0 |
| `Voxel World/assets/audio/bounce_clink_0/1.ogg`, `thud_1.ogg` | 75 CC0 breaking/falling/hit sfx; 100 CC0 metal and wood SFX (opengameart) | rubberduck | CC0 |
| `next/blender/spider/_cache/audio_raw/kenney/k_impact/` | Impact Sounds — kenney.nl/assets/impact-sounds | Kenney | CC0 |
| `next/blender/spider/_cache/audio_raw/kenney/k_rpg/` | RPG Audio — kenney.nl/assets/rpg-audio (cloth, metal clicks/latches, knife slices, creaks) | Kenney | CC0 |
| `game/assets/audio/rpg_launch.ogg`, `body_drop.ogg` | Kenney Sci-fi / Impact packs | Kenney | CC0 |
| `MarkZero/audio/sfx/thruster_hot`, `thruster_mid` | WWS Sandblasting / Saab J35D Draken (Wikimedia Commons) | Work With Sounds / Torsten Nilsson | CC BY 4.0 |
| `MarkZero/audio/sfx/concrete_a/c`, `rubble_b`, `glass_debris`, `wind_gust` | see `MarkZero/audio/CREDITS.md` | rubberduck (CC0) / Gravity Sound (CC BY 4.0) | CC0 / CC BY 4.0 |
## What is what
- Guns (real recordings, 2026-09-25 rebuild): single shots are cut out of the Free Firearm Sound Library by
`next/blender/enemies/enshots.py` (onset detection, each shot keeps its own natural tail until the next shot).
- `en_pistol_shot_1..6` — close: PPQ ×3, 1911 ×2, Bersa ×1; each = the near recording + the same gun's mid-distance
recording as body (−6 dB) + diffuse street reflections (28 decaying taps, low-passed, −8 dB), light limiting,
peak −1.5 dBFS, index gain 1.5. `en_pistol_shot_far_1..5` — the mid recordings, low-passed (air absorption) with a
longer reflection tail, peak −4 dBFS.
- `en_rifle_shot_1..6` — close: AK-47 ×4, SKS ×2 (same 7.62x39 cartridge), built the same way, peak −1 dBFS.
`en_rifle_shot_far_1..4` — AK/SKS mid recordings, distant treatment.
- Variant sets: `en_pistol_shot`, `en_pistol_shot_far`, `en_rifle_shot`, `en_rifle_shot_far`. Gunshots are
peak-normalised (not loudnorm'd, which would flatten the transient).
- Reloads: the library has gunshots only (no handling), so `en_pistol_mag_out/in`, `en_rifle_mag_out/in`,
`en_rpg_*` stay Kenney metal clicks/latches and `en_pistol_slide` / `en_rifle_bolt` stay Jurek's pump recording.
- `en_shell_drop_1..3`, `en_rpg_launch/flight`, `en_explosion`, `en_bullet_flyby`, `en_impact_concrete/metal` unchanged.
- Melee: `en_swish_1..4`, `en_knife_swish/hit`, `en_bat_swish/hit`, `en_punch_hit_1..3`, `en_hit_body`, `en_ground_pound`.
- Body: `en_step_1..6`, `en_cloth_1..4`, `en_body_fall`, `en_web_creak`.
- Voice (rebuilt 2026-09-26 from real non-verbal recordings; the old countdown-based files stay in
`next/blender/enemies/_cache/_rejected_voice/`). Every take was transcribed with whisper (ggml-small, en) and anything
that is a word was thrown out (`1yell3` "NOOO", `3yell15` / dpg take 7 "HELLO!", Baradari `paino` = the pack's "ouch",
plus burps, coughs, sneezes, gagging, "baby cooing", "gibberish"). Spectrograms: `voices_spectrograms.png`.
- `en_grunt_1..6` — short effort grunts: HaelDB `3grunt1`, `3grunt3`, `3grunt4`, `3grunt5`, `1yell6`, `2yell9`.
- `en_pain_1..6` — sharp hit sounds: Baradari `pain1`, `pain2`, `pain4`, `pain5`, `painh`; HaelDB `1yell8` (yelp).
- `en_death_1..6` — death groans: Baradari `die1`, `die2`, `deathh`; thebardofblasphemy takes 9, 12, 14.
- `en_alert_1..3` — startled "huh?!" / gasp: HaelDB `1yell9`, `1yell10`, `3yell4`.
- `en_struggle` — HaelDB `2yell2` + `2yell7` growls + `3grunt4`, with Kenney cloth.
- `en_brute_roar` (HaelDB `2yell4` yell ×0.76 + `2yell11` growl ×0.82 + low rumble), `en_brute_grunt` (`3grunt1` ×0.74 +
`2yell10` ×0.8), `en_brute_breath` (`3yell13` growl ×0.82, low-passed).
- Processing: leading silence trimmed (cue-accurate), high-pass 90 Hz, gentle compression, loudnorm −16 LUFS.
- Variant sets (random pick): `en_pistol_shot`, `en_rifle_shot`, `en_shell_drop`, `en_swish`, `en_punch_hit`, `en_step`,
`en_cloth`, `en_grunt`, `en_pain`, `en_death`.
Banned sources (refused by the build scripts): `suit-up-sequence*.mp3` (film clip with AC/DC "Back in Black") and
`faceplate-close*.mp3` (same film score). None of the enemy sounds use them.
Known limits: no spoken barks (non-verbal only, by design); reloads are not recorded on real guns (see above).
---------------------------------------------------------------- assets/audio/hulkbuster/CREDITS-hulkbuster.md
# Audio credits — Hulkbuster + Veronica (`assets/audio/hulkbuster/`)
Every file here is a **layered, pitch-shifted (tape-style, slower + deeper) and filtered mix of real
recordings**; nothing is synthesised. Regenerate: `python3 next/blender/hulkbuster/hbaudio.py`
(the exact recipe of every sound — sources, pitch ratios, gains, trims, filters — is in that script).
All outputs: 44.1 kHz, `loudnorm I=-16 TP=-1.5`, .ogg (oggenc q6) + .mp3 (192k). Loops
(`hb_rocket_loop`, `vr_hover_loop`) are cut seamless with an equal-power tail-over-head crossfade.
## Sources used (all already vetted for a free game)
| source file | original | author | licence |
|---|---|---|---|
| `MarkZero/audio/user-provided/steps/step-02,03,07,09,11,15.mp3` | armour footsteps | Jurek (own recording) | owned |
| `MarkZero/audio/user-provided/repulsor/repulsor-01,04,charged.mp3` | repulsor shots/charge | Jurek (own recording) | owned |
| `MarkZero/audio/sfx/latch` | Lock (Gravity Sound).wav, Wikimedia Commons | Gravity Sound | CC BY 4.0 |
| `MarkZero/audio/sfx/metal_heavy` | Slam closet door (Gravity Sound).wav | Gravity Sound | CC BY 4.0 |
| `MarkZero/audio/sfx/metal_b`, `clank_plate`, `metal_c`, `clank_light` | Metal pole hit / Metal Hit (Gravity Sound) | Gravity Sound | CC BY 4.0 |
| `MarkZero/audio/sfx/servo_heavy`, `servo_fast`, `servo_grind` | Scratching / Rubbing metal door, Mechanical sound (Gravity Sound) | Gravity Sound | CC BY 4.0 |
| `MarkZero/audio/sfx/thruster_hot` | WWS Sandblastingashiphull.ogg (Commons) | Work With Sounds / Torsten Nilsson | CC BY 4.0 |
| `MarkZero/audio/sfx/thruster_idle`, `thruster_mid`, `thruster_whine` | WWS SaabJ35DDrakenstartengineandtaxiing.ogg (Commons) | Work With Sounds / Torsten Nilsson | CC BY 4.0 |
| `MarkZero/audio/sfx/thruster_sub` | opengameart.org/content/underwater-or-space-engine-rumble | qubodup | CC0 |
| `MarkZero/audio/sfx/wind_low`, `wind_gust` | Windy day / Wind outside atmosphere (Gravity Sound) | Gravity Sound | CC BY 4.0 |
| `MarkZero/audio/sfx/concrete_a`, `concrete_c`, `metal_debris`, `glass_debris` | opengameart.org/content/75-cc0-breaking-falling-hit-sfx | rubberduck | CC0 |
| `MarkZero/audio/sfx/rubble_b` | Dropping rocks on ground (Gravity Sound) | Gravity Sound | CC BY 4.0 |
| `MarkZero/audio/sfx/gravel_land` | Land in Gravel (Gravity Sound).mp3 | Gravity Sound | CC BY 4.0 |
| `MarkZero/audio/sfx/repulsor_fire_a,b,c`, `repulsor_tail`, `repulsor_charge_big`, `reactor`, `suit_ready` | see `MarkZero/audio/CREDITS.md` (Gravity Sound, Commons) | Gravity Sound | CC BY 4.0 |
| `game/assets/audio/explosion.ogg`, `explosion_low.ogg`, `boost.ogg`, `hit_metal.ogg`, `swing_whoosh.ogg`, `laser_loop.ogg` | kenney.nl Sci-fi / Impact sounds | Kenney | CC0 |
Full original URLs: `Projects/MarkZero/audio/CREDITS.md` and `Projects/Mark Zero/game/assets/audio/CREDITS.md`.
## What each id is made of (short)
- `hb_step_heavy_1..4` (+ `hb_step_heavy` variant set): Jurek's step ×0.70 + door slam ×0.55 + concrete thump (LP 420 Hz) + faint slowed servo groan.
- `hb_step_run_1..2`, `hb_land`, `hb_land_heavy` (Kenney low explosion + concrete + rubble + slam).
- `hb_hydraulic_hiss`, `hb_hydraulic_breath`: sandblaster nozzle, high-passed, short envelopes (+ latch / servo creak).
- `hb_servo_heavy`, `hb_piston_fire`, `hb_swing_heavy`, `hb_block_impact`, `hb_clamp`, `hb_clamp_heavy`, `hb_flap`.
- `hb_faceplate` (rebuilt 2026-09-25): servo_fast slide ×0.8 + latch ×0.7 + metal_c clack (MarkZero CC bank).
**Banned sources:** `MarkZero/audio/user-provided/suit-up-sequence*.mp3` (film clip with AC/DC "Back in Black") and
`faceplate-close*.mp3` (same film score, see `next/docs/progress/gantry-v2/user_recordings_music_check.png`). The
mixer (`hbaudio.build`) refuses them; the old `hb_faceplate` built on faceplate-close was replaced.
- `hb_plate_whoosh`, `hb_power_up`, `hb_part_blowoff`.
- `hb_rocket_ignite`, `hb_rocket_loop` (space-engine rumble ×0.85 + Draken ×0.7 LP + nozzle), `hb_rocket_burst`.
- `hb_mega_charge`, `hb_mega_blast`, `hb_unibeam_charge`, `hb_unibeam_blast` (Jurek's repulsor recordings, deepened, + Kenney layers).
- `vr_reentry` (7 s swell), `vr_flip`, `vr_retro`, `vr_hover_loop`, `vr_clamp_release`, `vr_bay_open`, `vr_bay_close`,
`vr_release_1..3` (+ `vr_release` variant set), `vr_part_launch`, `vr_clamp_lock`, `vr_ascend`.
---------------------------------------------------------------- assets/audio/mk42/CREDITS-mk42.md
# Audio credits — `assets/audio/mk42/` (Mark 42, summon runtime, human locomotion)
Every file here is **layered / processed real recordings** built by
`next/blender/mk42/audio_build.py` (numpy: cutting, speed/pitch change, doppler sweeps,
envelopes, layering; ffmpeg: filters + 2-pass `loudnorm I=-16 TP=-1.5 linear`; oggenc q6 +
libmp3lame 192k). No oscillator synthesis. Rebuild: `python3 next/blender/mk42/audio_build.py`.
No new downloads were made: every source is from banks already vetted for this game.
## Sources
| source file | what it is | origin | author | licence |
|---|---|---|---|---|
| ~~`MarkZero/audio/user-provided/suit-up-sequence.mp3`~~ | **REMOVED 2026-09-25** — the recording has AC/DC "Back in Black" under it (copyrighted music). The 9 clicks once cut from it are now built from B `latch.mp3` (rubberduck, CC0) + B `concrete_c.mp3`; `audio_build.py` refuses the file | — | — | — |
| ~~`MarkZero/audio/user-provided/faceplate-close.mp3`~~ | **REMOVED 2026-09-25** — spectrogram shows the same thin sustained lines as the film clip with music; dropped on doubt. `mk42_faceplate_latch` is now B thruster_hot hiss + B latch + B concrete_c | — | — | — |
| `clank_plate.mp3`, `metal_a.mp3` | striking a metal pole | [Metal pole hit (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Metal_pole_hit_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `metal_b.mp3` | striking a metal pole | [Metal pole hit 3](https://commons.wikimedia.org/wiki/File:Metal_pole_hit_3_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `clank_scrap.mp3`, `metal_c.mp3` | striking a metal pole | [Metal pole hit 7](https://commons.wikimedia.org/wiki/File:Metal_pole_hit_7_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `clank_light.mp3`, `metal_light.mp3` | bright metal strike | [Metal Hit (Gravity Sound).mp3](https://commons.wikimedia.org/wiki/File:Metal_Hit_%28Gravity_Sound%29.mp3) | Gravity Sound | CC BY 4.0 |
| `latch.mp3` | a lock closing | [Lock (Gravity Sound).wav](https://commons.wikimedia.org/wiki/File:Lock_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `metal_heavy.mp3` | slamming a closet door | [Slam closet door](https://commons.wikimedia.org/wiki/File:Slam_closet_door_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `servo_fine.mp3` | sanding a metal slide | [Sand down metal slide](https://commons.wikimedia.org/wiki/File:Sand_down_metal_slide_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `servo_fast.mp3` | rubbing a metal door | [Rubbing metal door](https://commons.wikimedia.org/wiki/File:Rubbing_metal_door_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `servo_grind.mp3` | small mechanism running | [Mechanical sound](https://commons.wikimedia.org/wiki/File:Mechanical_sound_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `plates_swarm.mp3` | sorting metal cutlery | [Sorting cutlery](https://commons.wikimedia.org/wiki/File:Sorting_cutlery_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `suit_ready.mp3` | task-complete chime | [Complete (Gravity Sound).mp3](https://commons.wikimedia.org/wiki/File:Complete_%28Gravity_Sound%29.mp3) | Gravity Sound | CC BY 4.0 |
| `wind_gust.mp3` | wind gusting | [Wind outside atmosphere](https://commons.wikimedia.org/wiki/File:Wind_outside_atmosphere_%28Gravity_Sound%29.wav) | Gravity Sound | CC BY 4.0 |
| `gravel_land.mp3` | landing in gravel | [Land in Gravel](https://commons.wikimedia.org/wiki/File:Land_in_Gravel_%28Gravity_Sound%29.mp3) | Gravity Sound | CC BY 4.0 |
| `thruster_hot.mp3` | abrasive blasting nozzle, near field | [WWS Sandblastingashiphull.ogg](https://commons.wikimedia.org/wiki/File:WWS_Sandblastingashiphull.ogg) | Work With Sounds / Torsten Nilsson | CC BY 4.0 |
| `thruster_whine.mp3` | Saab J35D Draken turbojet | [WWS SaabJ35DDrakenstartengineandtaxiing.ogg](https://commons.wikimedia.org/wiki/File:WWS_SaabJ35DDrakenstartengineandtaxiing.ogg) | Work With Sounds / Torsten Nilsson | CC BY 4.0 |
| `metal_d.mp3`, `metal_debris.mp3`, `rubble_a.mp3` | breaking / falling / hit sounds | [75-cc0-breaking-falling-hit-sfx](https://opengameart.org/content/75-cc0-breaking-falling-hit-sfx) | rubberduck | CC0 1.0 |
| `game/assets/audio/armour_drop.ogg`, `body_drop.ogg`, `hit_metal.ogg`, `land.ogg`, `step.ogg` | impacts, footsteps | [Kenney Impact Sounds](https://kenney.nl/assets/impact-sounds) | Kenney | CC0 1.0 |
| `game/assets/audio/explosion.ogg`, `explosion_low.ogg` | explosions | [Kenney Sci-fi Sounds](https://kenney.nl/assets/sci-fi-sounds) | Kenney | CC0 1.0 |
| `game/assets/audio/swing_whoosh.ogg`, `dodge.ogg` | cloth / air whoosh | [Kenney RPG Audio](https://kenney.nl/assets/rpg-audio) | Kenney | CC0 1.0 |
(`MarkZero/audio/sfx/*` files are themselves cut from the originals listed in
`Projects/MarkZero/audio/CREDITS.md`, which has the full attribution text.)
## What each id is made of
| id (variants) | recipe |
|---|---|
| `mk42_lock` (8) | latch/concrete click + metal ring (pole hits / lock / Kenney metal, pitched ±6–18 %) + low thump (Kenney armour drop, lowpassed, slowed 0.62–0.9) |
| `mk42_lock_big` (3) | double latch/concrete click + heavy ring (door slam / pole hit, slowed 0.8) + body-drop thump |
| `mk42_wake` (3) | lock release tick (pitched up) + 0.35 s burst of sandblasting noise, highpassed, fast decay = micro-thruster puff |
| `mk42_whoosh` (5) | sandblast noise through a doppler speed sweep 0.8→1.45 + Kenney swing whoosh |
| `mk42_whoosh_big` (2) | Draken turbine whine through a sweep + wind gust |
| `mk42_servo` (4) | 0.3 s slices of metal-slide / rubbing / mechanism, pitched up + a click |
| `mk42_faceplate_latch` | pressure hiss (B thruster_hot) + latch (B latch) + dull tick (B concrete_c) — rebuilt 2026-09-25 |
| `mk42_faceplate_unlatch`, `mk42_faceplate_slide` | lock tick + hiss; metal-slide slice |
| `mk42_flap_open`, `mk42_flap_close` | rubbing-metal slice + light metal strike / click |
| `mk42_eject` | Kenney explosion + low explosion + metal debris + cutlery rattle + two latch/concrete clicks |
| `mk42_plate_hit` (3), `mk42_plate_bounce` (3) | debris / pole-hit / armour drop / rubble; light strikes pitched up with fast decay |
| `mk42_suit_ready` | Gravity Sound "Complete" chime + click |
| `human_step` (6), `human_step_run` (4), `human_step_scuff` | Kenney step (pitched), + Kenney land for runs, + gravel for the scuff |
| `human_land`, `human_jump_push`, `human_cloth`, `human_hit_body` | Kenney land / body drop / step / cloth whoosh layers |
## Full attribution text (CC BY 4.0 items)
Sounds by **Gravity Sound** (, mirrored on Wikimedia Commons)
and **Work With Sounds / Torsten Nilsson**, licensed CC BY 4.0
(), cut, pitched and layered as described above.
---------------------------------------------------------------- assets/audio/mk85/CREDITS-mk85.md
# Sound credits — mk85 (Mark 85 + Iron Man library)
Built by `next/blender/mk85/audio-build.py` (layered, pitched, EQ'd, faded, normalised to
-1.5 dBFS peak / -16 LUFS for sounds >= 0.6 s). No oscillator synthesis.
| source | licence / author | used in |
|---|---|---|
| `next/assets/audio/core/repulsor_fire_big.ogg` | core bank (Jurek's repulsor recording) | im_unibeam_fire, mk85_cannon_fire |
| `next/assets/audio/core/repulsor_charge.ogg` | core bank | im_unibeam_charge, mk85_cannon_charge, mk85_shield_down, mk85_shield_up |
| `next/assets/audio/core/repulsor_impact.ogg` | core bank | mk85_shield_hit |
| `next/assets/audio/core/thruster_hot.ogg` | core bank: WWS sandblasting, CC BY 4.0 | im_boost, im_brake, im_jump, im_takeoff, im_thruster_burst, im_thruster_ignite, im_thruster_puff, im_unibeam_fire, mk85_rocket_launch |
| `next/assets/audio/core/thruster_mid.ogg` | core bank: WWS Saab Draken, CC BY 4.0 | im_thruster_puff |
| `next/assets/audio/core/thruster_sub.ogg` | core bank: qubodup engine rumble, CC0 | im_brake, im_takeoff, im_thruster_burst, im_thruster_ignite |
| `next/assets/audio/core/thruster_whine.ogg` | core bank: WWS Saab Draken, CC BY 4.0 | im_thruster_burst, im_thruster_ignite |
| `next/assets/audio/core/wind_high.ogg` | core bank | im_boost |
| `game/assets/audio/armour_drop.ogg` | Kenney Impact Sounds, CC0 | im_land_hero |
| `game/assets/audio/boost.ogg` | Kenney Sci-fi Sounds, CC0 | im_boost, im_takeoff, im_thruster_ignite |
| `game/assets/audio/explosion_low.ogg` | Kenney Sci-fi Sounds, CC0 | im_boost, im_land_hero, im_takeoff, mk85_cannon_fire, mk85_snap |
| `game/assets/audio/hit_metal.ogg` | Kenney Impact Sounds, CC0 | im_block_impact, im_punch_impact |
| `game/assets/audio/knife_draw.ogg` | Kenney RPG Audio, CC0 | mk85_blade_deploy, mk85_blade_retract |
| `game/assets/audio/land.ogg` | Kenney Impact Sounds, CC0 | im_jump, im_land_hero, im_land_soft, im_step_heavy, im_step_run |
| `game/assets/audio/laser_loop.ogg` | Kenney Sci-fi Sounds, CC0 | im_unibeam_fire, mk85_blade_hum |
| `game/assets/audio/punch_big.ogg` | Kenney Impact Sounds, CC0 | im_punch_impact |
| `game/assets/audio/rpg_launch.ogg` | Kenney Sci-fi Sounds, CC0 | mk85_missile_launch, mk85_rocket_launch |
| `game/assets/audio/swing_whoosh.ogg` | Kenney RPG Audio, CC0 | im_whoosh_punch, mk85_blade_slash |
| `../MarkZero/audio/sfx/clank_light.mp3` | MarkZero bank (see MarkZero/audio/CREDITS.md) | im_step_heavy, im_step_run, mk85_nano_tap |
| `../MarkZero/audio/sfx/clank_plate.mp3` | MarkZero bank | im_land_soft, mk85_cannon_deploy, mk85_wing_deploy |
| `../MarkZero/audio/sfx/concrete_a.mp3` | rubberduck 75 CC0 hits (OpenGameArt), CC0 | im_land_hero |
| `../MarkZero/audio/sfx/glass_tiny.mp3` | rubberduck 75 CC0 hits (OpenGameArt), CC0 | mk85_nano_crystallise |
| `../MarkZero/audio/sfx/gravel_land.mp3` | MarkZero bank | im_land_soft |
| `../MarkZero/audio/sfx/hud_blip.mp3` | MarkZero bank | mk85_nano_tap |
| `../MarkZero/audio/sfx/hud_scan.mp3` | MarkZero bank | mk85_nano_flow |
| `../MarkZero/audio/sfx/latch.mp3` | MarkZero bank | im_flap, mk85_gauntlet_form, mk85_missile_deploy, mk85_nano_helmet, mk85_nano_helmet_open, mk85_nano_lock, mk85_wing_deploy, mk85_wing_retract |
| `../MarkZero/audio/sfx/metal_a.mp3` | MarkZero bank | im_punch_impact |
| `../MarkZero/audio/sfx/metal_heavy.mp3` | MarkZero bank | im_block_impact, im_land_hero, im_land_soft |
| `../MarkZero/audio/sfx/nano_flow.mp3` | Water tap (Gravity Sound), CC BY 4.0 | mk85_blade_deploy, mk85_blade_retract, mk85_cannon_deploy, mk85_cannon_retract, mk85_gauntlet_form, mk85_missile_deploy, mk85_nano_flow, mk85_nano_helmet, mk85_nano_helmet_open, mk85_nano_recede, mk85_shield_up, mk85_wing_deploy, mk85_wing_retract |
| `../MarkZero/audio/sfx/nano_seal.mp3` | Portal 1 (Gravity Sound), CC BY 4.0 | mk85_nano_crystallise, mk85_nano_helmet_open, mk85_nano_lock, mk85_nano_recede, mk85_nano_tap, mk85_shield_down, mk85_shield_up |
| `../MarkZero/audio/sfx/plates_swarm.mp3` | MarkZero bank | mk85_cannon_deploy, mk85_nano_flow, mk85_wing_deploy |
| `../MarkZero/audio/sfx/reactor.mp3` | MarkZero bank | im_unibeam_charge, mk85_gauntlet_form |
| `../MarkZero/audio/sfx/repulsor_charge_big.mp3` | Charging 2 (Gravity Sound), CC BY 4.0 | im_unibeam_charge, mk85_cannon_charge |
| `../MarkZero/audio/sfx/repulsor_tail.mp3` | Portal 1 (Gravity Sound), CC BY 4.0 | mk85_cannon_fire, mk85_snap |
| `../MarkZero/audio/sfx/rubble_b.mp3` | rubberduck 75 CC0 hits (OpenGameArt), CC0 | im_land_hero |
| `../MarkZero/audio/sfx/servo_fast.mp3` | Rubbing metal door (Gravity Sound), CC BY 4.0 | im_jump, im_servo_short |
| `../MarkZero/audio/sfx/servo_fine.mp3` | Sand down metal slide (Gravity Sound), CC BY 4.0 | im_flap, im_servo_short, mk85_missile_deploy, mk85_nano_flow, mk85_nano_helmet, mk85_nano_recede |
| `../MarkZero/audio/sfx/servo_grind.mp3` | Mechanical sound (Gravity Sound), CC BY 4.0 | im_servo_heavy, mk85_cannon_charge |
| `../MarkZero/audio/sfx/servo_heavy.mp3` | Scratching metal door (Gravity Sound), CC BY 4.0 | im_servo_heavy, mk85_cannon_deploy, mk85_cannon_retract, mk85_wing_deploy, mk85_wing_retract |
| `../MarkZero/audio/sfx/suit_ready.mp3` | MarkZero bank | mk85_nano_lock |
| `../MarkZero/audio/sfx/wind_gust.mp3` | Wind outside atmosphere (Gravity Sound), CC BY 4.0 | im_brake, im_takeoff, mk85_snap |
| `../MarkZero/audio/user-provided/steps/step-02.mp3` | Jurek's own recording (armour steps) | im_step_heavy |
| `../MarkZero/audio/user-provided/steps/step-03.mp3` | Jurek's own recording (armour steps) | im_step_run |
| `../MarkZero/audio/user-provided/steps/step-05.mp3` | Jurek's own recording (armour steps) | im_step_heavy |
| `../MarkZero/audio/user-provided/steps/step-07.mp3` | Jurek's own recording (armour steps) | im_step_run |
| `../MarkZero/audio/user-provided/steps/step-09.mp3` | Jurek's own recording (armour steps) | im_step_heavy |
| `../MarkZero/audio/user-provided/steps/step-11.mp3` | Jurek's own recording (armour steps) | im_step_run |
| `../MarkZero/audio/user-provided/steps/step-13.mp3` | Jurek's own recording (armour steps) | im_step_heavy |
| `next/blender/mk85/audio_src/Electric_sunrise_Gravity_Sound.wav` | Electric sunrise (Gravity Sound), Wikimedia Commons, CC BY 4.0 — https://commons.wikimedia.org/wiki/File%3AElectric_sunrise_%28Gravity_Sound%29.wav | mk85_shield_hit, mk85_shield_up |
| `next/blender/mk85/audio_src/Metal_Jingle_Gravity_Sound.mp3` | Metal Jingle (Gravity Sound), Wikimedia Commons, CC BY 4.0 — https://commons.wikimedia.org/wiki/File%3AMetal_Jingle_%28Gravity_Sound%29.mp3 | mk85_gauntlet_form, mk85_nano_crystallise |
| `next/blender/mk85/audio_src/Metal_Hit_Gravity_Sound.mp3` | Metal Hit (Gravity Sound), Wikimedia Commons, CC BY 4.0 — https://commons.wikimedia.org/wiki/File%3AMetal_Hit_%28Gravity_Sound%29.mp3 | im_block_impact, mk85_shield_hit |
| `next/blender/mk85/audio_src/Finger_clicks.ogg` | Finger clicks.ogg by cori, Wikimedia Commons, public domain — https://commons.wikimedia.org/wiki/File%3AFinger_clicks.ogg | mk85_snap |
| `next/blender/mk85/audio_src/Sword_Swipe_Gravity_Sound.mp3` | Sword Swipe (Gravity Sound), Wikimedia Commons, CC BY 4.0 — https://commons.wikimedia.org/wiki/File%3ASword_Swipe_%28Gravity_Sound%29.mp3 | im_whoosh_punch, mk85_blade_slash |
| `next/blender/mk85/audio_src/Sword_13_Gravity_Sound.mp3` | Sword 13 (Gravity Sound), Wikimedia Commons, CC BY 4.0 — https://commons.wikimedia.org/wiki/File%3ASword_13_%28Gravity_Sound%29.mp3 | mk85_blade_slash |
| `next/blender/mk85/audio_src/Sword_6_Gravity_Sound.mp3` | Sword 6 (Gravity Sound), Wikimedia Commons, CC BY 4.0 — https://commons.wikimedia.org/wiki/File%3ASword_6_%28Gravity_Sound%29.mp3 | mk85_blade_deploy |
CC BY 4.0 attribution: Gravity Sound (https://www.gravitysound.studio/), via Wikimedia
Commons; Work With Sounds / Torsten Nilsson (CC BY 4.0). Kenney packs and rubberduck's
hits are CC0. Jurek's recordings are his own. 'Finger clicks.ogg' (cori) is public domain.
---------------------------------------------------------------- assets/audio/spider/CREDITS-spider.md
# Spider-Man (Iron Spider) sound bank -- credits
Every `sp_*` sound in this folder is built by `build_audio.py` (same folder) from the real recordings
listed below: cut sample-accurately, varispeeded (tape-style resampling, incl. pitch glides), reversed,
enveloped, EQ'd (incl. a time-varying resonant band swept through recorded noise), compressed and
layered. No oscillator synthesis anywhere. `python3 build_audio.py --fetch && python3 build_audio.py`
downloads the sources (re-checking each licence on the source site) and rebuilds the whole bank.
## Licences in use
* **CC0 1.0** (Freesound, OpenGameArt, Kenney) -- no attribution required, credited anyway.
* **Public domain** -- the PDSounds.org collection mirrored on Wikimedia Commons (`PD-author`). Strictly
more permissive than CC0 (no rights reserved at all); listed separately so it is visible.
* **CC BY 4.0** (Gravity Sound library on Commons) and **CC BY 3.0** (reemax, OpenGameArt) -- attribution
required, given below.
No CC BY-SA, no NC, no rips. Freesound material is used only where the sound is CC0 (the HQ preview mp3).
## Sources
| source | author | licence | link | used in |
|---|---|---|---|---|
| Finger clicks | cori | Public domain (PDSounds.org, PD-author) | | `sp_thwip_1`, `sp_thwip_3`, `sp_thwip_4`, `sp_thwip_double`, `sp_thwip_swing`, `sp_web_splat_3` |
| Snapping twig (single) | stephan | CC0 1.0 | | `sp_thwip_3`, `sp_thwip_double`, `sp_thwip_swing` |
| Pumpspray pfft | stephan | Public domain (PDSounds.org, PD-author) | | `sp_thwip_1`, `sp_thwip_double`, `sp_thwip_swing`, `sp_web_release` |
| Air duster short | stephan | Public domain (PDSounds.org, PD-author) | | `sp_thwip_2` |
| Deodorant spray (short) | ezwa | Public domain (PDSounds.org, PD-author) | | `sp_thwip_4` |
| Shhhwwshhhw | ezwa | Public domain (PDSounds.org, PD-author) | | `sp_thwip_1`, `sp_thwip_3`, `sp_thwip_4`, `sp_thwip_double`, `sp_thwip_swing` |
| Sticky tape | stephan | Public domain (PDSounds.org, PD-author) | | `sp_wall_grip`, `sp_web_splat_1`, `sp_web_splat_2`, `sp_web_splat_3` |
| Rubber squeaking | stephan | Public domain (PDSounds.org, PD-author) | | `sp_crawl_1`, `sp_crawl_2`, `sp_wall_grip` |
| Deep twang of loose bow string | stephan | Public domain (PDSounds.org, PD-author) | | `sp_web_attach_1`, `sp_web_attach_2`, `sp_web_release` |
| Tack tack tack | stephan | Public domain (PDSounds.org, PD-author) | | `sp_leg_step_1`, `sp_leg_step_2`, `sp_leg_step_3`, `sp_web_attach_1`, `sp_web_splat_1` |
| Mechanical tack | stephan | Public domain (PDSounds.org, PD-author) | | `sp_web_attach_2`, `sp_web_splat_2` |
| Pouring particles like grain | stephan | Public domain (PDSounds.org, PD-author) | | `sp_nano_flow`, `sp_nano_mask_close`, `sp_nano_mask_open`, `sp_nano_seal` |
| Crackling sound of short metal bristles | stephan | Public domain (PDSounds.org, PD-author) | | `sp_nano_flow` |
| Scrubbing with small metal bristled brush | stephan | Public domain (PDSounds.org, PD-author) | | `sp_nano_mask_close`, `sp_nano_mask_open` |
| Slish slash a box of nails | stephan | Public domain (PDSounds.org, PD-author) | | `sp_nano_flow` |
| Retractable pen clicking | stilgar | Public domain (PDSounds.org, PD-author) | | `sp_web_release` |
| Flapping window opening | ezwa | Public domain (PDSounds.org, PD-author) | | `sp_window_push` |
| Flapping window closing | ezwa | Public domain (PDSounds.org, PD-author) | | `sp_window_close` |
| Door handle creaking | stephan | Public domain (PDSounds.org, PD-author) | | `sp_window_push` |
| Punch Flesh | Gravity Sound | CC BY 4.0 | | `sp_punch_1`, `sp_web_hit_body` |
| Hard Punch Gut | Gravity Sound | CC BY 4.0 | | `sp_kick`, `sp_punch_2` |
| Sword Swipe | Gravity Sound | CC BY 4.0 | | `sp_leg_strike` |
| Swipe 3 | Gravity Sound | CC BY 4.0 | | `sp_whoosh_1` |
| Slice | Gravity Sound | CC BY 4.0 | | `sp_leg_strike` |
| Nails on tile once | Gravity Sound | CC BY 4.0 | | `sp_leg_step_1` |
| Nails on tile once 2 | Gravity Sound | CC BY 4.0 | | `sp_leg_step_2` |
| Nails on tile once 3 | Gravity Sound | CC BY 4.0 | | `sp_leg_step_3` |
| Sandle on brick 2 | Gravity Sound | CC BY 4.0 | | `sp_crawl_1` |
| Sandle on brick 3 | Gravity Sound | CC BY 4.0 | | `sp_crawl_2`, `sp_sill_step` |
| Lock | Gravity Sound | CC BY 4.0 | | `sp_leg_deploy` |
| Tight door lock 2 | Gravity Sound | CC BY 4.0 | | `sp_nano_seal` |
| Keys shaking | Gravity Sound | CC BY 4.0 | | `sp_land_hard` |
| Jump Landing | Gravity Sound | CC BY 4.0 | | `sp_land_hard`, `sp_land_light` |
| Air Rifle | Fission9 | CC0 1.0 | | `sp_thwip_4`, `sp_thwip_double` |
| air_nailer_single_shot_1.wav | reg7783 | CC0 1.0 | | `sp_thwip_2`, `sp_thwip_3`, `sp_thwip_double` |
| Fishing Rod Swish Swoosh.wav | Mrthenoronha | CC0 1.0 | | `sp_thwip_1`, `sp_thwip_2`, `sp_thwip_3`, `sp_thwip_4`, `sp_thwip_double`, `sp_thwip_swing`, `sp_web_snap` |
| ROPEMvmt_Rope Zip Slow_MP_9.wav | MPierluissi | CC0 1.0 | | `sp_thwip_1`, `sp_thwip_2`, `sp_thwip_3`, `sp_thwip_4`, `sp_thwip_double`, `sp_thwip_swing`, `sp_zip_whoosh` |
| Pen whoosh 1.wav | saturdaysoundguy | CC0 1.0 | | `sp_thwip_2`, `sp_thwip_swing` |
| Rope - Quick snatch | Vrymaa | CC0 1.0 | | `sp_web_attach_1`, `sp_web_attach_2`, `sp_web_pull` |
| Rope - leash - medium - stretched - tighten - whoosh.wav | ValentinPetiteau | CC0 1.0 | | `sp_web_pull` |
| cut rope.wav | zepurple | CC0 1.0 | | `sp_web_snap` |
| Mooring Rope.wav | Rmutt | CC0 1.0 | | `sp_web_tension_loop` |
| Leather - Creak, soft | Vrymaa | CC0 1.0 | | `sp_web_creak_1` |
| Creaking Metal Wire of Wooden Gate | qubodup | CC0 1.0 | | `sp_web_creak_2` |
| Wet Splat 1.mp3 | nebulasnails | CC0 1.0 | | `sp_web_hit_body`, `sp_web_splat_1` |
| Wet Splat 2.mp3 | nebulasnails | CC0 1.0 | | `sp_web_splat_3` |
| Slime slapping | greenlinker | CC0 1.0 | | `sp_web_splat_2` |
| Car Strong Wind Noise.mp3 | FunWithSound | CC0 1.0 | | `sp_swing_whoosh_1`, `sp_wind_loop` |
| Ambiance_Wind_Strong_Warehouse_Loop.wav | Nox_Sound | CC0 1.0 | | `sp_swing_whoosh_2` |
| Shirt Whoosh 1.wav | saturdaysoundguy | CC0 1.0 | | `sp_jump`, `sp_punch_2`, `sp_swing_whoosh_2` |
| Foley_Whoosh_Clothes.wav | Nox_Sound | CC0 1.0 | | `sp_swing_whoosh_2`, `sp_whoosh_2`, `sp_zip_whoosh` |
| Swing Woosh | Jofae | CC0 1.0 | | `sp_kick`, `sp_swing_whoosh_1`, `sp_zip_whoosh` |
| quick woosh | florianreichelt | CC0 1.0 | | `sp_punch_1`, `sp_web_pull`, `sp_whoosh_3` |
| zipper and hoodie clothes rustle.wav | reconsider59 | CC0 1.0 | | `sp_cloth_1`, `sp_cloth_2` |
| Metal_Mechanism_Click_Small.wav | LamaMakesMusic | CC0 1.0 | | `sp_nano_seal` |
| Mechanism Activation Sequence | qubodup | CC0 1.0 | | `sp_leg_deploy` |
| Metallic_Click | BlondPanda | CC0 1.0 | | `sp_nano_mask_close` |
| Ratchet (ratchet2.wav) | sgossner | CC0 1.0 | | `sp_leg_deploy` |
| Ratchet2.aif | blevesque4 | CC0 1.0 | | `sp_leg_stow` |
| Small servo (arduino) | gpag1 | CC0 1.0 | | `sp_leg_servo_1` |
| Servo 9 | JoontheFloof | CC0 1.0 | | `sp_leg_servo_2` |
| Servo motor | Burningmonkey | CC0 1.0 | | `sp_leg_deploy`, `sp_leg_servo_3`, `sp_leg_stow` |
| Camera - Modern Compact (Lens, AF and Shutter) | RealSquink | CC0 1.0 | | `sp_lens_focus` |
| footsteps-rubber shoes-concrete-empty warehouse.wav | DrDufus | CC0 1.0 | | `sp_step_1`, `sp_step_2`, `sp_step_3`, `sp_step_4` |
| Footsteps stone + sneaker | xkeril | CC0 1.0 | | `sp_sneaker_1`, `sp_sneaker_2`, `sp_sneaker_3`, `sp_sneaker_4` |
| concrete_10d_startassneakers_onoff.wav | sturmankin | CC0 1.0 | | `sp_jump`, `sp_sill_step` |
| window_handle_click.wav | Meklips | CC0 1.0 | | `sp_window_handle` |
| Closing window handle | cindy_vberkel | CC0 1.0 | | `sp_window_close` |
| Whip sound | reemax | CC BY 3.0 | | `sp_thwip_2`, `sp_web_snap` |
| Impact Sounds | Kenney | CC0 1.0 | | `sp_kick`, `sp_land_hard`, `sp_land_light`, `sp_leg_strike`, `sp_web_hit_body`, `sp_zip_whoosh` |
| Sorting cutlery | Gravity Sound | CC BY 4.0 | | `sp_nano_flow` |
| Lock | Gravity Sound | CC BY 4.0 | | `sp_leg_stow` |
| Land in Gravel | Gravity Sound | CC BY 4.0 | | `sp_land_hard` |
## How each sound was built
* **`sp_thwip_1`** -- layers: [1] finger snap (Finger clicks) cut to its first ~30 ms, HP 300 Hz; [2] pump-spray "pfft" burst, HP 2.5 kHz, 1 ms attack, ~25 ms decay, varispeed 1.1->0.92; [3a] the same air + a fishing-rod swish (Freesound 371313) through a resonant band gliding 6.5 -> 1.3 kHz; [3b] Shhhwwshhhw air-whistle played with a falling varispeed (2.4x -> 1.0x) = the descending zip; [4] rope-zip (Freesound 527421) sped 2-4x with falling rate; [5] the click slowed and LP 450 Hz for body; bus HP 110 Hz + 2.5:1 compression. _Sources: Pumpspray pfft, Fishing Rod Swish Swoosh.wav, ROPEMvmt_Rope Zip Slow_MP_9.wav, Shhhwwshhhw, Finger clicks. Level: short-window K-loudness -15.0 (true-peak capped)._
* **`sp_thwip_2`** -- layers: [1] bull-whip crack tip (OGA whip.wav) cut to its first ~30 ms, HP 300 Hz; [2] air-duster can burst, HP 2.5 kHz, 1 ms attack, ~25 ms decay, varispeed 1.1->0.92; [3a] the same air + a fishing-rod swish (Freesound 371313) through a resonant band gliding 7.5 -> 1.7 kHz; [3b] pen whoosh (Freesound 391441) air-whistle played with a falling varispeed (1.9x -> 0.85x) = the descending zip; [4] rope-zip (Freesound 527421) sped 2-4x with falling rate; [5] the click slowed and LP 450 Hz for body; bus HP 110 Hz + 2.5:1 compression. Whole shot varispeeded x1.08; body from the air-nailer shot. _Sources: Air duster short, air_nailer_single_shot_1.wav, Pen whoosh 1.wav, Fishing Rod Swish Swoosh.wav, ROPEMvmt_Rope Zip Slow_MP_9.wav, Whip sound. Level: short-window K-loudness -16.0 (true-peak capped)._
* **`sp_thwip_3`** -- layers: [1] snapping twig (pitched x1.2) cut to its first ~30 ms, HP 300 Hz; [2] pneumatic air-nailer exhaust (Freesound 131304) burst, HP 2.5 kHz, 1 ms attack, ~25 ms decay, varispeed 1.1->0.92; [3a] the same air + a fishing-rod swish (Freesound 371313) through a resonant band gliding 5.6 -> 1.15 kHz; [3b] Shhhwwshhhw air-whistle played with a falling varispeed (2.1x -> 0.85x) = the descending zip; [4] rope-zip (Freesound 527421) sped 2-4x with falling rate; [5] the click slowed and LP 450 Hz for body; bus HP 110 Hz + 2.5:1 compression. Whole shot varispeeded x0.93. _Sources: air_nailer_single_shot_1.wav, Fishing Rod Swish Swoosh.wav, ROPEMvmt_Rope Zip Slow_MP_9.wav, Shhhwwshhhw, Finger clicks, Snapping twig (single). Level: short-window K-loudness -15.6 (true-peak capped)._
* **`sp_thwip_4`** -- layers: [1] air-rifle shot (Freesound 466310) cut to its first ~30 ms, HP 300 Hz; [2] deodorant spray burst, HP 2.5 kHz, 1 ms attack, ~25 ms decay, varispeed 1.1->0.92; [3a] the same air + a fishing-rod swish (Freesound 371313) through a resonant band gliding 7 -> 1.5 kHz; [3b] Shhhwwshhhw air-whistle played with a falling varispeed (2.7x -> 1.15x) = the descending zip; [4] rope-zip (Freesound 527421) sped 2-4x with falling rate; [5] the click slowed and LP 450 Hz for body; bus HP 110 Hz + 2.5:1 compression. Whole shot varispeeded x1.03. _Sources: Deodorant spray (short), Air Rifle, Fishing Rod Swish Swoosh.wav, ROPEMvmt_Rope Zip Slow_MP_9.wav, Shhhwwshhhw, Finger clicks. Level: short-window K-loudness -15.6._
* **`sp_thwip_double`** -- sp_thwip_1 panned -0.4 + sp_thwip_3 (x0.97) panned +0.4 and delayed 16 ms; extra body = air-rifle shot slowed x0.5, LP 300 Hz, 60 ms decay, plus the finger snap slowed x0.5; bus compression. _Sources: air_nailer_single_shot_1.wav, Pumpspray pfft, Air Rifle, Fishing Rod Swish Swoosh.wav, ROPEMvmt_Rope Zip Slow_MP_9.wav, Shhhwwshhhw, Finger clicks, Snapping twig (single). Level: short-window K-loudness -13.5 (true-peak capped)._
* **`sp_thwip_swing`** -- thwip layers (twig crack, pump-spray air, resonant vowel 6->1.4 kHz) followed by the rope-zip recording (Freesound 527421) played at a rate falling 3.4x -> 1.5x over 0.45 s (real descending zip), a fishing-rod swish varispeeded 1.3->0.8 and a pen-whoosh whistle gliding 1.6x -> 0.7x; line layers band-limited 900 Hz-10 kHz, swell to 0.12 s and decay. _Sources: Pen whoosh 1.wav, Pumpspray pfft, Fishing Rod Swish Swoosh.wav, ROPEMvmt_Rope Zip Slow_MP_9.wav, Shhhwwshhhw, Finger clicks, Snapping twig (single). Level: loudnorm I=-19.3._
* **`sp_web_splat_1`** -- wet splat (Freesound 495118) onset cut, HP 120 Hz, ~90 ms decay; sticky-tape peel crackle HP 2.5 kHz under it; tack click on the attack. _Sources: Tack tack tack, Sticky tape, Wet Splat 1.mp3. Level: short-window K-loudness -20.1 (true-peak capped)._
* **`sp_web_splat_2`** -- slime slap (Freesound 794272) varispeed x1.15, tape crackle, mechanical-tack click. _Sources: Mechanical tack, Slime slapping, Sticky tape. Level: short-window K-loudness -17.7 (true-peak capped)._
* **`sp_web_splat_3`** -- wet splat 2 (Freesound 495117) varispeed x0.88, tape crackle, finger-snap click. _Sources: Finger clicks, Sticky tape, Wet Splat 2.mp3. Level: short-window K-loudness -19.1 (true-peak capped)._
* **`sp_web_hit_body`** -- Gravity Sound "Punch Flesh" onset (LP 2.5 kHz) + wet splat 1 x1.1 + Kenney impactSoft_medium; compressed. _Sources: Punch Flesh, Impact Sounds, Wet Splat 1.mp3. Level: short-window K-loudness -16.7 (true-peak capped)._
* **`sp_web_attach_1`** -- rope quick-snatch (Freesound 802697) onset HP 300 Hz + loose bow-string twang sped x2.2 + tack click. _Sources: Deep twang of loose bow string, Rope - Quick snatch, Tack tack tack. Level: short-window K-loudness -23.9 (true-peak capped)._
* **`sp_web_attach_2`** -- rope snatch (2nd onset) + bow twang x1.7 + mechanical tack. _Sources: Deep twang of loose bow string, Mechanical tack, Rope - Quick snatch. Level: short-window K-loudness -20.1 (true-peak capped)._
* **`sp_web_release`** -- bow-string twang x2.6 (HP 600 Hz, 60 ms) + pump-spray pfft tail (HP 3 kHz) + pen click. _Sources: Deep twang of loose bow string, Retractable pen clicking, Pumpspray pfft. Level: short-window K-loudness -26.9 (true-peak capped)._
* **`sp_web_snap`** -- cut-rope recording (Freesound 540266) onset + bull-whip crack (OGA, reemax CC-BY 3.0) + fishing-rod swish recoil slowed x0.8. _Sources: cut rope.wav, Fishing Rod Swish Swoosh.wav, Whip sound. Level: loudnorm I=-27.1 (true-peak capped)._
* **`sp_zip_whoosh`** -- rope-zip (Freesound 527421) played with a RISING varispeed 1.0->2.6, swing whoosh (Freesound 389590) swelling, clothes whoosh on top, Kenney impactSoft thump at the end. _Sources: Foley_Whoosh_Clothes.wav, Impact Sounds, ROPEMvmt_Rope Zip Slow_MP_9.wav, Swing Woosh. Level: loudnorm I=-19.2._
* **`sp_web_pull`** -- leash stretch-tighten-whoosh (Freesound 624485) loudest 0.45 s + rope snatch + quick woosh (Freesound 683101). _Sources: Rope - leash - medium - stretched - tighten - whoosh.wav, quick woosh, Rope - Quick snatch. Level: loudnorm I=-24.1 (true-peak capped)._
* **`sp_web_creak_1`** -- soft leather creak (Freesound 734598), loudest 0.5 s, HP 150 Hz. _Sources: Leather - Creak, soft. Level: loudnorm I=-28.6 (true-peak capped)._
* **`sp_web_creak_2`** -- creaking metal wire of a wooden gate (Freesound 861827), loudest 0.6 s, varispeed x1.25, HP 200 Hz. _Sources: Creaking Metal Wire of Wooden Gate. Level: loudnorm I=-25.2 (true-peak capped)._
* **`sp_web_tension_loop`** -- mooring rope creaking (Freesound 145721), 2.4 s loop crossfaded from the continuing recording, HP 120 Hz. _Sources: Mooring Rope.wav. Level: loudnorm I=-20.8 (true-peak capped)._
* **`sp_swing_whoosh_1`** -- swing woosh (Freesound 389590) slowed x0.7 + car strong wind noise (Freesound 439242) shaped into a swell. _Sources: Car Strong Wind Noise.mp3, Swing Woosh. Level: loudnorm I=-26.8 (true-peak capped)._
* **`sp_swing_whoosh_2`** -- shirt whoosh (Freesound 391448) slowed x0.6 + clothes whoosh + warehouse wind, swell. _Sources: Foley_Whoosh_Clothes.wav, Shirt Whoosh 1.wav, Ambiance_Wind_Strong_Warehouse_Loop.wav. Level: loudnorm I=-28.9 (true-peak capped)._
* **`sp_wind_loop`** -- car strong wind noise (Freesound 439242), HP 90 Hz, 4 s loop crossfaded from the continuing recording. _Sources: Car Strong Wind Noise.mp3. Level: loudnorm I=-11.4._
* **`sp_nano_flow`** -- grain pouring (Commons "Pouring particles like grain") + slish-slash box of nails (HP 2 kHz) + sorting cutlery (MarkZero bank, Gravity Sound) + metal-bristle crackle, swell in / clean tail. _Sources: Crackling sound of short metal bristles, Pouring particles like grain, Sorting cutlery, Slish slash a box of nails. Level: loudnorm I=-15.2._
* **`sp_nano_seal`** -- small metal mechanism click (Freesound 403587) + tight door lock (Gravity Sound) HP 800 Hz + short grain tail. _Sources: Pouring particles like grain, Tight door lock 2, Metal_Mechanism_Click_Small.wav. Level: short-window K-loudness -14.8 (true-peak capped)._
* **`sp_nano_mask_open`** -- grain pour (HP 800 Hz) + metal-bristle brush scrub (HP 2.5 kHz), fast attack, falling tail. _Sources: Pouring particles like grain, Scrubbing with small metal bristled brush. Level: loudnorm I=-15.8 (true-peak capped)._
* **`sp_nano_mask_close`** -- grain pour + bristle scrub swelling up, metallic click (Freesound 778444) at 0.62 s. _Sources: Pouring particles like grain, Metallic_Click, Scrubbing with small metal bristled brush. Level: loudnorm I=-13.3._
* **`sp_lens_focus`** -- compact camera lens / autofocus / shutter (Freesound 826117), loudest 0.25 s, HP 800 Hz, varispeed x1.2. _Sources: Camera - Modern Compact (Lens, AF and Shutter). Level: short-window K-loudness -13.3 (true-peak capped)._
* **`sp_leg_deploy`** -- servo motor (Freesound 322021) loudest 0.6 s varispeed 0.9->1.3 + ratchet (Freesound 375709) + mechanism activation sequence (Freesound 752067) + Gravity Sound lock at 0.72 s. _Sources: Lock, Mechanism Activation Sequence, Ratchet (ratchet2.wav), Servo motor. Level: loudnorm I=-19.9 (true-peak capped)._
* **`sp_leg_stow`** -- servo motor varispeed 1.2->0.85 + ratchet 2 (Freesound 333611) + latch (MarkZero bank, Gravity Sound "Lock"). _Sources: Lock, Ratchet2.aif, Servo motor. Level: loudnorm I=-22.6 (true-peak capped)._
* **`sp_leg_step_1`** -- Gravity Sound "Nails on tile once" (variant 1) varispeed x1.00 + tack click. _Sources: Nails on tile once, Tack tack tack. Level: short-window K-loudness -26.6 (true-peak capped)._
* **`sp_leg_step_2`** -- Gravity Sound "Nails on tile once" (variant 2) varispeed x1.08 + tack click. _Sources: Nails on tile once 2, Tack tack tack. Level: short-window K-loudness -24.5 (true-peak capped)._
* **`sp_leg_step_3`** -- Gravity Sound "Nails on tile once" (variant 3) varispeed x0.94 + tack click. _Sources: Nails on tile once 3, Tack tack tack. Level: short-window K-loudness -24.3 (true-peak capped)._
* **`sp_leg_servo_1`** -- servo_a recording (Freesound CC0), loudest window, varispeed x1.0, 0.28 s. _Sources: Small servo (arduino). Level: short-window K-loudness -11.5 (true-peak capped)._
* **`sp_leg_servo_2`** -- servo_9 recording (Freesound CC0), loudest window, varispeed x1.1, 0.32 s. _Sources: Servo 9. Level: short-window K-loudness -9.5 (true-peak capped)._
* **`sp_leg_servo_3`** -- servo_m recording (Freesound CC0), loudest window, varispeed x1.3, 0.25 s. _Sources: Servo motor. Level: short-window K-loudness -12.4 (true-peak capped)._
* **`sp_leg_strike`** -- Gravity Sound "Sword Swipe" + "Slice" + Kenney impactMetal_medium, compressed. _Sources: Slice, Sword Swipe, Impact Sounds. Level: loudnorm I=-19.2 (true-peak capped)._
* **`sp_step_1`** -- rubber-shoe footsteps on concrete (Freesound 495475), onset 1, LP 6 kHz. _Sources: footsteps-rubber shoes-concrete-empty warehouse.wav. Level: short-window K-loudness -38.2 (true-peak capped)._
* **`sp_step_2`** -- rubber-shoe footsteps on concrete (Freesound 495475), onset 2, LP 6 kHz. _Sources: footsteps-rubber shoes-concrete-empty warehouse.wav. Level: short-window K-loudness -27.6 (true-peak capped)._
* **`sp_step_3`** -- rubber-shoe footsteps on concrete (Freesound 495475), onset 3, LP 6 kHz. _Sources: footsteps-rubber shoes-concrete-empty warehouse.wav. Level: short-window K-loudness -31.6 (true-peak capped)._
* **`sp_step_4`** -- rubber-shoe footsteps on concrete (Freesound 495475), onset 4, LP 6 kHz. _Sources: footsteps-rubber shoes-concrete-empty warehouse.wav. Level: short-window K-loudness -24.3 (true-peak capped)._
* **`sp_land_light`** -- Gravity Sound "Jump Landing" onset + Kenney footstep_concrete, LP 5 kHz. _Sources: Jump Landing, Impact Sounds. Level: loudnorm I=-27.6 (true-peak capped)._
* **`sp_land_hard`** -- Gravity Sound "Jump Landing" slowed x0.8 + Kenney impactSoft_heavy + gravel land (MarkZero bank) + keys shaking (HP 3 kHz, very low) for the suit rattle; compressed. _Sources: Jump Landing, Keys shaking, Impact Sounds, Land in Gravel. Level: loudnorm I=-22.8 (true-peak capped)._
* **`sp_jump`** -- sneaker on concrete on/off (Freesound 272312) onset + shirt whoosh (Freesound 391448). _Sources: Shirt Whoosh 1.wav, concrete_10d_startassneakers_onoff.wav. Level: loudnorm I=-29.1 (true-peak capped)._
* **`sp_punch_1`** -- Gravity Sound gs_punch onset + quickwh whoosh leading in, compressed. _Sources: Punch Flesh, quick woosh. Level: loudnorm I=-24.9 (true-peak capped)._
* **`sp_punch_2`** -- Gravity Sound gs_hardgut onset + shirtwh whoosh leading in, compressed. _Sources: Hard Punch Gut, Shirt Whoosh 1.wav. Level: loudnorm I=-22.9 (true-peak capped)._
* **`sp_kick`** -- swing woosh (Freesound 389590) + Gravity Sound "Hard Punch Gut" slowed x0.85 + Kenney impactPunch_heavy. _Sources: Hard Punch Gut, Impact Sounds, Swing Woosh. Level: loudnorm I=-20.9 (true-peak capped)._
* **`sp_whoosh_1`** -- gs_swipe3 loudest 0.4 s window, varispeed x1.0. _Sources: Swipe 3. Level: loudnorm I=-43.1 (true-peak capped)._
* **`sp_whoosh_2`** -- clothwh loudest 0.4 s window, varispeed x0.9. _Sources: Foley_Whoosh_Clothes.wav. Level: loudnorm I=-25.9 (true-peak capped)._
* **`sp_whoosh_3`** -- quickwh loudest 0.4 s window, varispeed x1.1. _Sources: quick woosh. Level: loudnorm I=-24.1 (true-peak capped)._
* **`sp_wall_grip`** -- rubber squeak (Commons) onset, LP 4 kHz + sticky-tape tick. _Sources: Rubber squeaking, Sticky tape. Level: short-window K-loudness -21.7 (true-peak capped)._
* **`sp_crawl_1`** -- Gravity Sound "Sandle on brick" (gs_sandle2) onset, LP 5 kHz + rubber squeak whisper. _Sources: Sandle on brick 2, Rubber squeaking. Level: short-window K-loudness -11.9 (true-peak capped)._
* **`sp_crawl_2`** -- Gravity Sound "Sandle on brick" (gs_sandle3) onset, LP 5 kHz + rubber squeak whisper. _Sources: Sandle on brick 3, Rubber squeaking. Level: short-window K-loudness -21.2 (true-peak capped)._
* **`sp_cloth_1`** -- zipper and hoodie clothes rustle (Freesound 427211), loudest window 1. _Sources: zipper and hoodie clothes rustle.wav. Level: loudnorm I=-34.5 (true-peak capped)._
* **`sp_cloth_2`** -- zipper and hoodie clothes rustle (Freesound 427211), loudest window 2. _Sources: zipper and hoodie clothes rustle.wav. Level: loudnorm I=-34.5 (true-peak capped)._
* **`sp_sneaker_1`** -- footsteps stone + sneaker (Freesound 677069), onset 1. _Sources: Footsteps stone + sneaker. Level: short-window K-loudness -30.7 (true-peak capped)._
* **`sp_sneaker_2`** -- footsteps stone + sneaker (Freesound 677069), onset 2. _Sources: Footsteps stone + sneaker. Level: short-window K-loudness -34.3 (true-peak capped)._
* **`sp_sneaker_3`** -- footsteps stone + sneaker (Freesound 677069), onset 3. _Sources: Footsteps stone + sneaker. Level: short-window K-loudness -35.2 (true-peak capped)._
* **`sp_sneaker_4`** -- footsteps stone + sneaker (Freesound 677069), onset 4. _Sources: Footsteps stone + sneaker. Level: short-window K-loudness -36.7 (true-peak capped)._
* **`sp_window_handle`** -- window handle click (Freesound 614248), onset. _Sources: window_handle_click.wav. Level: short-window K-loudness -28.6 (true-peak capped)._
* **`sp_window_push`** -- Commons "Flapping window opening" + "Door handle creaking" (HP 300 Hz). _Sources: Door handle creaking, Flapping window opening. Level: loudnorm I=-32.5 (true-peak capped)._
* **`sp_window_close`** -- Commons "Flapping window closing" + closing window handle (Freesound 823497). _Sources: Flapping window closing, Closing window handle. Level: loudnorm I=-39.2 (true-peak capped)._
* **`sp_sill_step`** -- Gravity Sound "Sandle on brick 3" onset, varispeed x0.9 + sneaker scuff. _Sources: Sandle on brick 3, concrete_10d_startassneakers_onoff.wav. Level: short-window K-loudness -20.6 (true-peak capped)._
## Loudness
* Sounds >= 0.4 s: gain set from ffmpeg `loudnorm` (EBU R128) measurement to **-16 LUFS integrated**,
applied as a single linear gain (no dynamic processing), capped so the true peak stays <= -2 dBTP.
* One-shots < 0.4 s: integrated loudness is not meaningful that short, so the gain is set from the
loudest 100 ms K-weighted window (target -11.0 LUFS on that window, which is where the -16 LUFS-I
items land), with the same true-peak cap.
* `gain` in index.json balances ids against each other (sp_thwip_1 = 1.0 reference).
* Loops: use the `.ogg` in engine (MP3 encoders add padding at the start, which breaks gapless looping).
Full attribution text for the CC BY items:
* "Punch Flesh" by Gravity Sound, CC BY 4.0 (), via
* "Hard Punch Gut" by Gravity Sound, CC BY 4.0 (), via
* "Sword Swipe" by Gravity Sound, CC BY 4.0 (), via
* "Swipe 3" by Gravity Sound, CC BY 4.0 (), via
* "Slice" by Gravity Sound, CC BY 4.0 (), via
* "Nails on tile once" by Gravity Sound, CC BY 4.0 (), via
* "Nails on tile once 2" by Gravity Sound, CC BY 4.0 (), via
* "Nails on tile once 3" by Gravity Sound, CC BY 4.0 (), via
* "Sandle on brick 2" by Gravity Sound, CC BY 4.0 (), via
* "Sandle on brick 3" by Gravity Sound, CC BY 4.0 (), via
* "Lock" by Gravity Sound, CC BY 4.0 (), via
* "Tight door lock 2" by Gravity Sound, CC BY 4.0 (), via
* "Keys shaking" by Gravity Sound, CC BY 4.0 (), via
* "Jump Landing" by Gravity Sound, CC BY 4.0 (), via
* "Whip sound" by reemax, CC BY 3.0 (), via
* "Sorting cutlery" by Gravity Sound, CC BY 4.0 (), via
* "Lock" by Gravity Sound, CC BY 4.0 (), via
* "Land in Gravel" by Gravity Sound, CC BY 4.0 (), via
---------------------------------------------------------------- assets/city/tex/CREDITS.md
# City textures — credits
All surface textures are **CC0** from ambientCG (), resized to 512 px, packed into arrays by `blender/city/build_textures.py`:
- Asphalt025C — https://ambientcg.com/view?id=Asphalt025C — CC0 1.0
- Asphalt031 — https://ambientcg.com/view?id=Asphalt031 — CC0 1.0
- Bricks053 — https://ambientcg.com/view?id=Bricks053 — CC0 1.0
- Bricks085 — https://ambientcg.com/view?id=Bricks085 — CC0 1.0
- Bricks097 — https://ambientcg.com/view?id=Bricks097 — CC0 1.0
- Concrete031 — https://ambientcg.com/view?id=Concrete031 — CC0 1.0
- Concrete034 — https://ambientcg.com/view?id=Concrete034 — CC0 1.0
- Concrete042A — https://ambientcg.com/view?id=Concrete042A — CC0 1.0
- CorrugatedSteel005 — https://ambientcg.com/view?id=CorrugatedSteel005 — CC0 1.0
- Grass004 — https://ambientcg.com/view?id=Grass004 — CC0 1.0
- Gravel022 — https://ambientcg.com/view?id=Gravel022 — CC0 1.0
- Ground079S — https://ambientcg.com/view?id=Ground079S — CC0 1.0
- PavingStones138 — https://ambientcg.com/view?id=PavingStones138 — CC0 1.0
- Plaster001 — https://ambientcg.com/view?id=Plaster001 — CC0 1.0
- Rock030 — https://ambientcg.com/view?id=Rock030 — CC0 1.0
- Tiles143 — https://ambientcg.com/view?id=Tiles143 — CC0 1.0
- WoodFloor051 — https://ambientcg.com/view?id=WoodFloor051 — CC0 1.0
Water normal maps: `waternormals.jpg`, `Water_1_M_Normal.jpg` from the three.js repository examples (MIT licence, © three.js authors).
Metal panel slice and the room atlases are procedural / rendered by our own scripts.