✦ SPIELWELTENMoto Racer - Rampage ↗

Surface contact feedback

The player tire sound now follows the measured riding surface, speed, lateral slip and applied brake. Asphalt retains its existing scrub sound; gravel is more granular, earth and sand are softer, snow is quieter and lower in frequency, and wood uses restrained rolling noise. A recorded granular layer fades in on loose ground. A separate sparse wood creak is eligible only while the rear tire contacts a moving wooden deck. Both respect the effects-volume slider, race/pause state, recovery and reset generation. No rumble or physics force is generated by these effects, and snow remains a legal road surface.

The new sources are player-only: one continuous granular source and one sparse creak source. Nearby rivals retain the existing engine-voice budget. Source clips are shared Unity resources; the component owns only its playback objects. A creak starts at the measured contact point and remains there while playing. A bridge's natural zero-velocity turning point does not truncate that recorded event.

Loose surfaces also emit small gravel, earth, sand or snow fragments from the measured rear-wheel contact. Asphalt and wood do not emit them. Only the four nearest eligible bikes within 65m emit, with at most 48 particles per bike and 40 particles per second. Short-lived remnants can finish when a wheel leaves a surface; resets and recovery clear them. The opaque eight-face fragments have distinct surface colors, finite emission inputs, no shadows, and owned mesh cleanup. They are bounded particulate feedback, not a volumetric dust or snow simulation. Particle simulation freezes on pause and does not change riding forces or rumble.

Credits and modifications

The ordinary public HQ MP3 previews were downloaded from links in the source pages. No authenticated original WAV was used. The original preview bytes and HTML license evidence are archived under Assets/Rampage/Resources/Audio/SurfaceSources~. surface-audio-manifest.json records page, source, script and delivered PCM hashes, processing, duration and signal measurements. No author endorsement is implied.

Reproduction and present evidence

From the project root, run python Assets/Rampage/Resources/Audio/SurfaceSources~/build_surface_audio.py with NumPy, SciPy and ffmpeg available. The command reads the archived sources and atomically regenerates the two WAVs and manifest. It does not start Unity or an audio device, and it leaves engine previews 01–04 unchanged.

The delivered gravel loop is 3.84 seconds and the wood clip is 1.595 seconds, both mono 22,050Hz PCM16. Both have zero clipped samples and a peak of 0.580. The gravel boundary step is 0.00848, below its natural adjacent-step 95th percentile of 0.03735; the faded wood endpoints meet at zero. These are numerical delivery checks, not proof of inaudibility of artifacts or perceptual quality.

The full authored Runtime and Editor sources compiled without warnings or errors after audio and particle integration. The actual managed surface targets and stereo tire DSP passed 42/42 checks in surface-feedback-verification.json. These cover stationary silence, separate brake/slip responses, bounded output, nonfinite-input handling, left/right symmetry and softer snow targets. Reproduce with Tools/Verification/surface-feedback-verification.ps1. This executable instantiates no audio device, particle system, physics scene or profile.

Read-only archive/license/hash and PCM delivery checks passed 21/21, reproducible with python Tools/Verification/verify_surface_audio.py; their separate report is surface-audio-delivery-verification.json. The existing recorded-audio importer now enforces PCM/preload settings for both surface files too.

Unity playback, balance against the engine, particle readability and human acceptance remain to be checked in the built game. The preceding 103/103 native surface-physics checks establish force/contact behavior before these sensory additions; they do not verify audio playback or particles.