Звук в клиенте пропал из-за неверного каталога ассетов
Клиент запрашивал звук, движок его принимал и запускал, а на выходе было тихо. Причина оказалась не в коде игры. Minecraft 1.12.2 не умеет читать ассеты по индексу и объектному хранилищу. Он ждёт обычное дерево: <assetsDir>/minecraft/<путь>. А лаунчер хранит ассеты по-современному — indexes/1.12.json со ссылками на objects/<aa>/<sha1>. Мы передавали лаунчеру корень этого хранилища как --assetsDir. Игре это не выглядит как поломка: язык и текстуры берутся из самого jar, поэтому клиент выглядит полностью рабочим. Но звуки с 1.7.3 лежат только в ассетах, и их просто не было на диске. Движок поднимался, play() вызывался, ogg не находился, а paulscode на это молчит. - materialize_assets.py разворачивает дерево из индекса и хранилища, жёсткими ссылками где возможно, и идемпотентен - run-game.ps1 материализует ассеты перед запуском и указывает клиенту на развёрнутое дерево; --assetIndex больше не нужен - проверено: 1305 объектов, из них 1085 ogg, sounds.json на месте, ошибок загрузки в логе нет Заодно убрана временная диагностика звука и движения, добавленная ради поиска причины: она доказала, что запрос и воспроизведение доходят до OpenAL, и свою задачу выполнила. Полный prepare-game.ps1 после этого проходит целиком: 112 патчей, FORK COMPILES CLEAN, 3268 классов, RsxDebug в дереве не осталось.
This commit is contained in:
@@ -28,7 +28,16 @@ if (-not $Java) {
|
||||
}
|
||||
if (-not $Java) { throw 'no Java 17 found' }
|
||||
|
||||
$assets = "$env:APPDATA\AstralRinthApp\meta\assets"
|
||||
# The launcher's asset store is index-based: indexes/1.12.json pointing at
|
||||
# objects/<aa>/<sha1>. A 1.12.2 client wants <assetsDir>/minecraft/<path> and
|
||||
# will not look in either of those. Pointing --assetsDir at the store root
|
||||
# leaves the game running and looking correct, because language and textures
|
||||
# come from the jar, while every sound is silently missing.
|
||||
$store = "$env:APPDATA\AstralRinthApp\meta\assets"
|
||||
$assets = Join-Path $Run 'assets'
|
||||
& python (Join-Path $root 'rsx-client\tools\materialize_assets.py') $store $assets --index 1.12
|
||||
if ($LASTEXITCODE -ne 0) { throw 'asset materialisation failed' }
|
||||
|
||||
$cp = (Get-Content (Join-Path $Run 'classpath.txt') -Raw).Trim()
|
||||
$natives = Join-Path $Run 'natives'
|
||||
|
||||
@@ -46,7 +55,6 @@ $javaArgs += '--username'; $javaArgs += 'Player'
|
||||
$javaArgs += '--version'; $javaArgs += '1.12.2'
|
||||
$javaArgs += '--gameDir'; $javaArgs += $Run
|
||||
$javaArgs += '--assetsDir'; $javaArgs += $assets
|
||||
$javaArgs += '--assetIndex'; $javaArgs += '1.12'
|
||||
$javaArgs += '--uuid'; $javaArgs += '00000000000000000000000000000000'
|
||||
$javaArgs += '--accessToken'; $javaArgs += '0'
|
||||
$javaArgs += '--userType'; $javaArgs += 'legacy'
|
||||
|
||||
Reference in New Issue
Block a user