简短问题:Apple是否皱眉,或完全禁止应用程序专门为设备编码(不是像Retina或Compass那样的功能,而是实际的设备)。这是上下文:
我正在为计划成为通用应用的iPhone / iPad推出3D游戏。我已经对其UI进行了编码,使得一组屏幕坐标在屏幕上完美地定位2D精灵,保持宽高比差异。
我现在遇到第一代iPad的TREMENDOUS性能问题。 iPad 2,iPhone 3GS,iPhone 4(以及iPod双胞胎)工作得很好(我也不支持视网膜,但启用后性能太低)。
我正处于分支“如果iPad 1”进行此类型编码的边缘。我知道这是一个糟糕的做法,但我构建的游戏太过推动了旧硬件。我正在研究更多的优化技术以帮助改进,但我需要额外获得20 FPS,这是不用说的,很多。
我担心的是:如果我不能提高整体性能,游戏在iPad 1和iPad 2上的播放方式相同,我强烈考虑减少iPad 1的纹理尺寸,甚至可能用更多的聚合物去除或修剪某些物体。我不希望这是以iPad 2用户为代价的,他们拥有一台能够跟上GPU的设备。我的情况有多糟糕?
答案 0 :(得分:3)
简短回答:Apple不会对这种编码感到沮丧。
我有点担心你在原版iPad和3GS上没有看到相同的性能,因为它们的硬件非常相似 - 而且iPad在纸面上实际上更强大。
你所描述的为iPad使用不同纹理集的练习并不罕见 - 我知道有很多iOS和Android程序员,他们也是这样做的,以便在他们的应用程序中实现最佳性能,所以我说得去吧!
希望这有一些帮助! :)
答案 1 :(得分:3)
我玩了许多在应用程序中提供选项的游戏,它提供了使用“高分辨率”图形/纹理(特别是iPad 2)的选项。我想说苹果不仅不会对这种方法感到沮丧,而且可能会赞成它 - 因为它让你有机会炫耀他们最好的设备。
我建议你想要支持每种类型的两种最新设备(iPhone 4,iPhone 3GS,iPad 2,iPad 1,适当的iPod Touch型号)。如果你只支持每个设备的最新版本,我个人认为你认为你正在削减太多的市场。
与视网膜显示器使用高分辨率图形的方式大致相同,我建议瞄准最简单的方法来提供更轻的游戏版本和更高级的版本。正如您所说,提供较低分辨率的纹理和较低的多边形模型将是这样做的一种方式。既然iPhone使用统一的内存系统来处理GPU纹理,你可以根据设备提供的总内存来选择纹理大小。如果你还没有这样做,你也可以考虑将PVRTC纹理格式用于不太普遍的纹理。
虽然我反对'预优化',但如果您遇到速度问题,您可能希望通过分析器运行您的应用。您可能会发现代码中存在单个瓶颈,导致您最初想到的问题更多。但是,如果你使用大纹理 - 我怀疑你会注意到旧设备的速度显着提高,只是使用较小的纹理和较低的顶点数。
答案 2 :(得分:2)
当您将游戏上传到Apple Store时,您可以指定游戏将使用的设备,Apple并不特别关心它是否仅适用于iPad 2,尽管建议它应该适用于尽可能多的设备。
我会尽量不使用if方法,因为这会让它成为一个噩梦般的维护,我会上传它,并指定它只能在iPad 2上运行,当然这需要一个价格,因为你显着减少你的市场。