本文发表于很久前,请注意时效性
KSP 1.8 版本起默认使用 DX11
前言
《坎巴拉太空计划》自从诞生之初,玩家们就一直在与高内存占用造成的游戏崩溃不断斗争。游戏崩溃可能发生在任何时候,它毫不留情,简单利落,只留下冰冷的崩溃对话框与屏幕前沮丧的玩家。
游戏制作组和玩家并没有被击倒,他们以各自的努力改善游戏体验:
- KSP 1.1 版,游戏引擎升级到 Unity 5,64位客户端终于稳定可用
- Active Texture Management (MOD) 可以主动压缩贴图以节约内存使用
- Texture Replacer (MOD) 可以主动卸载未使用贴图以节约内存使用
- 玩家主动调用 OpenGL 降低内存使用,但游戏性能可能降低
如今在制作组的不断努力下,游戏日趋稳定,玩家可以尽情享受稳定的64位客户端带来的大内存福利。
居安思危,能否在64位客户端无限制内存使用的基础上同时节省内存使用呢?
答案是肯定的,只需调用 DX11。
效果展示
KSP 1.3.1 原版
默认使用 DX9 时,内存占用 2293MB
指定使用 DX11 时,内存占用 1211MB ,降低 47.2%
不够刺激?那我们来点认真的!
KSP 1.3.1 安装大量 MOD
默认使用 DX9 时,内存占用 6887MB
指定使用 DX11 时,内存占用 4161MB ,降低 39.6%
使用前提
- 电脑配备了支持 DX11 的独立显卡,显存建议至少为 1GB
若不清楚是否支持 DX11 ,搜索「显卡型号+DX11」
AMD APU 未测试,不保证效果 - 操作系统为 Windows Vista 或以上,其中 Vista 需要安装 DX11 升级补丁
使用方法
如果使用 Steam 启动
- 在「库」中右键单击游戏,打开「属性」窗口
- 点击「设置启动选项」,在文本框中输入
-force-d3d11
并确定:
注意没有空格
- 使用 Steam 启动时即可调用 DX11,选择 「Launch KSP (64-bit)」 以使用64位客户端
如使用32位操作系统,则保持默认
注意:仅当在游戏页面点击「开始」才会出现此菜单,否则均默认启动32位客户端
如果不使用 Steam 启动
- 游戏安装目录下找到 「KSP_x64.exe」 ,创建一个快捷方式。这里以创建桌面快捷方式为例
如使用32位操作系统,则对应 「KSP.exe」
- 右键单击刚刚创建的快捷方式,打开「属性」窗口
- 找到「目标」文本框,从最后添加
-force-d3d11
并确定:
注意开头的空格
此处的完整内容例子:
"D:\SteamLibrary\steamapps\common\Kerbal Space Program\KSP_x64.exe" -force-d3d11
一些情况下可能没有引号,例如:
D:\KSP\KSP1310\KSP_x64.exe -force-d3d11
- 使用该快捷方式启动即可调用 DX11
进阶操作
确认游戏成功调用 DX11
- 启动游戏后,打开游戏安装目录,找到 KSP.log
如果有 「Direct3D 11.0」 字样,则成功调用 DX11
观察游戏的内存占用变化,明显减少则成功调用 DX11(废话)
1.3.1 及以下版本:强制 Steam 默认启动64位客户端同时调用 DX11
意义何在?
- 懒,不想每次启动都手动选择64位客户端
- 不使用Steam启动就无法积累Steam游戏时长,也不能使用Steam游戏内覆盖功能
- 在游戏属性中,打开「本地文件」选项卡,点击「浏览本地文件」
- 点击箭头所指位置,获得游戏安装路径,全选并复制。例如这里是:
D:\SteamLibrary\steamapps\common\Kerbal Space Program
- 在游戏属性中,打开「常规」选项卡,点击「设置启动选项」,在文本框中输入以下内容并确定:
注意英文引号与空格"刚才复制的地址\KSP_x64.exe" %command% -force-d3d11
此处的例子:
"D:\SteamLibrary\steamapps\common\Kerbal Space Program\KSP_x64.exe" %command% -force-d3d11
- 无论从 Steam 创建的桌面快捷方式、开始菜单快捷方式、Steam 程序内、Steam 图标右键菜单启动 KSP ,都会启动64位客户端同时调用 DX11
兼容性问题/BUG
- 1.3.1 版本:原版游戏目前无任何问题
- 1.4.x 版本:VAB 和 SPH 中左侧部件预览不显示贴图
- 少数美化类 MOD 可能不兼容或存在 BUG
- Kronal Vessel Viewer (MOD) 在 DX11 下无法正常使用
如果你认为确实遇到了兼容性问题/BUG:
取消或删除上文提到的所有修改,使用默认的 DX9 进入游戏,检查兼容性问题/BUG是否继续存在
如果问题/BUG消失,则可以确定是 DX11 带来的问题
欢迎提供相关反馈
FAQ
- Q:为什么调用 DX11 可以降低内存占用?
A:个人猜测在 DX11 下贴图会直接载入独立显存中例子:KSP 1.3.1 安装大量 MOD 最高画质
使用 DX9 时,独立显存占用 0.6GB
使用 DX11 时,独立显存占用 2.7GB
- Q:为什么调用 OpenGL 也可以降低内存使用,但游戏性能可能降低?
A:根据本人曾经于 1.1.3 版本做的测试《DX9、DX11和OpenGL同平台下简单性能对比》
节省内存的原理与 DX11 相同,性能较低可能为驱动优化不足或 OpenGL 自身效率低下。 - Q:为什么以前只听说过调用 OpenGL ?
A:因为在 KSP 1.1 版本前,也就是使用 Unity 5 引擎前,调用 DX11 会造成影响体验的 BUG 以及 MOD 兼容问题,而 OpenGL 并不会。 - Q:为什么 OpenGL 不会遇到问题?
A:个人猜测因为 Mac 版和 Linux 版都只能使用 OpenGL ,故开发游戏时已经解决了问题,且 MOD 开发时一般也考虑了 OpenGL 兼容性。 - Q:如何调用 OpenGL 或 DX12 ?
A:将此文章中的 「d3d11」 替换为 「opengl」 或 「d3d12」 即可。 - Q:能不能调用 DX10/Vulkan ?
A:不能,游戏不支持。