我也知道游戏机需要CPU不高,所以我才想问电脑为什么有些游戏要求CPU很高。
...
一般来说, 因为写得烂? 所谓的显卡决定最高帧,cpu决定最低帧?以及主机的弱爆cpu是主机游戏30帧遍地的主因啊 本帖最后由 Lunamos 于 2017-11-8 20:32 编辑
CPU负担所有图形以外的计算。主要是两部分。
一部分是计算GPU所需的帧数据进行渲染,包括模型动画纹理的loading和parsing(以及解压缩),宏观物理(仿真物理还是GPU做),场景空间数据结构的生成和遍历,简单说就是做GPU的“喂食者”,把所有该帧要使用的矩阵、顶点和纹理准备好,为GPU的计算扫清障碍。绝地求生里所有其他玩家的位置、模型和动作帧的计算以及网络通信,其他玩家发射的每颗子弹在场景里计算求交,判断击中何人的什么位置,游戏逻辑做何应对。
另一部分是游戏本身的数值逻辑,以P社游戏和文明为代表的大量策略、仿真、模拟经营等等逻辑至上的游戏,需要计算大量单位互相之间的实时数值模型。比如星际争霸里计算400条狗对100只毒爆虫,每只毒爆虫爆炸以后的最近邻搜索判断,每条狗在地图的NavMesh上的A*寻路路径,友军阵型保持的检测友方碰撞以后如何更新位置等等,游戏中的敌人AI脚本的运行等也属于此。
P社游戏,CPU忙到自爆 万千百十 发表于 2017-11-8 20:35
P社游戏,CPU忙到自爆
cpu0和1忙到自爆,别的闲到自爆吗 万千百十 发表于 2017-11-8 20:35
P社游戏,CPU忙到自爆
说真的, 那种规模的数值计算, 对现代CPU根本屁都不算, 如果因此造成CPU需求高的话, 可能这部分逻辑是用Lua之类流行的游戏内嵌脚本语言处理的导致效率低下.
仅为猜测. JimmyZ 发表于 2017-11-8 20:39
说真的, 那种规模的数值计算, 对现代CPU根本屁都不算, 如果因此造成CPU需求高的话, 可能这部分逻辑是用Lu ...
lua已经算比较快的了,python才是一个天坑 本帖最后由 endrollex 于 2017-11-8 20:52 编辑
数值计算啊,比如网游,人多就吃CPU
3D里有部分也是要CPU的,DirectXMath
怎么说呢,拿光荣的无双举例
全特效同屏人数开少,电脑不卡,改成同屏人数多,电脑卡,说明要升级cpu
低特效同屏人数开多,电脑不卡,改成高特效,电脑卡,说明要升级gpu
楼上的两个例子都不太好, 如果同屏的人数多了, GPU的需求也会跟着提升. 那么玩模拟器游戏时为什么特别吃cpu? narizen 发表于 2017-11-8 21:20
那么玩模拟器游戏时为什么特别吃cpu?
这是完全不相关的问题, 因为架构不同, 不可能用300MHz的x86去模拟300MHz的MIPS, 一般认为得十倍起. CPU还有一个功能就是从硬盘解码读取贴图数据然后载入到显存里面让显卡运算。所以场景里面模型多贴图多的时候就需要CPU读取速度快一点,不然在很多即时渲染的游戏里面会因为cpu来不及读取贴图而出现显示bug,具体表现为场景建模全部是粗模多面体。 narizen 发表于 2017-11-8 21:20
那么玩模拟器游戏时为什么特别吃cpu?
模拟器游戏吃cpu主要是在不停地转换游戏的代码,也就是在游戏内容解码的环节要消耗大量资源。有的开发不完全的模拟器甚至让cpu承担部分显卡的绘图工作,比如早期的3ds模拟器。 杂兵OL我记得当年刚出来时候被人发现是个能充分调动CPU,让显卡得以“休养生息”的人性化游戏。。? sjbssd 发表于 2017-11-8 22:05
模拟器游戏吃cpu主要是在不停地转换游戏的代码,也就是在游戏内容解码的环节要消耗大量资源。有的开发不 ...
软GPU模拟可不是"开发不完全", 而且很多时候是为了精确, 硬GPU模拟不见得一定比软GPU模拟难. lostyzd 发表于 2017-11-8 20:40
lua已经算比较快的了,python才是一个天坑
你说python,我大EVE不服啊 narizen 发表于 2017-11-8 21:20
那么玩模拟器游戏时为什么特别吃cpu?
因为模拟器实质上是在用CPU的串行执行系统在模拟一个并行的系统。
比如说,FC的6502CPU的一条指令,从指令缓存读取以后只需要一个(或数个)时钟(总线)周期就可以完成(6502没有流水线)。而如果用CPU模拟这条指令,需要在内存中设置这条指令的数据通路上的寄存器作为变量,每个变量根据相应门电路电平设置位判断进行多路选择。其一条指令很可能需要多次内存存取,数十个CPU计算指令才能完成。而人家的数据早就传到PPU进行处理了,PPU也是几个时钟周期就把Sprite的状态计算出来了,这边还得加载PPU的类对象,在里面执行PPU里的逻辑,设置的sprite还是内存里的一个array,还得用循环一个一个改。
当然具体模拟器实现也会有很多优化,不过用通用CPU/RAM系统模拟一个专用高耦合系统总是会有性能问题。 Lunamos 发表于 2017-11-8 22:21
因为模拟器实质上是在用CPU的串行执行系统在模拟一个并行的系统。
比如说,FC的6502CPU的一条指令,从指 ...
以前的机种是那样, 比较现代的比如RPCS3那种HLE就好很多, 没看代码, 不过听说PS3上的线程会用真线程模拟. JimmyZ 发表于 2017-11-08 22:10:42
软GPU模拟可不是"开发不完全", 而且很多时候是为了精确, 硬GPU模拟不见得一定比软GPU模拟难. ...这个还是开发不足吧?不然怎么解释很多模拟器后期都添加的gpu加速功能?
-- 来自 有消息提醒的 Stage1官方 Android客户端 sjbssd 发表于 2017-11-8 22:51
这个还是开发不足吧?不然怎么解释很多模拟器后期都添加的gpu加速功能?
-- 来自 有消息提醒的 Stage1官 ...
ePSXe 2.0加了个新的重写的软GPU, Mednafen也是只有软GPU模拟, 别以偏概全.
2D时代更是基本只能用CPU模拟,IIRC没谁写过Tile模式的硬GPU模拟. 这可不是"开发不完全". JimmyZ 发表于 2017-11-8 22:49
以前的机种是那样, 比较现代的比如RPCS3那种HLE就好很多, 没看代码, 不过听说PS3上的线程会用真线程模拟. ...
HLE就是黑盒,效率高一些但游戏很难完美。 本帖最后由 JimmyZ 于 2017-11-9 00:33 编辑
Lunamos 发表于 2017-11-8 22:57
HLE就是黑盒,效率高一些但游戏很难完美。
不HLE的话PS2以后就不可能了.
另一方面, 我猜比较现代的游戏机上游戏是在OS上跑而不是在裸硬件上跑的所以HLE引发的问题不会像以前那么多吧, Citra/CEMU/RPCS3都在这么短时间就取得这样的兼容性, 我觉得能说明一些问题. JimmyZ 发表于 2017-11-8 22:57
ePSXe 2.0加了个新的重写的软GPU, Mednafen也是只有软GPU模拟, 别以偏概全.
2D时代更是基本只能用CPU模拟 ...
就是在说3d游戏嘛,2d游戏基本上都用不上显卡出手的。 sjbssd 发表于 2017-11-8 23:02
就是在说3d游戏嘛,2d游戏基本上都用不上显卡出手的。
你前面可没说3D, 也别忽略我举的两个例子. ChirstDR 发表于 2017-11-8 22:16
你说python,我大EVE不服啊
eve我记得应该是用了python的一个变种,stackless python,不过能用python写这么大工程还是很值得佩服的。 现在还有个需要CPU大量计算资源的功能是运行加密系统
代表就是刚发售的起源 额外的占用可能达到30%以上
— from OnePlus ONEPLUS A3010, Android 8.0.0 of S1 Next Goose v1.3.2.1-play 健步如飞麦克雷 发表于 2017-11-8 23:52
好像是p社四萌的祖传引擎不支持多核运算
那点规模单核也不算屁, 我还是猜用的内嵌脚本引擎. 本帖最后由 すぴぱら 于 2017-11-9 01:20 编辑
前一阵做了个日厂avg外包。
大部分cpu时间都浪费在了资源解压读取,go频繁销毁,超大贴图显示,傻屌gc。
嗯,这还是个文字游戏,优化几个月都满不了全程60帧。
你们感受一下大型游戏资源和逻辑更复杂的时候是个什么屌样子。
我们这还纯c#实现呢,要是走自定义脚本引擎,解析效率直接爆炸没商量。
—— 来自 Xiaomi MI 5, Android 7.0上的 S1Next-鹅版 v1.3.2.1 CPU负责对显卡喊666
-- 来自 能搜索的 Stage1官方 Android客户端 ChirstDR 发表于 2017-11-08 22:16:54
你说python,我大EVE不服啊eve的Python魔改过的。。。
-- 来自 有消息提醒的 Stage1官方 Android客户端
页:
[1]
2