简单百宝箱DNF双开第二个游戏窗口开后一直是黑的。我把第一个游戏从全屏切换成无边框窗口模式,同时把游戏内的图形选项里的阴影和特效调低了一档,再重新登录第二个账号,黑屏竟然消失了。这个看上去微不足道的操作,却直接解决了困扰我一下午的麻烦。
先说清楚现象。用简单百宝箱的双开功能启动两个DNF客户端时,第一个窗口很快进入角色选择界面,一切正常。第二个窗口虽然进程已经拉起来,任务管理器里也能看到两个DNF.exe在运行,但画面始终保持黑色,只有鼠标指针在缓慢转圈。等待几分钟后,有时候会偶然弹出登录界面,更多时候直接无响应,只能用资源管理器强制结束进程。最初我以为是简单百宝箱版本太旧,于是升级到最新版,问题依然存在。又尝试了把两个窗口分别以管理员身份运行,还是不行。甚至把系统主题切换成经典模式,显卡驱动更新到最新,都没有任何改善。
后来在贴吧看到一位玩家分析,指出DNF的渲染模式与显卡驱动之间存在资源竞争。双开意味着两个客户端同时请求GPU的硬件加速,但游戏本身并没有为多开场景专门优化,后启动的窗口往往无法获得足够的GPU资源,于是一直接收不到画面数据,只能停留在黑屏状态。这个解释与我观察到的现象完全吻合——第一个窗口永远正常,因为显卡把绝大部分资源都分配给了它,第二个窗口只能捡剩下的。
为什么把第一个游戏改成窗口模式就能解决?这就涉及到全屏独占和窗口化的渲染差异。全屏模式下,游戏会独占显示输出,显卡为它建立一条单独的扫描线通道,第二个窗口只能从另一条容量较小的通道获取数据,这种通道壁障很容易造成黑屏。而无边框窗口模式走的是桌面合成器的统一渲染路径,两个窗口都能平等地访问显卡资源,黑屏自然就消失了。我的机器是i5-8400处理器,内存16GB,显卡GTX1060,虽然不属于低配,但在双开时依然出现了资源分配不均,可见这个问题与机器性能关系不大,更多是驱动层面的调度逻辑。
另外一个关键改动是关闭垂直同步。在NVIDIA控制面板里找到DNF的单独配置文件,把垂直同步设置为强制关闭,同时将电源管理模式改成最高性能优先。垂直同步的作用是让显卡等待显示器刷新信号再输出帧,双开环境下两个窗口各自等待各自的信号,互相干扰,导致后启动的那个窗口等待时间被无限拉长,黑屏就成了必然结果。关闭之后,两个窗口按照各自的节奏独立渲染,就不再互相拖累。这个改动在AMD显卡上同样有效,只要在驱动面板里找到游戏配置文件进行相应设置即可。

如果做完这两步依然黑屏,那就需要修改游戏配置文件来降低启动负载。具体路径在DNF的安装目录下,一般是ImagePacks2文件夹旁边的config目录,里面有一个名为effect.xml的文件(具体名称可能会因版本不同略有出入),用记事本打开后,把分辨率参数从1920*1080改成1280*720,同时把全屏模式参数从1改为0。这样做的目的,是让第二个窗口在启动时运行在一个非常低的负载状态下,等它顺利进入角色选择界面后,再在游戏设置里改回高分辨率。虽然麻烦,但对那些显卡性能较弱或者内存只有8GB的机器来说,这是最稳妥的办法。
还有一个经常被忽视的因素是输入法状态。双开第二个窗口时,如果系统默认输入法是中文状态,游戏客户端在初始化过程中可能因为无法正常接收键盘消息而卡住,表现为黑屏。一种简单的解决方法是,用鼠标点击一下第一个窗口,再点击第二个窗口,来回切换几次,有时候能强制唤醒画面。我在这台机器上试过,大概有五六成的概率能成功。但这个方法治标不治本,最好的做法是在启动第二个窗口前,把系统输入法切换为英文模式。
回到我自己的操作。把第一个游戏改成无边框模式后,我顺便在简单百宝箱的高级设置里,给第二个窗口的启动命令加了“-window”参数。这个参数会强制客户端以窗口模式启动,而不是全屏。这样一来,第二个窗口从一开始就运行在窗口模式下,彻底绕开了全屏独占的冲突。配合前面的垂直同步关闭和画质调低,双开两个窗口同时运行英雄级副本,稳定了一个下午,没有再出现黑屏。期间我还观察了任务管理器,CPU占用率稳定在70%左右,内存占用大约10GB,显卡利用率在双开时达到90%以上,但画面流畅,没有掉帧。
所以,简单百宝箱只是一个多开启动器,黑屏的根本原因在于游戏的渲染机制