Iphone 苹果是否反对或不允许特定于设备的编码?

Iphone 苹果是否反对或不允许特定于设备的编码?,iphone,ipad,appstore-approval,Iphone,Ipad,Appstore Approval,简短的问题:苹果是否会皱眉,或者完全不允许应用程序专门为一个设备编码(不是一个功能,比如视网膜或指南针,而是一个实际的设备)。以下是上下文: 我正在为iPhone/iPad推出一款3D游戏,计划成为一款通用应用程序。我对它的UI进行了编码,一组屏幕坐标完美地定位了屏幕上的2D精灵,保持了纵横比的差异 我现在在第一代iPad上遇到了巨大的性能问题。iPad2、iPhone3GS、iPhone4(和iPodTwins)都工作得很好(我也不支持retina,启用它的性能太低) 我正处在“if iPad

简短的问题:苹果是否会皱眉,或者完全不允许应用程序专门为一个设备编码(不是一个功能,比如视网膜或指南针,而是一个实际的设备)。以下是上下文:

我正在为iPhone/iPad推出一款3D游戏,计划成为一款通用应用程序。我对它的UI进行了编码,一组屏幕坐标完美地定位了屏幕上的2D精灵,保持了纵横比的差异

我现在在第一代iPad上遇到了巨大的性能问题。iPad2、iPhone3GS、iPhone4(和iPodTwins)都工作得很好(我也不支持retina,启用它的性能太低)

我正处在“if iPad1”进行这种类型编码的边缘。我知道这是一个糟糕的做法,但我制作的游戏对旧硬件的推动太多了。我正在研究更多的优化技术来帮助改进,但我需要从中获得额外的20 FPS,这是不用说的,很多


我担心的是:如果我不能全面提高游戏的性能,使其在iPad1和iPad2上都能以同样的方式玩,我会强烈考虑只为iPad1减少纹理大小,甚至可能用更多的多边形删除或修剪某些对象。不过,我不想让iPad2用户为此付出代价,他们的设备配备了GPU,能够跟上时代的步伐。我现在的处境有多糟糕?

简单回答:苹果不会对这种编码皱眉的

我有点担心的是,你看不到原版iPad和3GS有相同的性能,因为它们有非常相似的硬件,而且iPad实际上在纸面上更强大

你所描述的那种在iPad上使用不同纹理的做法并不少见——我知道有很多iOS和Android程序员,他们也这样做是为了在他们的应用程序中实现最佳性能,所以我要说,加油


希望这能有所帮助!:)

你可以在上传到苹果商店时指定你的游戏将在哪些设备上运行,苹果并不特别关心它是否只适用于iPad 2,尽管有人建议它应该尽可能多地适用于多个设备


我会尽量不使用if方法,因为这会让它成为一场噩梦,我会上传它,并指定它只在ipad2上运行,当然,这是有代价的,因为你大大减少了你的市场。

我玩过一些游戏,这些游戏在应用程序中提供了一个选项,可以使用“高分辨率”图形/纹理(特别是iPad 2)。我想说的是,苹果不仅不会反对这种做法,而且可能会支持这种做法——因为它让你有机会展示他们最好的设备

我建议您希望支持每种类型的两款最新设备(iPhone4、iPhone3GS、iPad2、iPad1以及相应的iPodtouch型号)。我个人认为,如果你只支持每一款设备的最新版本,你就太少了

与视网膜显示器使用高分辨率图形的方式大致相同,我建议以最简单的方式提供更轻的游戏版本和更高级的版本。如您所述,提供低分辨率纹理和低多边形模型将是一种方法。既然iPhone为GPU纹理使用了统一的内存系统,您可能可以根据设备提供的总内存选择纹理大小。如果您还没有这样做,您也可能想考虑使用PVRTC纹理格式,这样纹理不会太普遍。


虽然我反对“预优化”,但如果您遇到速度问题,您可能希望通过探查器运行您的应用程序。您可能会发现,您的代码中存在一个瓶颈,导致了您最初认为的更多问题。但是,如果您使用的是大纹理,我怀疑您会注意到,仅通过使用较小的纹理和顶点数较低的模型,在较旧的设备上,速度会显著提高

喜欢这三个回答-谢谢大家!我最担心的不是“如果!视网膜,使用低分辨率纹理”,而是“如果设备的型号是iPad1,就不要这样做。”我在某个地方读到他们不喜欢这样做,但这可能是奥斯卡更多的观点,因为这是一种非常糟糕的维护做法(我同意!)。幸运的是,这次我确实找到了一个罪魁祸首,这是主要的瓶颈,到目前为止,我们可以继续了!很高兴知道,以备将来参考。谢谢大家!!