控制变量,排除法,多尝试是问题排除中的关键
游戏是好游戏,客服是烂客服
如果需要直接找到解决方案,请翻至底部Realtek声卡驱动问题
部分
前言
在过去的两周,我的原神游戏总是会在游戏开始后立刻闪退,且没有弹出任何有助于解决问题的错误提示,这一情况可以在我的B站视频原神无报错闪退怎么破中看到效果。经过两周的折磨,终于在今天把问题解决了,特此写一下经历和思路。
我自己的方案
- 首先我尝试排除网络问题。因为原神国服在海外的连接非常糟糕,且近期从中国进出的国际网络质量变差,所以我首先想到的是网络问题。同时网络问题的排查也是所有问题中最容易解决的,所以值得将网络因素放置在第一考虑点。我抓包了游戏所有的网络进程,挂上加速器和中国代理,排除了网络问题。同时,这次网络问题排查也允许我写了修改 Hosts 以优化原神国服在海外的相关连接这篇博文。
- 我第二个排查的问题是显卡问题。因为和游戏最相关的硬件还是显卡,显卡问题可能会直接导致游戏的问题。我有另一台设备有类似的配置,但原神游戏没有任何问题,所以我将显卡驱动版本和GeForce Experience软件版本均降级为和另一台设备一样的版本。显卡和主板PCI-E连接正常,其它游戏均正常运行,故排除显卡问题。
- 查阅了PC版启动器常见问题FAQ中的解决方案,但均无效
- 我第三个排查的问题是游戏程序问题。我不是游戏的开发者,自然看不到代码。我能做的就是完整的卸载游戏并重装。事实上,重装后确实能再次进入游戏并正常游玩,但在设备重启后,游戏会再次闪退。而后几天,重装游戏甚至也不能临时解决问题了。
米游社客服方案
事实上米游社3号客服没有给予我任何有用的解决方案,也没有将我的问题转发给技术人员。在平均6小时回我一次的情况下,我收到的回复全是模版式的回复。在与米游社3号客服的交流中,排查了以下问题
- 网络问题。即使是我告知了我已经排除了网络问题,但客服仍然坚持要做网络测试,一切正常通过后便也不再提了
- 游戏内ID问题,这里可以看出来米游社客服专业性之差。客服在知道我位于海外后表示需要将用户名改为纯英文,之后重装游戏,这一解决方案毫无逻辑且非常搞笑,原因有五:
- 我的ID原本就是纯英文
- 我的系统语言几年前开始就是英文的,我从开始玩原神到现在都用的是同一个纯英文ID,那为什么过去大半年没有发生问题?
- 你一个国服游戏需要设置纯英文用户名,否则游戏闪退,那这系统设计也太烂了吧
- 就算游戏用户名非纯英文会导致游戏崩溃,那我甚至还没有登录进游戏,游戏程序怎么获取到我的ID呢?又怎么知道我的ID是否为纯英文呢?
- 我游戏都无限闪退了,咋进游戏改用户名啊?
B站社区方案
在我的原神无报错闪退怎么破?视频下的评论区,一些有一样游戏闪退情况的朋友留了言,给出了一些值得尝试的方案,以下是结果:
- 删除
%temp%
临时文件夹中的mhyprot2.sys
和mhyprotect.sys
,重启后再启动游戏
无用。这一方案其实来源于米游社PC版启动器常见问题FAQ中QA20。上述两个文件其实也位于原神游戏目录下,属于原神的反作弊程序,每次启动游戏后该文件会进入临时文件夹中。如果你的网络没有问题,反作弊文件会被正常地更新,自然也不会因为因此造成错误。
- 在注册表中删除米哈游程序的相关部分
- 无用。阅读一下注册表中的内容可以发现原神将游戏设置(画质设置,键位设置之类的)保存在了注册表中。百度一下就会发现,似乎在集显下,过高的画质设置会集显出现问题,进而导致游戏闪退。清空注册表也就重置了包括画质设置在内的游戏设置,也就解决了集显闪退的问题。但我这里是独显且没有性能不够的情况,所以理论上和实际上都对我这一情况无效。
- 删除
Realtek声卡驱动问题
昨天有人在我的B站视频下指出了原神游戏崩溃时会输出日志,其目录并不在原神安装目录中,而是
%USERPROFILE%\AppData\LocalLow\miHoYo\原神\output_log.txt
。这位朋友还指出在崩溃日志部分,有跟audio
相关的内容。- 我找到了该日志文件,其完整内容可以点击这里找到
在其中我也发现跟音频相关的崩溃日志,节选如下
========== OUTPUTING STACK TRACE ================== ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FF9B193BA66) 0x00007FF9B193BA66 (AudioDevProps2) (function-name not available) ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FF9FB37BD74) 0x00007FF9FB37BD74 (AudioSes) (function-name not available) ERROR: SymGetSymFromAddr64, GetLastError: 'Attempt to access invalid address.' (Address: 00007FF9B193BC9B) 0x00007FF9B193BC9B (AudioDevProps2) (function-name not available) 0x00007FF9B4D17FE5 (XAudio2_9) XAudio2CreateWithSharedContexts 0x00007FF9B4D13C55 (XAudio2_9) XAudio2CreateWithSharedContexts 0x00007FF9B4D0E984 (XAudio2_9) XAudio2CreateWithSharedContexts 0x00007FF9B4D05FFD (XAudio2_9) XAudio2CreateWithSharedContexts 0x00007FF987609C45 (Mmoron) AK::GetDirectSoundInstance 0x00007FF98760A1DF (Mmoron) AK::GetWwiseXAudio2Interface 0x00007FF987601D11 (Mmoron) AK::AkRuntimeEnvironmentMgr::Instance 0x00007FF9876019F8 (Mmoron) AK::AkRuntimeEnvironmentMgr::Instance 0x00007FF9875BB92C (Mmoron) CAkMixer::MixChannelSIMD 0x00007FF9875BE0D2 (Mmoron) CAkMixer::MixChannelSIMD 0x00007FF9875BC89D (Mmoron) CAkMixer::MixChannelSIMD 0x00007FF98759CBE5 (Mmoron) CAkRTPCMgr::SetRTPCInternal 0x00007FF98759AF82 (Mmoron) CAkRTPCMgr::SetRTPCInternal 0x00007FF9875AC04D (Mmoron) AK::WriteBytesCount::WriteBytes 0x00007FFA04537034 (KERNEL32) BaseThreadInitThunk 0x00007FFA05362651 (ntdll) RtlUserThreadStart ========== END OF STACKTRACE =========== **** Crash! ****
- 以
原神
和AudioDevProps2
为关键词,查询谷歌。发现了一篇名为【問題】PC開啟遊戲後跑到遊戲標題就閃退,其中有人回复到该问题和Realtek驱动相关。 - 同时,单独搜索
AudioDevProps2
在Unity3D社区中能查询到其它开发者提出的游戏闪退问题(有可能是U3D本身的问题?) 做出尝试:
- 我的主板中有Realtek的板载声卡,驱动版本为最新的
6.0.8899.1
- 卸载声卡驱动,重启设备,游戏正常进入
如果你没有其它独立声卡(通过主板或者USB连接的音频设备),此时你电脑应该无法输出音频
- 重新安装最新版驱动
6.0.8899.1
,重启设备,游戏闪退 - 卸载声卡驱动,在ASUS官网上找到旧版的
6.0.8751.1
版本声卡驱动,安装并重启,游戏正常进入
- 重新安装最新版驱动
- 我的主板中有Realtek的板载声卡,驱动版本为最新的
- 结论:Realtek板载声卡驱动
6.0.8899.1
版本会造成原神游戏闪退。该版本在一些主板上最近刚刚发布,原神开发组尚未发现该问题。Realtek板载声卡的市场占有率不算低,相信更多的游戏崩溃案例会让开发组注意到该问题,但不知道客服何时才会传达这一消息。当下,使用旧版本驱动是临时解决方案,如果你的主板上的Realtek声卡有更高版本的驱动也可以升级至更高的版本,6.0.9088.1
版本亦没有问题。
转载请标注来源