0

我有一个用 cocos2d-iphone 构建的通用iOS 游戏,其中包含大量图像(以及其他图像)。对于这些小图像,游戏在 iphone:ipad/iphone-retina:ipad-retina 的 1:2:4 比例下运行良好。我有两种方法可以在游戏中启用此功能:

A) 拥有三组 sprites/spritesheets - 对于所需的三种形式因素,并适当地命名它们并拾取图像

B)拥有一组最高分辨率的图像,然后根据设备及其分辨率进行缩放aSprite.scale=[self getScaleAccordingToDevice];

选项 A 的优点是运行时开销较小,但会占用大量磁盘空间(这是一个重要的考虑因素,因为应用程序目前约为 94 MB)。选项 B 的优点是磁盘占用空间更小,但代价是即使对于 iphone 3gs(支持的最低设备),ipad 视网膜图像也会加载到内存中。

有人可以提供有助于我决定一种或另一种方式的论据吗?

谢谢

4

2 回答 2

3

没有论据:使用选项 A。

选项 B 绝对不可能,因为您将在具有 iPad 3 或 4 (256 MB 与 1 GB)。更不用说渲染如此大图像的缩小版本所需的额外处理能力了。由于内存不足和运行速度太慢,它很有可能根本不起作用(你试过吗?)。

接下来,按理说,在 95 MB 时,如果使用选项 B,您的应用程序可能仍然不会低于 50 MB。大的 Retina 纹理占包大小的三分之二或四分之三,SD 纹理的重量并不大。这是您应该考虑的唯一应用程序包大小目标,因为低于 50 MB 的用户可以通过无线方式下载您的应用程序,超过 50 MB 的用户必须通过 Wifi 同步或连接到计算机。如果您不能低于 50 MB,那么您的捆绑包大小是 55 MB 还是 155 MB 并不重要。

最后,还有更好的选择来减小捆绑包的大小。阅读我的文章,尤其是第二部分。

如果您的图像是 PNG,您应该尝试的第一件事是将它们全部转换为 .pvr.ccz 和 NPOT 纹理图集(最简单的方法:TexturePacker)。您可以在不损失图像质量的情况下将捆绑包大小减少多达 30-50%。如果您可以承受损失一些图像质量,则可以节省更多(加上额外的加载和性能改进)。

于 2013-02-20T16:25:33.710 回答
1

好吧,在 94Mb 上,您的应用程序已经超出了电话网络的下载限制,即只有在某些互联网连接可用时才会下载它。所以……这真的是个问题吗?您需要考虑的另一个重要因素是运行时的内存占用。如果您在 3G 上运行 4 倍并按比例缩小,内存需求仍将是完整大小的精灵(即 16 倍内存量:)。因此,您必须问自己的另一个问题是,该游戏是否可能在旧设备上以高内存占用“运行”。此外,纹理的加载时间可能足以影响您的应用在旧设备上的可用性。您需要衡量这些事情并根据一些硬数据做出决定(不幸的是)。

您需要做的第一个测试是查看您的“缩小”精灵在标准分辨率的 iphone 上是否正常。缩小有时在渲染时达不到预期。如果你的平面设计师拒绝选项 B,你就没有决定权。他/她有责任提供所有 3 种格式。之后,如果选项 B 仍然是一个选项,我将从选项 B 开始,并在 3GS 上进行测量(小型项目,而不是完整的实施)。如果一切顺利,你就完成了。

ps:对于应用程序大小,请考虑使用 .pvr.ccz 格式(我使用纹理打包器)。更小的纹理和更快的加载时间(因为 pvr 格式)。由于通常较慢的处理器 - 需要解压缩,3GS 上的加载时间改进可能较小。

于 2013-02-20T13:41:51.153 回答