好久没写游戏开发相关的文章了,这些年积累了一些经验,可以分享给大家。下面是过往经验的总结和对未来的思考,主要有三点:1.基础(标准)、2.管理(制度、管理、理念)、3.产品(1、2、3暂时保密);因为工作比较忙,暂时只完成了基础(标准)部分,其他的以后再补上。
1. 移动游戏标准
以往前端和页游都有硬核的运行标准,会标注运行需要多大的CPU、内存、硬盘容量,但在手游上却看不到这样的标准。手机作为手游的运行媒介,限制比端游和页游要严格得多。对手游标准的忽视,说明人们对手游标准的认识存在一些差距。下图是“腾讯”的五大质量标准,我重点讲一下客户端内存标准,因为很多手游产品的内存标准设计不符合标准,导致产品质量不佳。
(摘自WeTest披露的腾讯手游质量标准:
)
2. 内存标准
手机内存常用的有两种:1.存储内存,2.运行内存;两种内存的作用和限制有所不同。
1.存储内存
类似电脑硬盘,用于存储App数据,市面上3000元左右的中端手机,存储内存有64G~128G,对于一般游戏来说,存储内存限制比较宽松,但需要注意的是,过大的存储内存占用,会增加用户的使用成本和产品推广成本。
2. 运行内存
类似于电脑内存条,连接CPU和硬盘数据,进行数据的存储、交换和输出。市面上3000元左右的中端手机,运行内存一般都在6G到8G左右。按理说,这么大的运行内存,足以支撑如今绝大部分手游产品,但事实并非如此。
1)手机硬件空间有限,如果运行内存过大,手机会发热。(注:手机发热状态下边玩游戏边充电,容易导致电池损坏或者爆炸,网上类似的新闻很多,大家可以自行搜索。)
2)运行内存越大,手机耗电量越大。手机耗电量一般是运行内存的两倍。以苹果手机电池容量为例:iPhone 8容量为1900mAh,iPhone 8 Plus容量为2675mAh。我们设定三个标准进行分析。首先,我们将剩余40%的电量设定为非游戏电量,即手机待机、聊天、音乐、电池老化等。当游戏运行内存为300M、350M、400M时,每小时将分别耗电600、700、800mAh。首先以iPhone 8为例,分析1900x0.6/600≈1.9小时、1900x0.6/700≈1.6小时、1900x0.6/800≈1.4小时这三个标准。 那么用iPhone 8 Plus来分析2675x0.6/600≈2.7小时,2675x0.6/700≈2.3小时,2675x0.6/800≈2小时。iPhone 8 64G目前售价约4800元,iPhone 8 Plus 64G售价约5600元。从以上数据可以分析出,未来1~2年,手游产品的运行内存标准仍将在350M以下。
如何查看运行内存:使用Android手机,打开设置,查看运行内存,如下图所示。
3. 标准制定的好处
1.降低风险
标准是科学技术和实践经验的总结,有了标准,才能制定统一的开发规范,避免开发混乱,保证产品质量,从而降低开发风险。
2.提高效率
标准化开发会统一生产规范和参数,这样会减少开发过程中的争议,避免错误,从而提高开发效率。
3. 提高绩效
标准化的开发可以保证产品质量,通过标准可以提前预测执行结果,进而设计出更好的开发方案,提高产品性能。
4. 常见运行内存问题
1. 规划问题
由于策划人员对设计标准不明确,缺乏统一规范,导致美术资源占用过多的运行内存。例如:地图场景设计过大,地图物体、场景效果过多;UI界面层级过多,导致界面资源、界面效果过多等。
2. 艺术问题
过分追求美术效果导致美术资源过多,例如:英雄(怪物)模型和特效脸太多,UI界面千差万别,界面资源通用性不高。
3. 程序问题
内存泄漏是客户端常见的问题,我也遇到过不少,例如战斗效果、UI界面、场景组件、场景特效等都有内存泄漏。
5. 如何解决内存问题
在电脑模拟器上安装并运行手游,按Ctrl+Ale+Del打开“任务管理器”,查看模拟器的游戏进程。如下图所示,模拟器运行《王者荣耀》的进程为HD-Player.exe。第一张图中“游戏主界面”占用的内存为247.904K≈247M,第二张图中“战斗地图”占用的内存为353.912K≈353M。根据内存的变化手游开发,我们可以推断出《王者荣耀》战斗场景的相关资源约为353-247=106M(实际值大于此值,仅作为参考示例,请勿太当真)。根据“内存变化情况”,快速计算并排查客户端内存问题。
1.战斗特效:在某张地图进行战斗时,如果战斗过程中内存占用持续升高手游开发,则说明战斗特效存在内存泄漏。
2、UI界面:在主界面(非战斗状态)下,不断切换界面,如果内存不断增加,说明UI界面存在内存泄漏。
3、地图场景组件/特效:在某些MMORPG手游中,如果在地图中跑动时内存不断升高,则说明场景组件/特效存在内存泄漏。
4、地图场景切换:在地图A和地图B之间来回切换时,如果内存持续升高,说明地图场景资源没有被清理干净,有内存泄漏。
5、地图场景资源规格:选择三张地图(小、中、大),进入地图,查看三张地图所占用的内存大小,根据内存值来设置地图大小和设计规格。