iOS模拟器中的游戏运行非常缓慢(低帧率)

30
深入学习Sprite Kit(xcode 5)。 我正在处理两个示例程序,1.创建新项目时包含的默认太空飞船示例和2.下载的Adventure游戏。
在iOS模拟器中运行这些示例(不论哪一个都没有关系)。 每个示例的帧速率都非常糟糕。 如果我只添加30艘旋转的太空飞船到太空飞船/你好世界示例中,则帧速率迅速从60 FPS下降到(12 FPS)。
再次强调,在iOS模拟器中运行Adventure游戏示例,每秒运行10-20帧(取决于发生多少动作)。
苹果公司是认真的吗? Sprite Kit似乎很糟糕 - 我认为问题要么是程序员使用Texture Atlas的方式,要么是Sprite Kit(API)处理它们的方式。
有人帮助我理解或解决它吗?
在Mavericks下运行xcode 5,Mac Mini - 我使用Unity3D进行编程,在那里使用2DToolkit仅使用30个对象时没有FR问题。

1
当您在设备上运行演示代码时,帧率很好。在运行4S并且有40艘旋转的船以60fps的速度运行时。但是在模拟器上 - FPS很低...只有几条船并且降到12左右... - DogCoffee
很好,我很高兴不仅是我一个人。不知道是否有我可以更改的构建设置,一直在尝试,但到目前为止还没有成功。从我所看到的来推断,仿真器似乎没有利用我的系统本地GPU,至少看起来是这样,也可能是其他原因。 - user1068477
看起来这可能与以下相关:http://stackoverflow.com/questions/1461245/gles-2-0-perfomance-on-iphone-simulator-iphone-macbook-pro - user1068477
1
是的,我只关心在设备上运行时的性能。到目前为止,FPS没有出现任何问题。 - DogCoffee
1
@YumeApps 我建议你在 Stack 上提问,如果子弹没有物理体附着的话,我认为应该没问题。但是,只有尝试才能知道。OpenGL 是我从未使用过的东西,试试 Sprite Kit 吧 - 听起来像一个有趣的游戏 :) 祝好运 - DogCoffee
显示剩余2条评论
2个回答

79

模拟器不是一种设备。模拟器使用 Mac 的 CPU(速度更快)和 Mac 的内存(更多)。但是,模拟器还通过软件渲染器来模拟OpenGL ES,即使在最快的CPU上,软件渲染也非常缓慢。

因此,由于没有终端用户会在模拟器上运行应用程序,所以在模拟器上进行任何性能测量都是完全无关紧要的!

很抱歉大声说出来,但我觉得这需要有信心地说出来。 ;)


3
这个问题并不只出现在SpriteKit上。Unity、cocos2D、Sparrow等在iOS模拟器上运行都较慢,甚至非常糟糕。 - prototypical
3
没错。对于任何使用OpenGL ES的操作,iOS模拟器都不是一个准确的性能衡量标准。 - rickster
3
任何事情,就这样。;) - CodeSmile
2
现在已经过去了三年多,显然还没有任何改进。我也发现在模拟器中使用SpriteKit时帧率非常低, 叹气 - James Paul Mason
1
不相关?当然,我们不应该将模拟器中的代码运行时间视为实际设备中的时间。但是我们可以比较模拟器和实际设备之间的时间,以发现模拟器存在严重的性能问题。我已经证明了模拟器比实际设备慢200倍。在那个演示代码中,模拟器根本无法使用。请参见我的答案 https://dev59.com/jVQK5IYBdhLWcg3wHcWi#59625897 顺便说一句@JamesPaulMason正在更新... 现在已经过去6年了,显然还没有改进。 我认为随着每个新版本的Xcode和iOS发布,模拟器变得越来越慢。 - mikep
显示剩余5条评论

3

尽管这篇文章已经发布了近8年,但我在为我的Unity游戏录制App Store预览时遇到了同样的问题。

在您打开模拟器后,您可以更改GPU选择以提高性能。对于我来说,它被设置为自动,将其更改为首选离散GPU可以显著提高帧率。

screenshot

注意事项

  • 测试使用的是Xcode 12.5 - 不确定此功能是何时引入的。
  • 我必须重新启动模拟器才能生效。
  • 您的Mac可能需要先有一个独立的GPU(我的是15“MacBook Pro)。

这对我在一台15英寸的2019 MBP上完美地运行。在启用此功能之前,iOS模拟器运行得非常糟糕,但是将其更改为此后,它变得像黄油一样顺畅。感谢您发布这个! - Aron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接