게임과 같은 음향 모듈을 사용해요. 버튼을 누르면 소리가 켜져요. 방망이는 짧은 충격 뒤 합금 배트의 선명한 금속 울림을 살리고, 핵폭탄은 실제 비핵 폭발 녹음과 긴 저음을 함께 사용해요. 드릴과 핵폭탄의 기존 음향은 유지했어요.
짧은 충격 뒤 1.8·2.6kHz대 금속 울림과 벽 파쇄·잔해가 이어져요. 방망이 충돌·스윙만 더 크게 조정했어요. 두 버튼으로 충돌 자체와 파쇄를 포함한 조합을 비교할 수 있어요.
누르는 동안 실제 전동드릴 녹음이 반복돼요. 접촉하면 회전이 느려지고 천공 진동·파쇄층이 강해져요. 최초 로딩 전에는 합성 모터로 작동해요.
실제 클레이 사격 녹음의 짧은 발사·잔향 뒤 0.24초에 펌프가 찰칵·철컥 움직여요. 펌프 기계음은 별도로 합성했어요.
0.3초 투척 → 1.5초 도화선 → 실제 지뢰 제거 현장 녹음을 가공한 폭발이에요. 충격 뒤 불규칙한 압력·잔향이 이어지고, 도화선은 각각 재생돼요.
사람 목소리 Three·Two·One → 3초간 점차 커지는 바람 소리 → 폭발 → 두꺼운 몸통과 약 6초의 연속 잔향. 날카로운 휘슬 없이 넓고 낮은 바람 소리예요.
음성 준비 전에는 짧은 틱이 나와요. 파일이 준비돼도 지난 숫자를 뒤늦게 재생하지 않아요.
드릴·핵 충격층·미니 폭발·산탄총·카운트다운 녹음은 첫 재생 때 불러와요.
재생 대기
직접 녹음하거나 상업적 사용·편집·게임 배포가 허용된 음원을 준비하고 출처와 라이선스를 보관해요. 한 파일을 한 번 디코딩한 뒤 AudioBuffer를 등록하면 해당 소리만 대체돼요. 등록하지 않은 소리는 합성음을 유지해요. 숫자 음성은 loadCountdownSamples()로 준비한 뒤 playCountdown(3)처럼 호출해요. 3·2·1 각각 0.8초 미만이고, 준비 실패 시 틱으로 대체해요. 이 페이지는 게임에 포함된 드릴 루프 110KB와 비핵 폭발 충격층 30KB와 카운트다운 3개 114KB, 미니 폭발 109KB, 산탄총 42KB를 각각 한 번 불러와요.
const context = new AudioContext();
const data = await fetch('./assets/audio/bat-impact.ogg').then(r => {
if (!r.ok) throw Error('Sound load failed');
return r.arrayBuffer();
});
const buffer = await context.decodeAudioData(data);
audio.setSample('bat', buffer);
await context.close();
지원 키: bat-swing, bat, drill, countdown, shotgun, shotgun-pump, mini-fuse, mini-blast, nuke-air, nuke. 이전 도구 호환용 fist, hammer, wave, ball, bomb, excavator, meteor, bomber, coin도 지원해요. 8초 이하 AudioBuffer를 받으며 setSample('bat', null)로 합성음에 복귀해요. 지속 드릴은 loadDrillLoop()로 로컬 녹음을 1회 준비하며 drill 단발 샘플과는 독립적이에요. 로딩 실패 시 합성 모터가 유지되고, 로딩 중인 누르기 동작은 중간에 교체하지 않아요.
방망이는 스윙·접촉·잔해를 분리하고, 드릴은 이어 붙여도 끊김 없는 모터 루프, 핵폭탄은 낙하·폭발·잔향을 따로 준비하는 편이 동작에 맞추기 좋아요. 모바일에서는 효과음 로드를 게임 첫 화면 표시와 분리하고 필요한 파일만 한 번 디코딩해 재사용해요.
산탄총: Joseph SARDIN / BigSoundBank #2854, CC0. 원저자가 클레이 사격장에서 녹음한 산탄총 발사라고 설명한 자료의 첫 0.65초를 발췌·음량 조정했어요. 펌프는 별도 합성음이에요. 출처·가공 기록
미니폭탄: sidohzen / Freesound #165808, CC0. 원저자가 캄보디아 지뢰 제거 현장을 Sony 캠코더로 녹음했다고 설명한 자료에서 폭발 부분 1.7초를 발췌·음량 조정했어요. 녹음의 실제 위력과 게임 피해량을 대응시키지는 않아요. 전자음 같은 피치 하강은 제거하고 합성 압력·잔향층을 더했어요. 출처·가공 기록
배트는 1분안타의 배트 브랜드별 타격 소리 차이 첫 타격을 영상 프레임·주파수 분석으로 참고했어요. 영상 음원을 복사하지 않고 별도 합성했어요. 직접 청음에 의한 유사도 확인은 하지 않았어요.
카운트다운: Countdown — ckvoiceover / Freesound, CC BY 4.0. 남성의 실제 10→1 녹음에서 3·2·1을 발췌하고 음량·양끝 페이드를 조정했어요. 합성 음성이 아니에요. 최종 파일은 로컬 음성 인식에서 three/two/one으로 확인했어요. 출처·가공 · 자동 인식 결과
드릴: Joseph SARDIN / BigSoundBank #791, CC0. 목재에 구멍을 뚫는 실제 녹음의 일부를 루프로 가공했어요. 콘크리트 현장 녹음은 아니며 게임의 벽 파쇄는 합성층을 더해 표현해요.
핵 충격층: Joseph SARDIN / BigSoundBank #1808, CC0 농업용 가스 폭발 녹음이에요. 실제 핵폭발 녹음이 아니에요. LLNL·DOE·IWM 기록을 조사했지만 게임에 쓸 동기 핵 원음을 확인하지 못했어요. 나머지 몸통·잔향은 합성했어요. 자료·설계 근거