Conversation
Proton/umu 的真实前缀是 <game_prefix>/pfx,PreFixPath 本身只是 compat data 目录(不含 drive_c 与 system.reg)。此前注册表改动、cryptbase、GameInput 与 wineboot 都作用在 PreFixPath 上,Wine 实际读不到,表现为鼠标点击无响应、 登录卡住。 - PathsList:新增 WinePrefixPath = PreFixPath/pfx - WinePrefix:Boot/ApplyWinegdkPrereqs/SetRefreshToken/RemoveRefreshToken 改用 WinePrefixPath;wineboot 补上 STEAM_COMPAT_DATA_PATH 与 STEAM_COMPAT_CLIENT_INSTALL_PATH - EasyLauncher:GameInput 与 cryptbase 的安装/检查改用 WinePrefixPath
部分镜像对 Range 请求返回 200 与整个文件,旧逻辑仍按分段偏移写入再拼接, 导致下载结果成倍膨胀却被判定为成功(ProtonGDK 组件损坏、解压报 Unknown block type 的根因)。 - 新增 RangeNotHonoredException;DownloadPartAsync 要求 206 且 Content-Range 与请求分段一致,并校验分段字节数 - DownloadPartWithRetryAsync 对该异常不再重试 - DownloadAsync 捕获后回退单线程下载(DownloadSinglePartAsync) - 合并与单线程路径统一改为先写 .part、校验总长度后原子替换,新增 MergeTempFilesAsync 与 TryDelete
Minecraft 的 RenderDragon 在图形初始化时会无条件初始化 AMD AGS,而 Wine 内置的 amd_ags_x64 读不出自身版本资源(err 1812),agsInit 恒返回失败,游戏反复重试后 卡死:窗口出现但无内容、主线程 100% CPU、界面无响应。 - 在 WinePrefix.ApplyWinegdkPrereqs 中写入 HKCU\Software\Wine\DllOverrides 的 amd_ags_x64=disabled - AGS 只是 AMD 的可选厂商扩展,禁用后游戏走"没有 AGS"的普通分支; 未加载该 DLL 的机器同样运行正常 - 实测:撤掉该 override 白屏必然复现,加回即恢复
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Linux 下经 NeoLaunch(Proton/umu)启动游戏存在三处问题,本 PR 各修一处。
问题与修改
1. Wine 依赖与注册表写到错误目录(
d3c9d7b2)Proton/umu 的真实前缀是
STEAM_COMPAT_DATA_PATH/pfx,而PreFixPath本身只是 compat data目录(不含
drive_c与system.reg)。此前的注册表改动、cryptbase、GameInput、wineboot都作用在
PreFixPath上,Wine 实际读不到,表现为鼠标点击无响应、登录卡住。PathsList.WinePrefixPath = PreFixPath/pfxWinePrefix.Boot/ApplyWinegdkPrereqs/SetRefreshToken/RemoveRefreshToken、EasyLauncher的 GameInput/cryptbase 安装与检查全部改用WinePrefixPathwineboot补上STEAM_COMPAT_DATA_PATH与STEAM_COMPAT_CLIENT_INSTALL_PATH2. 多线程下载器不校验 Range(
748f2a54)部分镜像对 Range 请求返回
200+ 整个文件,旧逻辑仍按分段偏移写入再拼接,结果成倍膨胀却被判定为下载成功(组件损坏、解压报
Unknown block type的根因)。206且Content-Range与请求一致,并校验分段字节数,否则抛RangeNotHonoredExceptionDownloadAsync捕获后回退单线程下载.part、校验总长度后原子替换3. Wine 内置
amd_ags_x64导致 AGS 初始化死循环(db8a91c3)RenderDragon 在图形初始化时会无条件初始化 AMD AGS,而 Wine 内置的
amd_ags_x64读不出自身版本资源(
err 1812),agsInit恒返回失败,游戏反复重试后卡死:窗口出现但无内容、主线程 100% CPU、界面无响应。
WinePrefix.ApplyWinegdkPrereqs写入HKCU\Software\Wine\DllOverrides的amd_ags_x64=disabled验证
wineboot、注册表、GameInput 均落在<game_prefix>/pfx,鼠标与登录恢复正常200+ 完整文件)复现,旧逻辑把 12 MB 写成48 MB 且返回成功;修复后提示"服务器未按 Range 返回分段,回退单线程",产物大小与哈希均正确
err:amd_ags:get_ags_version_from_resource ... err 1812在日志里重复 3000+ 次、主线程 100% CPU);加回后amd_ags报错 0 行,渲染线程正常启动并进入网络/登录阶段
已在两个设备上验证通过