求科普,同配置下为啥模拟器有些游戏运行效率不高?

四级用户 捡漏哥 2023-9-17 1311

最典型的就是RPCS3,垃圾配置下,明明大部分3D游戏都已经60帧完美了,但一遇到战神3还是会拉跨,模拟器的原理是模拟原机运行环境,只要成功模拟主机BIOS启动,理论上来说运行每个游戏的运行效率不是应该跟主机一样吗?为啥还会存在明显个体游戏差异,难道说主机上每个游戏都是对应类似一个独立操作系统的?然后模拟器要逐个模拟完善每个游戏的独立系统?而主机BIOS只是起到引导作用?

文科生不懂编程不懂技术,但有一颗探究科学的心


上一篇:地狱笑话:壮壮第一天上班就被人打了一顿
下一篇:老男人们,帮我推荐一款200左右的蓝牙耳机
热门回复
  • 五级用户 ma_er233 2023-9-17
    7

    模拟器那些重编译器啥的我是根本不懂,不过PS3模拟相关的难处我听人讲过


    PS3的CPU,Cell,里面除了主要的PowerPC核心之外,还有几个协处理器,SPU,用来协助一些数学计算,比如物理效果之类。但是不像现在全自动分配核心的英特尔大小核,PS3上编写游戏的时候利用这些SPU核心的代码很难写,导致早期PS3游戏有不少根本不用这些核心,等到后期开发人员对硬件熟悉了利用的才多。
    这种内置的协处理器比较少见,由于这个架构的特殊性,SPU的模拟一直是很大的一个瓶颈,结合上面说的每个游戏对SPU的利用程度不一样,游戏跑的速度自然就不一样。

    ECC6F160-D3A7-47F2-AE91-51540B56E1F8.jpeg

    7EB85E28-BB95-4725-A538-027ED65A9D91.jpeg

    (https://youtu.be/lLebZyha74o)


    再举个例子,如果我没记错的话,N64的内存是一整块,内存、显存、帧缓冲(frame buffer)都在这块内存里,CPU、GPU能访问整块内存。这样就能做出一些很有意思的效果,比如N64马车的这个赛道:

    27DCA844-DA07-4B08-9A7D-21EB1A1E1D66.png

    可以看到,游戏里的这个“屏幕”显示的就是玩家的屏幕内容

    但是在模拟器里,经常是这样:

    2BA557A5-484F-47E6-A994-51D395D519F2.jpeg

    这不是bug,这是因为N64的GPU可以直接从帧缓冲(就是放渲染出来即将要显示的帧的地方)里读数据,把这些之前渲染出的帧当作贴图重新用到游戏里。而现在电脑内存、显存之类的都是分开的,没有很好的方法能在不损失速度的情况下实现这个效果,模拟器开发者就直接禁用了这个功能。所以架构对模拟的影响是非常之大的,不光是老爱说的英语讲数学的程度


    模拟器也不是简单的模拟出整个机器,以前HLE出现前可能是这么干的,但这样效率太低了,要模拟出主板上每一个芯片、电路,消耗太大,所以后来就有了HLE。对于HLE,比如你想模拟PS4,PS4有一套自己的图形api,电脑也有自己的一套图形api,这样写模拟器的时候只要把PS4的图形api想办法翻译成电脑的OpenGL、DX12、Vulkan之类的就行。但是这层“翻译”是需要模拟器作者实现、打磨,优化的,每个“翻译”可能实现的复杂程度不一样,每个游戏既然对原api的利用频率不一样,那模拟器模拟的时候速度也不一样。


    不大懂,都是道听途说的,哈哈

    • 老男人游戏网配套论坛
      11
        立即登录 立即注册
最新回复 (9)
  • 五级用户 zphiroude 2023-9-17
    0 2
    因为光影特效这些是最难模拟的,别说ps3的战神ps2上的战神也没模拟好。
  • 四级用户 蓝殇催 2023-9-17
    0 3

    第一句就错了。。即使是在实机上,,每一个游戏也都是不一样的。。

    我折腾RPCS3两年多了,每一个特殊的游戏都有一套独立的配置,玩模拟器就是这样的。。

  • 管理员 Oldman 2023-9-17
    0 4
    架构不同,数学老师用英语给你讲课你说效率能高吗
  • 五级用户 ma_er233 2023-9-17
    7 5

    模拟器那些重编译器啥的我是根本不懂,不过PS3模拟相关的难处我听人讲过


    PS3的CPU,Cell,里面除了主要的PowerPC核心之外,还有几个协处理器,SPU,用来协助一些数学计算,比如物理效果之类。但是不像现在全自动分配核心的英特尔大小核,PS3上编写游戏的时候利用这些SPU核心的代码很难写,导致早期PS3游戏有不少根本不用这些核心,等到后期开发人员对硬件熟悉了利用的才多。
    这种内置的协处理器比较少见,由于这个架构的特殊性,SPU的模拟一直是很大的一个瓶颈,结合上面说的每个游戏对SPU的利用程度不一样,游戏跑的速度自然就不一样。

    ECC6F160-D3A7-47F2-AE91-51540B56E1F8.jpeg

    7EB85E28-BB95-4725-A538-027ED65A9D91.jpeg

    (https://youtu.be/lLebZyha74o)


    再举个例子,如果我没记错的话,N64的内存是一整块,内存、显存、帧缓冲(frame buffer)都在这块内存里,CPU、GPU能访问整块内存。这样就能做出一些很有意思的效果,比如N64马车的这个赛道:

    27DCA844-DA07-4B08-9A7D-21EB1A1E1D66.png

    可以看到,游戏里的这个“屏幕”显示的就是玩家的屏幕内容

    但是在模拟器里,经常是这样:

    2BA557A5-484F-47E6-A994-51D395D519F2.jpeg

    这不是bug,这是因为N64的GPU可以直接从帧缓冲(就是放渲染出来即将要显示的帧的地方)里读数据,把这些之前渲染出的帧当作贴图重新用到游戏里。而现在电脑内存、显存之类的都是分开的,没有很好的方法能在不损失速度的情况下实现这个效果,模拟器开发者就直接禁用了这个功能。所以架构对模拟的影响是非常之大的,不光是老爱说的英语讲数学的程度


    模拟器也不是简单的模拟出整个机器,以前HLE出现前可能是这么干的,但这样效率太低了,要模拟出主板上每一个芯片、电路,消耗太大,所以后来就有了HLE。对于HLE,比如你想模拟PS4,PS4有一套自己的图形api,电脑也有自己的一套图形api,这样写模拟器的时候只要把PS4的图形api想办法翻译成电脑的OpenGL、DX12、Vulkan之类的就行。但是这层“翻译”是需要模拟器作者实现、打磨,优化的,每个“翻译”可能实现的复杂程度不一样,每个游戏既然对原api的利用频率不一样,那模拟器模拟的时候速度也不一样。


    不大懂,都是道听途说的,哈哈

  • 七级用户 RPCS3 2023-9-17
    0 6
    模拟器代码只是模拟硬件运行机制,没办法真正达到硬件的真实运算效果,如果要达到真实效果,电脑性能至少要主机100倍以上
  • 六级用户 进站劣人 2023-9-17
    0 7
    那不是啊,游戏对主机性能的发掘是不一样的,有的游戏调用了主机的全部性能。。。比如NDS的DQ9跟一般的NDS游戏肯定不一样。
  • 五级用户 夏风 2023-9-17
    0 8
    战神3对于原机来说是压力最大的那一批,有的游戏在PS3上能跑1080P60帧,有的只能跑720P30帧,对于模拟器来说压力也完全不一样啊
  • 六级用户 qqllo 2023-9-17
    0 9
    许多游戏没有充分利用ps3机能,比如一些jrpg,这样模拟器也没有压力。
  • 四级用户 捡漏哥 2023-9-17
    0 10
    ma_er233 模拟器那些重编译器啥的我是根本不懂,不过PS3模拟相关的难处我听人讲过PS3的CPU,Cell,里面除了主要的PowerPC核心之外,还有几个协处理器,SPU,用来协助一些数学计算,比如物理效果之类。 ...
    大佬厉害,你的回复让我这个文科生都看懂个大概了!
    • 老男人游戏网配套论坛
      11
        立即登录 立即注册
发新帖
本论坛禁止发布SWITCH和PS4相关资源,若有其他侵权内容,请致邮3360342659#qq.com(#替换成@)删除。