Research notes · The tools behind the game
Real recordings, free to use: Freesound
Before the audio pass, Second Chance had three radio stations, sixty lines of speech and no sound effects at all. No footsteps, no traffic, no birds. A large part of what you hear in Oakhaven now started as a field recording somebody else made and shared on Freesound.
Freesound is a collaborative library of sounds, uploaded by the people who recorded them, each under a Creative Commons licence the uploader chooses. This page is how we use it: which licences we accept, how a long field recording becomes a sound the game can play, and the mistakes that would have cost us at release.

- CC0 and CC BY only
- NonCommercial is banned
- Licence checked per file
- Credits generated, never typed
- Mono for anything placed in the world
Where these facts come from
The rules on this page are the project's own, written into its audio notes as we went. A recording's licence belongs to the person who uploaded it; read it on the sound's own Freesound page, and the CC0 and CC BY 4.0 deeds, before you use it. We are game developers, not lawyers.
The one rule: CC0 and CC BY only
Every sound on Freesound carries a licence, and we accept two. CC0 means the recordist has waived their rights, so the sound can be used without a credit. CC BY allows commercial use as long as the recordist is credited. Anything marked NonCommercial is banned outright, because it would block the game's commercial release.
That rule has teeth. The top results for a dog bark were all NonCommercial, so when the German Shepherd on Liz's walk was first built, its bark had no sound. Every linnet recording we found was NonCommercial, and there was no CC0 or CC BY stock dove at all, so those two birds were generated with ElevenLabs instead. The best diesel engine packs were NonCommercial too. The search tool we use cannot filter by licence, so the check happens file by file.
The same reasoning ruled out the BBC Sound Effects archive, which James suggested for British street sounds. Its licence covers personal, educational and research use, not a commercial game.
From a search result to a sound in the game
- A manifest. One JSON file lists every sound we use: its Freesound ID, the name it will have in the game, what kind of sound it is (a loop, a one-shot, a run of footsteps) and whether it should be mono or stereo. It is the single source of truth.
- A fetch script. It downloads each sound and checks the licence again from Freesound's API, so a licence is never copied across by hand. Downloading the original upload needs a logged-in OAuth2 token, and a plain API key only covers searching and reading details, so we use the high-quality previews. Because the manifest is keyed by ID, swapping in the originals later is one command.
- A conditioning script, which is where most of the work is (next section).
- An import script, run inside Unreal Engine 5.8, which makes the sound assets and the mix they play through: sound classes, attenuation, and the dip in background sound while someone is talking.
- A credits file, generated from the manifest and never written by hand.
Turning a field recording into a game sound

Cut out the event. A Freesound "one-shot" is often a long field recording. Our first car pass-by was fifty seconds of traffic. The conditioner finds the single loudest event and cuts it out.
Make it loop, then check the join. Field recordings never loop. To make a background bed, the conditioner crossfades the tail over the head and then checks the seam: the jump at the join has to be under sixty times the median sample-to-sample jump, or the loop is rejected.
Level it. Levels vary wildly between recordists; the Nottingham city bed peaked at -26 dBFS. Background beds are matched to -26 dBFS RMS, and one-shots are peak-normalised to -3 dBFS.
Mono for anything in the world. A stereo file bypasses Unreal's attenuation panning entirely, so it never moves as you turn your head. Only wide background beds stay stereo.
Split the footsteps. A sixty-second recording of someone walking is cut at each footfall into twelve separate steps, so the game can vary every step instead of firing one clip over and over. Carpet has its own set, from two CC0 recordings.
Read birds by eye. For the hedgerow birds we draw every recording as a spectrogram, cut where the bird is alone and close, and filter the traffic out just below the bird's own pitch. The birds research page explains the method in full.
Measure it, then check the measurement
Engines. A dyno recording is a sweep, so most of it cannot loop. For an old, clapped-out sports car we scored every window of every candidate on pitch spread, level drift and loop seam, and kept only the flat ones. Its five engine layers are crossfaded by revs, and two of them are cut from the same recording a second and a half apart, because layers from two different engines beat against each other.
For the autograss buggies, ten recordings (a Hayabusa under load, a Chevrolet V8, a V6 coasting down) were followed along one harmonic, each slice time-stretched to a steady pitch, and cut into loops that repeat without a click, one for each band of revs.
The measuring tool can be wrong too. Cutting thirteen layers for the bin lorry out of recordings up to 984 seconds long, the first scoring method gave every window 0.999 and still printed CHOSEN: the feature it measured came out the same everywhere in those files. Crest factor, the ratio of peak to average level, was the measure that worked. Dense, continuous sound sits at about 6 to 14 dB; a single knock in a quiet room is above 18. A test that cannot fail is not a test, so the spread of scores is printed now, not only the winner.
Credits are generated, never typed
Every CC BY sound needs its credit to ship with the game, so the credits file is generated from the manifest. Once, a run that fetched only one batch of sounds rebuilt the credits from just that batch and silently wiped two CC BY attributions from earlier work. It was caught when we read the file back. The credits are now always rebuilt from the whole manifest, and the lesson goes wider than audio: a generated compliance file must come from the full source, never a subset.
We also turn down sounds to avoid a credit we do not need. A CC BY set of a croupier calling roulette numbers was rejected. Toby, the dealer at Last Tenner Bets, speaks all 37 numbers in his own voice, and a Freesound caller beside him would have been two different people dealing one table. Every other sound on the roulette wheel is CC0.
Where you will hear it

- The town around you: a city bed recorded in Nottingham, an Essex brook, a pelican crossing recorded in Dublin, and the river, calm and in rapids, from two CC0 recordings.
- The wind, by strength: a gentle breeze (CC0) and three storm recordings by klankbeeld (CC BY 4.0) for strong wind, a gale and the howl indoors.
- The bell at St Cuthbert's, from two CC BY recordings by klankbeeld.
- The roulette wheel: eight CC0 recordings for the spin, the rotor, the frets, the ball on wood and the chips.
- The snooker balls at the Baulk Line: five CC BY recordings cut into sixteen sounds, played by how much speed a ball gains in a frame, so the cushions stay quiet.
- The hedgerow and river birds, each with its own song and call, from British recordings wherever we could find them.
- The odd jobs: the ambulance siren (CC0), a can being crushed (CC0), and Tyson the Staffie, whose barks, growls and whines all come from one dog.
What we have not solved yet
- The snooker ball sounds are built and wired, but James has not yet heard them in play over the hall's music, and his own guess is that they sit too low.
- The game uses Freesound's high-quality previews, not the original uploads. Swapping in the originals is one command once a logged-in token is set up, and it is still to do.
- A noise gate added to clean the hiss off a goldcrest recording looks right on the spectrogram, but it still needs a proper listen for the warbling that gates can leave behind.
- Field recordings carry other things. Where a recordist names other birds in the background we have cut round them, but a sharp-eared birder may still catch one.
Further reading
In the devlog
- Cut and Fill - ten engine recordings turned into steady loops for the autograss
- Loyal for Life - one real dog's voice for every bark, growl and whine
- The Queue - a CC0 recording for the can crush
- A pigeon that flies like Muybridge's photographs - the birds research page, with the spectrogram method in full
Official sites
Watch the town come together
Second Chance is a British open-world life sim, built by one developer in Unreal Engine 5.8. The demo goes to the list first, before it goes anywhere else.
Join the list