2013-11-16 15:22| 发布者: 丸子头| 查看: 623| 评论: 0
作为应用开发者,当你在执行应用时,请密切关注文件的大小。 目前不管应用还是游戏都存在这样的问题: 1、当你将代码,图像,声音,视频和其它资产编辑在一起的时候,你的应用有可能会变得非常大。我便看过从250MB到2GB范围内的许多游戏,有些游戏可能需要更大的规模。 2、有时候游戏在发行时的规格并不大,但是基于“应用是一种服务”的业务模式使得内容会随着时间而不断变大,文件大小亦是如此。 那为什么说文件大小这点这么重要?文件大小之所以制约着应用的成功主要有几大原因。 1、下载 不管怎样,如果你的文件偏大,你便等于强加给用户他们可能不愿意或不能够克服的需求。 用户将判断你的应用的价值,并只会在它比额外的“准入代价”需求还出色的时候下载游戏。首先他们必须使用WiFi。其次,他们的设备必须具有足够的空间。做到第二点比第一点困难,而这完全是基于你的应用的大小。 不管出于什么原因,让我们假设他们此刻不能下载你的应用。你总是希望用户一开始便非常喜欢应用并想要拥有它,那么额外的“代价”便会导致他们放弃购买念头。即使他们决定“之后再购买”,但是依照人类的本质,他们最终只会忘了它。不要让用户有之后再回来下载的想法。 再一次假设你创造了一个摩擦点并失去了潜在用户。或者更糟糕的,他们在购买应用前不会注意文件规模要求。而当他们在下载了应用后意识到自己不能使用该应用时,他们便会因为郁闷而在应用商店里给你的应用差评。即使他们并未真正使用过这一应用。 2、卸载应用 文件大小将影响着用户是否愿意下载你的应用,但阻止用户在之后卸载应用也同样重要。 当我耗尽手机容量时,我会做的第一件事便是检查基于大小排列的应用。如果你的应用是在这一列表上的最上方,它便最有可能被卸载掉。即使用户非常喜欢你的应用,如果他们需要足够的空间去存放更多mp3文件或新应用,他们便会选择放弃你的应用。如果你的应用属于小规模应用,基于3d下载标准,那么用户便很少会沿着应用列表往下拉去找到你的应用。 如果你的应用小于其它应用,那么即使其它应用的使用频率高于你的应用,它们被删掉的几率也会大于你的应用。如果你的应用是25MB而其它的是100MB,我会更愿意留下我有点喜欢的小应用而不是半常使用的100兆应用。 3、留下玩家的价值 如果你们拥有的是一款没有应用内部购买或广告收益的付费应用,那么积极安装才更重要。如果用户不将你的应用留在自己的手机上便会破坏你的业务发展。每一次的卸载都会让你失去更多潜能:
文件大小应该是怎样的? 对于手机平台,我会建议你尽最大努力基于手机下载限制去调整应用。 基于用户的设备,计划以及他们下载应用的商店等等,这一范围可以在20兆到50兆之间。这听起来可能不多,但我想提醒你的是,也有许多带有持续内容的复杂应用的规模低于50兆。除非你的应用拥有较多资产和较长的游戏时间,否则用户便不可能忍受较大的文件规模。 的确有一些游戏类型避免呈现较大的文件。如果你拥有的是一款付费游戏(特别是当它的定价高于3美元)或是带有现实3d图像而瞄准硬核玩家的游戏,那么用户通常都会愿意原谅你的大规模文件。 我该如何缩小文件? 48兆与75兆间的差别在于几千的下载量(或卸载比例)。在发行前你应该再次着眼于自己的应用。你是否能够缩小文件规模?你需要在发行前投入额外的时间和努力去缩小文件规模。以下是帮助你做到这点的一些方法。 牢记文件大小去设计资产 当你在设计应用的元素时,你必须清楚什么需要一个独特的资产,什么能够在运行过程中创造出来,什么没有必要存在。 当然,想象中的菜单界限在理念的绘制过程中可能会看起来很酷,但实际上可能只是一个简单的斜边,并占据着较少的纹理文件? 可重复的小型纹理可以取代更大的背景图像文件。当你拥有一个大型资产时,你可以问自己是否可以将其分解成一些较小的元素?如果可以的话,也许你应该使用重复的纹理。 如果你的游戏拥有一个关于草原,山以及其中一座山上的小房子的巨大图像,你可以尝试着为每个元素创造一个可重复的纹理。草,山以及关于房子的一个小图像。如果你能够将图像分解成一些较小的组件,然后基于代码去组建它们,你便可以无需使用任何大型资产文件而让它们看起来像是带有更多细节的背景。 你甚至可以在创造新领域时循环元素。举个例子来说吧,沙漠可以使用与草原一样的山纹理。如此你不仅可以使用较少的文件空间,同时你也可以更快且更便宜地创造新内容! 动态地生成资产 突出或区分一个重要的按键很重要。但是否表示每种按键都需要独有的图像? 你是否能够设置一个灰色的“模版”按键并在代码中为其改色以区分开来? 游戏的背景音乐需要占据巨大的磁盘空间。然而你并不希望同样30秒的循环不断重复着,这会让玩家疯掉的。尝试着为你的音乐分层。设置30秒到60秒的“基本”循环(如鼓),然后再随机基于15至90秒的分层(如吉他/萨克斯或其它旋律)。 基于这种方法,玩家每次游戏时都将听到随机生成的“歌曲”。这也许拥有重复元素,但是其独特方法却足以提升玩家的兴趣并让他们认为音乐歌曲比实际上还长。 在适当的地方使用精灵列表 精灵列表是关于将精灵几何(也就是图像资产)集中在一个更大的图像上。 为什么这一方法有效?这里存在几个原因,但是从我们的讨论目的来看的话主要是因为二的次方。 计算机是二进制的,文件储存是完全基于二的次方。如16, 32, 64, 128, 256, 512, 1024等等。如果一张图像大于二的次方,它便算用尽了下一个二次方在内存中的同样空间数。 尝试着着眼于一个图像属性,你将看到两个值。“大小”和“磁盘大小”。130×300的图像用掉了与256×512图像一样大的内存。如果你将图像资产与大型精灵列表结合在一起,你便有可能节省下所有磁盘空间。单独看一个512×512或1024×1024的精灵列表很大,但从潜在上看却比其每部分的组合小很多。 基于该方法你需要投入更多经历。你必须编写一些额外的代码去渲染精灵列表,面向每个资产/纹理只使用适当的图像区域。奖励并不会只是以文件大小而结束。如果你做得合理的话,这将能够节省下不少空间去渲染场景,从而让你的游戏拥有更好的表现。 压缩资产 使用压缩格式最有意义。 JPG非常适合大规模压缩,尽管它们落得了人造物的坏名声。PNG非常适合精灵,它们允许呈现出透明效果,但你必须注释是使用PNG-8还是PNG-24。PNG-8允许最多256种不同的颜色,而PNG-24则支持最多1600万种颜色。 问题在于,你是否需要全部1600万种颜色,或者你能否只使用256种颜色而创造出好看的资产?使用PNG-24并没有错(或者PNG-32),只是你必须确保在压缩版本有效的时候不会去使用它们。 同时还记得要粉碎它们。 删除垃圾代码 似乎每个广告商都希望你能够整合他们的SDK。 他们会宣称“在五分钟内完成设置!”这并没错,但通常情况下你不会在他们的平台上使用他们提供的全部功能。根据我的经验,你最终只会使用他们框架的一个元素。 考虑使用广告调节去减少你需要输入的SDK数量。 花时间去浏览他们的SDK并观察自己真正需要的内容。是否能够简化某些内容?如果你不使用它们的话是否能够删除整体的文件和资产?有时候,一些框架所包含的全部SDK都是你不会用到的,那么你能否完全删除他们并继续有效运行你的应用? 从网页上下载新资产 我喜欢将这称为“作弊”! 有时候我已经下载了一款25兆以下的游戏,而当我在每个新领域打开它时,它总是会想下载“额外内容”。突然之间我的设备上便会多出一款100多兆的游戏! 不过不要误会,我所说的作弊并不是坏事。至少这并不是一个糟糕的理念。它允许玩家进行下载并基于较小的下载内容做某事,之后如果你不能忍受缺少额外资产的话,便可以让玩家在千万新领域前下载这些额外内容。 如果玩家并未打开或不想访问丛林世界,那就不要下载这些资产便可以。这让玩家能够更快速地前进,而应用规模是基于他们真正使用的内容而不是他们可以到达的每个潜在区域。 然而这里还存在一个主要问题。它要求一个内部链接去打开新内容。如果玩家并不想用掉自己的3g宽带流量,或者不能访问WiFi的话,这便会招致可怕的玩家体验。当玩家被迫下载一些自己不想要的内容时,他们便会以“缺少内容”给予游戏差评。 我只会在这是作为可选择游戏内容,或者你的游戏要求内部连接(就像多人游戏,或只在应用内部购买时下载)时建议这种方法。 删除临时文件 如果你的应用曾经生成或下载过文件(游戏邦注:储存游戏,内部图像/截图,额外的数据等等),那就继续追踪它们。可能你的用户将永远都不会注意或在意这些内容,直到有一天你的应用激增到一个巨大的规模,并被列入了卸载的行列中。 留心哪些文件是必要的,而哪些即使删掉也没关系。设置代码去清除临时文件,即使应用在玩家上一次使用时突然崩溃或终止。 在测试期间你可能会反复安装,卸载再安装应用,但是用户将在每部设备上只安装一次你的应用。你肯定不希望自己的应用会随着时间的发展而膨胀。 |