虽然但是还是先科普一下,什么是Headless吧。如果你已经了解了,请往下跳过到下一个加粗放大的标题章节。
先叠个甲,以下内容中有些涉及我并非完全理解的原理内容,如果有误,欢迎指出,毕竟我也是半瓶子水晃荡。
众所周知,塔科夫是个经典的Unity单核瓶颈的游戏,离线版中AI的运算会消耗掉大量的主线程资源,导致显卡渲染的资源被抢占,于是你就得到了一个CPU占用30%显卡占用30%的30帧塔科夫。
而塔科夫的AI运算是只需要主机来进行的,也就是谁开房谁来算AI,通过FIKA加入的客机是不需要运算AI的,那么结论很显然了,谁当主机谁是怨种,除了主机卡其他人都不卡。
于是最合适的怨种出现了,那就是Headless。首先是Headless的定义,它其实是一个独立的游戏客户端,只不过图形界面被砍掉了以节省性能,本质上它和你平时玩的塔科夫客户端是没有区别的。
那么它是如何工作的,比如你现在想下一把工厂,平时就是你来开战局,也就是你是主机,那么很显然,AI运算会吃爆你的主线程。而Headless的作用就是它来代替你开启战局,它会先行启动一个工厂的战局,然后自己以观战模式进入战局,此时它就是主机,当它准备就绪后,你再以客机的身份加入它的战局(实际上这部分FIKA会自动帮你完成),于是所有的AI运算都丢给了Headless,你作为客机就可以专心渲染画面了,帧数当然是猛猛提升,再也不用打AI限制补丁了,拉满,全拉满!
简单总结就是,谁主机,谁来计算AI;所以让Headless当主机,你当客机。
效果预览
未使用Headless(左)VS 使用Headless(右)
上图是在工厂里简单测试得出的,mod方面打开了SAIN+QuestingBots+LootingBots,并且未做任何限制,AI数量在15~20的样子。未使用Headless时会频繁掉帧,使用Headless后全程显卡占用99%。
配置方面不用太在意,只要你在玩塔科夫的时候显卡占用不是全程90%以上,那么使用Headless就一定能大幅提升你的帧数,上限不一定能提升很多,但是下限会提升很多,也就是帧数更稳定。
未使用Headless(左)VS 使用Headless(右)
接下来是第二次测试,这次选择在灯塔,Moar预设选择Insanity,基本上全图bot在20~30的样子,并且伴随着大量的交火,挂机了五分钟左右得出的结果。
不确定上传的图清晰度如何,这里说一下测试结果吧:
不使用Headless的情况下,平均帧率在53~89,1%Low帧最高只有41,显卡占用率最高只有92%,且几乎维持在70%左右;
使用Headless的情况下,平均帧率在87~123,1%Low帧最高有99,显卡占用率最高能达到100%,且几乎维持在80%以上。
最重要的参数就是1%Low帧,基本决定了你整体游戏的流畅度,从这里可以看出来Headless的加成效果非常强大。
科普完毕。如果你有第二台设备可以架设Headless,那么可以移步站内的教程贴,按部就班地部署即可。
随便列举两个教程,没列的只是我没搜到,不代表教程品质。
3.11 fika headless 联机教程,mod兼容调试心得。地图bot的ai独立主机,提升客户端帧数
逃离塔科夫3.11.1系列 Fika 服务器 headless 1.3.1 设置教程 25.3.27
下面是本贴的重点,如何在单设备的情况下使用Headless
Headless最适合的场景当然是你有第二台设备,将AI运算全丢过去,它算它的AI,你跑你的渲染,但是并非每个人都有闲置的设备,那么直接使用单设备运行Headless的效果如何呢?答案是约等于没有。因为游戏进程和Headless的游戏进程大概率会抢占到同一个核心,但是内存占用和游戏的基础开销却翻倍了,可能反而变得更卡。那么如何解决呢?
方案一:
首先感谢@萌王喵酱提供的思路。
答案是使用虚拟机来进行分隔。将Headless部署在虚拟机中,这样可以方便地分配游戏进程和Headless进程(也就是虚拟机进程)的CPU亲和性(也就是优先使用哪些核心)了。
上面的效果预览图就是使用的虚拟机进行的测试,效果和我使用第二台设备架设Headless几乎没有差异。虚拟机分配了8个线程和16GB的内存,即使是疯狂敌人预设的灯塔,也没有出现爆内存的问题,对虚拟机的要求还是比较低的。不过稳定起见还是建议内存多开一些虚拟内存。
架设虚拟机的教程放在最后吧,其实网上也能随便搜到,架设好虚拟机后再把Headless架设在虚拟机内,然后在主系统中启动服务端和游戏客户端即可。
需要注意的是这种方案比较吃硬盘空间和内存,毕竟需要双份的游戏和额外的一个系统。
方案二:
存在于理论上。使用进程调控软件,将游戏进程和Headless进程分配于不同的线程。例如你的CPU是8核16线程,那么就可以将前8个线程分配给游戏进程,后8个分配给Headless进程。
为什么说存在于理论上呢,因为我懒……
我用的调控软件是Lasso,它没法分开设置游戏进程和Headless进程,因为这两个都是EscapeFromTarkov.exe,所以改其中一个另一个也会跟着被改。理论上应该有能区分开的调控软件,但是我懒得找了,有大佬实验一下的话欢迎把结果发在评论里。
更新:
哈!打赢复活赛了!
终于还是找到办法进行了一下测试,方法还不完善,但是测试结果似乎还蛮不错的,容我再研究研究。
两次测试都是在本地开了Headless,未使用虚拟机,通过PowerShell的方式强行错开了游戏端和Headless端的CPU亲和性。测试环境依旧是灯塔+Insanity,AI数量在20~30之间。不过目前只能算是临时的测试方案,等我研究出来正式的方案会再更新。
下面是方案一虚拟机的详细教程和相关的工具
隐藏内容需要付费才可以看见