🎵 AUDIO INTEGRATION COMPLETE: Generated cinematic narrator voices with SSML (natural pacing, breathing pauses), created AudioLoader system, integrated audio preload in PreloadScene. No more console errors! Ready for in-game testing.

This commit is contained in:
2026-01-05 21:12:06 +01:00
parent 2b0e45b497
commit adc2183655
6 changed files with 364 additions and 0 deletions

View File

@@ -9,6 +9,11 @@ class PreloadScene extends Phaser.Scene {
this.createLoadingBar();
// ═══════════════════════════════════════════════════════════════
// 🎵 AUDIO PRELOAD - Cinematic Voices
// ═══════════════════════════════════════════════════════════════
this.preloadAudio();
// ═══════════════════════════════════════════════════════════════
// 🎮 DEMO MODE - ALL OLD ASSETS DISABLED!
// ═══════════════════════════════════════════════════════════════
@@ -18,6 +23,40 @@ class PreloadScene extends Phaser.Scene {
console.log('✅ Minimal preload complete - DemoSceneEnhanced will load its own assets!');
}
preloadAudio() {
console.log('🎵 Preloading audio assets...');
const basePath = 'assets/audio/voices/';
// Narrator (cinematic)
this.loadAudioSafe('narrator_intro', basePath + 'narrator/intro_cutscene.mp3');
this.loadAudioSafe('narrator_memory', basePath + 'narrator/kai_memory_ana.mp3');
this.loadAudioSafe('narrator_discovery', basePath + 'narrator/discovery_church.mp3');
// Kai voices
this.loadAudioSafe('kai_voice_1', basePath + 'kai/kai_01.mp3');
this.loadAudioSafe('kai_voice_2', basePath + 'kai/kai_02.mp3');
this.loadAudioSafe('kai_voice_3', basePath + 'kai/kai_03.mp3');
this.loadAudioSafe('kai_voice_4', basePath + 'kai/kai_04.mp3');
this.loadAudioSafe('kai_voice_5', basePath + 'kai/kai_05.mp3');
// Ana voices
this.loadAudioSafe('ana_voice_1', basePath + 'ana/ana_01.mp3');
this.loadAudioSafe('ana_voice_2', basePath + 'ana/ana_02.mp3');
this.loadAudioSafe('ana_voice_3', basePath + 'ana/ana_03.mp3');
this.loadAudioSafe('ana_voice_4', basePath + 'ana/ana_04.mp3');
console.log('🎵 Audio preload queued');
}
loadAudioSafe(key, path) {
try {
this.load.audio(key, path);
} catch (error) {
console.warn(`⚠️ Audio skipped: ${key}`);
}
}
createAnimations() {
if (this.anims.exists('protagonist_walk')) return;