|
perf(assets): параллельная загрузка и ленивый амбиент
О-4. AssetLoader грузил ключи await-в-цикле (~45 последовательных запросов); BootScene — 4 атласа и карты друг за другом; 2.3 МБ WAV амбиента всех областей декодировались до меню, хотя играется в первую очередь луговой. - AssetLoader.load: один Assets.load(массив URL, onProgress) — Pixi грузит параллельно, onProgress честный по группе; пост-обработка nearest по всем результатам. API не изменился. - BootScene.loadAll: Promise.all по группам (текстуры / 4 атласа / карты областей / шрифт+аудио) с общим взвешенным прогресс-баром (0.6/0.15/0.15/0.1). - Ленивое амбиент-аудио: регистрируются все ключи (дёшево), декодируются только лупы стартовой области (data/audio.ts areaAudioKeys); остальные — фоновый game.preloadAudio при входе в область (LocationScene.enter). playAmbience/playLoop и раньше умели декодировать на месте (BufferCache дедуплицирует in-flight) — теперь до меню их никто не ждёт. Perf (swiftshader): bootMs 2947-3191 -> 2781; newGame->location без изменений (~200 мс, аудио и карты грузились в boot и раньше). agent:check 16/16, включая аудио-чеки с ленивым декодом. Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| apps/game/src/Game.ts |
|---|
| apps/game/src/data/audio.ts |
|---|
| apps/game/src/scenes/BootScene.ts |
|---|
| apps/game/src/scenes/LocationScene.ts |
|---|
| docs/engine/assets-audio-save.md |
|---|
| packages/engine/src/assets/AssetLoader.ts |
|---|