用 WASM+WebGL 实现 Switch、PS3 模拟器难点在哪里?桌面版模拟器已经很成熟了,看油管博主评测最新款 Switch 的 GPU 性能都比不过连三年前的低端手机,算上耗损也够在 M2 iPad Pro 上运行吧?

311 天前
 drymonfidelia
跑在 Safari on iPad 里的 Switch 一定很酷
3132 次点击
所在节点    程序员
16 条回复
Kumo31
311 天前
当初本科毕设开题时也想过类似的点子,但据我所知... 模拟器要达到可用级别的性能,纯软件模拟基本上是完全行不通的(除非是 Gameboy 级别的老古董),要在本地直接执行目标指令才能基本无损耗,跨架构就要 JIT 做这个操作,这意味着你需要将动态地将指令的内存区域设置为可执行的,然后让 CPU 去直接执行它,GPU 的实现就更复杂了。而浏览器提供的接口是无法支持这样的底层操作的,就算是 native 的实现,iOS/iPadOS 对内存权限管理也很严格,难以实现 JIT
0o0O0o0O0o
311 天前
misdake
311 天前
cpu 代码动态编译成 wasm 也许可以搞,gpu 不太好模拟,webgpu 好好用起来带上 workaround 也许勉强够
ShadowPower
311 天前
除了#1 提到的那些以外,其实 WASM 有内存大小限制。过去只有 2GB ,现在也只有 4GB 。对于 Switch 模拟器来说,不够用。
drymonfidelia
311 天前
@ShadowPower 最新款 Switch 也只有 4GB 内存
jhdxr
311 天前
@drymonfidelia 你不太可能只用 4G 内存去模拟 4G 内存
ShadowPower
311 天前
@drymonfidelia 无 Swap 无 ZRAM 的设备,跑安卓版 Yuzu ,开 NCE 模式(不用翻译指令集,不过着色器还是需要编译+缓存),玩一些主流 Switch 游戏,一段时间之后 Yuzu 本体的内存占用可以达到 7GB 。
现在需要这玩意在整个 Wasm Runtime 里跑,而且只给 4GB 内存,跑的还不是原生代码,而是 WASM 的 IL……
levelworm
311 天前
@Kumo31 请教一下,fgpa 是不是一个思路?虽然目前比较火的 mister 其实就是软模拟的硬件复现。
murmur
311 天前
@levelworm fpga 不用于这个场景,行业领域用的比较多,首先专有电路逆向可比软件逆向难多了,定制起来性能是超过同级别通用 cpu 的,但是得定制好

然后 fpga 的成本肯定比不上大规模生产的芯片
JeffreyZhuang
311 天前
别太看得起 wasm 和 webgl 的性能,跟原生应用有数量级上的差距。
模拟本身也有很大的损耗。
组合拳下来,switch 上的 3D 游戏带不动了。
lonewolfakela
311 天前
switch 还有点希望,PS3 那个奇葩架构的模拟性能损耗能上天,还是别指望用网页端的技术实现了。
beginor
311 天前
这是打算在浏览器加载 10 多 G 的游戏文件么?
icyalala
311 天前
WASM 性能只有 Native 的 1/2 到 1/3 ,再加上指令集不同,CPU 执行性能会非常差。GPU 指令差的就更多了。
drymonfidelia
310 天前
@beginor 浏览器加载 10 多 G 的游戏文件应该是最简单的,YouTube 会员的离线缓存功能就把视频加密下载在浏览器 IndexedDB ,存 200GB 都可以,没有上限
qq316107934
310 天前
@drymonfidelia #14 储存在硬盘内顺序读取,和内存内随机按址读取, 速度不是一个概念。顺便一提受 V8 引擎限制 WASM 内存上限 2GB ,有些浏览器最多 4GB 。
cubecube
310 天前
web 的 GPU 性能太差呀,图片多的网站拉动都卡,更别说要 60hz 跑 3D 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1016675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX