燕云十六声(Where Winds Meet)在Linux/SteamOS/wine/proton中读条很慢/加载很慢/传送很慢/slow loading的解决方法

@Ta 10-18 02:07发布,10-18 12:52修改 1265点击

禁用 NTSync 和 FSync,只启用 ESync 即可,比如把游戏添加到 Steam 后可设置如下启动选项:

PROTON_NO_NTSYNC=1 PROTON_NO_FSYNC=1 PROTON_NO_ESYNC=0 %command%

如果直接用 wine 启动就设置:

export WINENTSYNC=0
export WINEFSYNC=0
export WINEESYNC=1

如果加载/传送还是很慢,可以再把 ESync 也禁用了:

PROTON_NO_NTSYNC=1 PROTON_NO_FSYNC=1 PROTON_NO_ESYNC=1 %command%

如果直接用 wine 启动就设置:

export WINENTSYNC=0
export WINEFSYNC=0
export WINEESYNC=0

NTSync 似乎会导致燕云十六声的加载并行度下降,部分线程出现长时间等待,导致传送需要特别久。
FSync 在我的机器上会导致燕云十六声出现加载错误,大量贴图未正常加载,游戏渲染完全异常。
ESync 加载正常并且传送也很快。
完全禁用上述三种Sync,改用默认的 wineserver sync,加载和传送也正常,感觉速度和 ESync 差不多。

回复列表(6|隐藏机器人聊天)
  • @Ta / 10-18 12:59 / 样 / 源

    我今天重启电脑后再把 NTSync 打开(把启动选项完全删掉),传送速度恢复正常了……
    而且实测NTSync/FSync/ESync/wineserver sync的传送速度没有任何差异,在春蚕山庄正门用界碑记忆原地传送10次的耗时都是23秒……
    并且FSync的贴图载入错误问题也消失了……
    不明觉厉……

  • @Ta / 10-18 15:07 / 样 / 源

    我知道了,问题要在玩了一段时间,在大世界传送过几次之后才会发生。
    现在 FSync 又出现贴图错误了。NTSync 的传送慢倒是还没有复现。

  • @Ta / 10-18 17:25 / 样 / 源

    找到 FSync 贴图错误的原因了,是游戏退出后 /dev/shm 存在残留共享内存文件,被重新启动的游戏进程加载了。

    可以这样清理(在启动器已运行,游戏还没运行的时候执行):

    预览:只列出,不删除

    comm -23 <(ls /dev/shm|sort) <(grep -ho '/dev/shm/[^ ]*' /proc/[0-9]*/maps 2>/dev/null|xargs -r -n1 basename|sort -u) | grep 'Shm_' | sed 's|^|/dev/shm/|'
    

    执行删除

    comm -23 <(ls /dev/shm|sort) <(grep -ho '/dev/shm/[^ ]*' /proc/[0-9]*/maps 2>/dev/null|xargs -r -n1 basename|sort -u) | grep 'Shm_' | sed 's|^|/dev/shm/|' | xargs -r rm -v
    

    好像是 Progon-GE 的 Bug,换成 Proton Experimental 似乎就没有这个问题了。

  • @Ta / 10-18 17:24 / 样 / 源

    不对,Proton Experimental 的 FSync 现在也出问题了,而且就算删了残留,在游戏内多传送几个地方就又可能会受到残留影响导致资源加载失败。
    看起来 FSync 就是与燕云十六声不兼容。

  • @Ta / 10-18 18:54 / 样 / 源

    @老虎会游泳,能让 AI 去自动化修复吗?

    听说现在 AI 反编译啥的挺厉害的,连 Android 黑苹果都有了。。

  • @Ta / 10-18 20:32 / 样 / 源

    @无名啊,FSync和NTSync在没有出Bug的情况下也不会提高帧数和加载速度,AI修好了也只是和ESync一样,感觉不太有必要。
    只要切换到ESync就不会发生问题,这是最简单的解决方法。

添加新回复
回复需要登录。