没有任何一个游戏厂商会为了做多线程优化,没有任何一个游戏厂商会为了做多线程优化,如果这个游戏要做多线程优化,如果这个游戏要做多线程优化,为什么大多数游戏都不做多线程优化这题真的很大,为什么大多数游戏都不做多线程优化这题真的很大,个人猜测八核心十六线程也可能是未来3a游戏多核心优化的一个趋势,可以说变向提高了单线程游戏的表现。
为什么大多数游戏都不做多线程优化
这题真的很大,我意识流答题,想到什么说什么,抛砖引玉。如果说的不对,请大家指正。最后部分放上一个实用技巧。
单核游戏的问题真的也困扰我很久了,我也长期忍受单核游戏后期糟糕系能带来的负面体验。
其实,厂家自身都是希望让游戏体验更好的,但是迫于下面这么几点,无奈放任一核有难多核围观。
编程难度指数上升
多线程的编程与BUG的troubleshoot难度的增长不是倍数,而是指数。简单说,二线线程的难度是单线程难度的四倍而不是两倍,三线程难度是单线程的八倍而不是三倍。
参照人脑进化结果
人脑是单线程的,我们的大脑同一个时间真真意义上只能想一件事。最简单的例子,很少有人能同一时间左手画圆,右手画方,不信大家试试,反正我不行。人脑都很难做这事了,别说游戏这种强相关,强互交的事情交给不同线程分工并行合作了。-线程优化
因果律
游戏的逻辑是线性的,同时也遵从因果律,所以你做多线程的时候,很难硬生生地把几个原本需要遵从时间规律的逻辑硬拆到两个核心里面去执行。打个比方,两个人要用石头剪刀布决出胜负,然后再确定下一轮行动,而某个游戏比如环世界,他就需要10万个简单石头布的连续叠加才会有结果,你说把这十万个剪刀石头布的步骤分散到8个核心有意义吗?第二个步骤永远要取决与前一次石头剪刀布的结果,说专业点这个词叫做“时序”。-线程优化
以下面环世界后期的游戏状态做个例子,在后期你要考虑几百个动物的独立状态,几十个小人每个小人身上独立几百个参数,这些你都要考虑资源是否接受同步,是否支持异步,是否会锁死,是否有冲突,这时候你的大脑要去搞定这些问题,发烧的不再是CPU,而是大脑了。-线程优化
另外,不同CPU架构的优化方式也是不同的,酷睿啊,AMD,E系列等等,如果这个游戏要做多线程优化,就要同时针对几套CPU做不同的优化。
经济效益
再是一个现实原因,那就是成本效应。其实前面的原因都可以归结成这一点,毕竟经济学可以解释和钱相关的一切。
游戏制作是需要成本的,而且游戏开发成本非常高,Steam平台上70%的游戏制作者只能勉强糊口,游戏市场的利润基本被顶部游戏商占领了。大厂追求效率,小厂追求保本,毕竟爆款每年就这么几个。这样的商业环境决定了,没有任何一个游戏厂商会为了做多线程优化,去投入大量的资金,这只能是一个倒贴的事。-线程优化
制作游戏本身是一种商业行为,成本效应肯定要摆在最前面,经济决定方向。
这里可以插一个很有趣的计算机软件史上的故事。
在以前存储是很贵的,所以极客程序员会以能做出更小体积但保证功能的程序为傲。比如说,他们可以写出一个只有32KB的3D第一人称射击游戏。比如,他们可以为了提升2%的压缩率,然后拼命研发新的算法。
但现在呢,作为甲方,我看到乙方交付一个只有2M的软件时会说一句“辣鸡”,然后强行逼迫乙方把原本可能2M就够的软件,掺杂垃圾数据强行增加到20M,然后说一句舒服。
作为游戏玩家,我看到一个游戏只有200M,我会说“辣鸡”(后来环世界治好了我这个病),看到一个游戏20G,我会说“可以,有内容”。
所以,同样的道理也可以延伸到多线程优化,不是不肯做,而是这么做的意义会被硬件的稳定提升所淹没。玩家玩的卡的时候,心里面大多数还是会认为是自己电脑性能的锅。
一个技巧
最后,给大家一个小技巧。有个软件叫做CPUCores :: Maximize Your FPS。
我在这里要收回以前的偏见,以前我在一个问答里说这个软件的作用,安慰剂效应大于实际效应,那其实是我没用对地方。这个软件对单线程游戏恰恰有奇效。虽然,他不能帮你把任务分配到其他内核,但是这个软件却能保证你用于游戏的内核,不被其他任务打扰,可以说变向提高了单线程游戏的表现。-线程优化
CPU的线程多少对于打游戏影响大吗
有影响,具体还得看游戏。
有些游戏对多核心优化不够,四核或者六核就够了。有些大作会多核优化,比如最近火爆的骑马与砍杀2,前几天更新对多核心优化,个人用微星飞机观察到,我的3700x在千人以上战场中,八核心十六线程全部使用在40%以上。还有很多3a大作会这样,个人猜测八核心十六线程也可能是未来3a游戏多核心优化的一个趋势,从最近半年的游戏测试来看,很多3a大作基本上是八核心时候帧数达到最理想效果,即八核心以上效果提升微乎其微,四核心到六核心再到八核心是一个递进的效果,这类视频在今日头条也能搜索到一些。。-线程优化
为什么大多数游戏都不做多线程优化
这题真的很大,我意识流答题,想到什么说什么,抛砖引玉。如果说的不对,请大家指正。最后部分放上一个实用技巧。
单核游戏的问题真的也困扰我很久了,我也长期忍受单核游戏后期糟糕系能带来的负面体验。
其实,厂家自身都是希望让游戏体验更好的,但是迫于下面这么几点,无奈放任一核有难多核围观。
编程难度指数上升
多线程的编程与BUG的troubleshoot难度的增长不是倍数,而是指数。简单说,二线线程的难度是单线程难度的四倍而不是两倍,三线程难度是单线程的八倍而不是三倍。
参照人脑进化结果
人脑是单线程的,我们的大脑同一个时间真真意义上只能想一件事。最简单的例子,很少有人能同一时间左手画圆,右手画方,不信大家试试,反正我不行。人脑都很难做这事了,别说游戏这种强相关,强互交的事情交给不同线程分工并行合作了。-线程优化
因果律
游戏的逻辑是线性的,同时也遵从因果律,所以你做多线程的时候,很难硬生生地把几个原本需要遵从时间规律的逻辑硬拆到两个核心里面去执行。打个比方,两个人要用石头剪刀布决出胜负,然后再确定下一轮行动,而某个游戏比如环世界,他就需要10万个简单石头布的连续叠加才会有结果,你说把这十万个剪刀石头布的步骤分散到8个核心有意义吗?第二个步骤永远要取决与前一次石头剪刀布的结果,说专业点这个词叫做“时序”。-线程优化
以下面环世界后期的游戏状态做个例子,在后期你要考虑几百个动物的独立状态,几十个小人每个小人身上独立几百个参数,这些你都要考虑资源是否接受同步,是否支持异步,是否会锁死,是否有冲突,这时候你的大脑要去搞定这些问题,发烧的不再是CPU,而是大脑了。-线程优化
另外,不同CPU架构的优化方式也是不同的,酷睿啊,AMD,E系列等等,如果这个游戏要做多线程优化,就要同时针对几套CPU做不同的优化。
经济效益
再是一个现实原因,那就是成本效应。其实前面的原因都可以归结成这一点,毕竟经济学可以解释和钱相关的一切。
游戏制作是需要成本的,而且游戏开发成本非常高,Steam平台上70%的游戏制作者只能勉强糊口,游戏市场的利润基本被顶部游戏商占领了。大厂追求效率,小厂追求保本,毕竟爆款每年就这么几个。这样的商业环境决定了,没有任何一个游戏厂商会为了做多线程优化,去投入大量的资金,这只能是一个倒贴的事。-线程优化
制作游戏本身是一种商业行为,成本效应肯定要摆在最前面,经济决定方向。
这里可以插一个很有趣的计算机软件史上的故事。
在以前存储是很贵的,所以极客程序员会以能做出更小体积但保证功能的程序为傲。比如说,他们可以写出一个只有32KB的3D第一人称射击游戏。比如,他们可以为了提升2%的压缩率,然后拼命研发新的算法。
但现在呢,作为甲方,我看到乙方交付一个只有2M的软件时会说一句“辣鸡”,然后强行逼迫乙方把原本可能2M就够的软件,掺杂垃圾数据强行增加到20M,然后说一句舒服。
作为游戏玩家,我看到一个游戏只有200M,我会说“辣鸡”(后来环世界治好了我这个病),看到一个游戏20G,我会说“可以,有内容”。
所以,同样的道理也可以延伸到多线程优化,不是不肯做,而是这么做的意义会被硬件的稳定提升所淹没。玩家玩的卡的时候,心里面大多数还是会认为是自己电脑性能的锅。
一个技巧
最后,给大家一个小技巧。有个软件叫做CPUCores :: Maximize Your FPS。
我在这里要收回以前的偏见,以前我在一个问答里说这个软件的作用,安慰剂效应大于实际效应,那其实是我没用对地方。这个软件对单线程游戏恰恰有奇效。虽然,他不能帮你把任务分配到其他内核,但是这个软件却能保证你用于游戏的内核,不被其他任务打扰,可以说变向提高了单线程游戏的表现。-线程优化