从0到1开发H5游戏
前言
每个游戏犹如一部电影,它能带给我们快乐,让我们在游戏世界中释放最真的自我,玩游戏过程中学习到智慧。游戏也是游戏开发者发现生活中的智慧的展示载体,传播了开发者对生活智慧的乐趣。我们将从0到1,帮助游戏开发者讲述游戏是怎么制作出来的。
什么是H5游戏?
H5游戏具有即开即玩、碎片化、上手简单、易玩等特点,市面上的游戏平台包括了:微信公众号、微信小游戏、QQ玩一玩、Facebook InstantGames、新浪微博小游戏等,主流的游戏开发商包括爱微游、疯狂游乐场等,下面是H5游戏平台和H5游戏的截图:
H5游戏市场崛起
随着更多的游戏平台崛起,包括:微信小游戏、QQ玩一玩、facebook instant games、新浪微博等,给H5游戏市场带来了更多的生机活力,下图是H5游戏的市场趋势图:
游戏类型
- 动作游戏【ACT】、冒险游戏【AVG】、格斗游戏【FTG】、角色扮演游戏【RPG】
- 恋爱游戏【LVG】、音乐游戏【MUG】、即时战略游戏【RTS】、射击游戏【STG】、益智或解谜游戏【PUZ】
- 卡片游戏【CAG】、竞速游戏【RAC】、体育游戏【SPG】、模拟经营游戏【SIM/SLG】、第一人称视点射击游戏【FPS】、桌面游戏【TAB】、...
其中的H5游戏的市场的类型分布占比如下图所示:
精巧团队
基础团队
- 游戏策划一汪:游戏功能需求、数据、关卡等设计
- 视觉设计二狮:界面、动画特效、交互等
- H5游戏二猿&游戏后端一猿:游戏开发、部署、管理等
更有甚小团队
- 视觉兼策划一枚
- H5游戏开发二生
细化岗位
- 游戏主策、数据策划、关卡策划
- 视觉设计、动画设计、特效设计、原画设计、地图设计
- 主程、引擎开发、游戏工具开发、游戏动画开发、游戏后端开发、运维、游戏测试、性能测试、...
游戏三跨步
H5游戏的特点是开发周期短、轻量级、即开即玩,那绕不开下面几个方面:
- 游戏系统
- 游戏引擎
- 开发工具
游戏系统
游戏系统定义了我们要开发的游戏功能,不同游戏针对不同的玩家,会设计不同的系统,丰富游戏的可玩性,提高游戏的乐趣。举例来说,放置类游戏一般的系统设计如下所示:
游戏引擎
什么是游戏引擎?
游戏引擎是一套图形库,封装了一套底层的能力,并且提供了多套游戏动画库,提供了网络特性、物理系统、动画、粒子特效、龙骨动画等功能,市面上比较知名的H5游戏引擎包括了:白鹭引擎、cocos、layabox、threesjs(3D)、phaser、hilo等
为什么用游戏引擎?
游戏引擎能够帮助游戏开发者提高开发效率,缩短开发周期,提升了游戏的性能;运用游戏引擎,开发者能够按照规则开发出相对易于维护的代码,减少了界面开发的复杂性
游戏引擎学习
游戏引擎厂商提供了丰富的文档,我们需要学习游戏的基础库文档,通过例子不断的实践,循序渐进、从浅到深的方式的学习,以白鹭引擎为例:
- 下载开发工具,并且学习Egret Engine2D基础库文档
- 学习上层封装组件EUI库
- 学习动画相关的,包括了缓动、龙骨动画、MovieClip等
- 学习粒子效果库、物理世界库(p2)等
- 学习外部库,包括了音频howlerjs、网络(websocket、http)、项目工程化(redux、react等)
- 遇到问题,反复查询文档回顾学习,论坛查找问题解决方案,微信群提问等方式积累
开发工具
开发工具对于开发者来说,可以进行可视化的编辑页面,与此同时,提供了各种动画和粒子的可视化制作及导出,帮助开发者提高开发效率,其中开发工具还可以进行实时的编辑调试,及时的帮助开发者定位问题,拿白鹭工具举个栗子:
- 编辑器【Egret Wing】:可视化编辑界面,并且实现一些简单的缓动效果可视化
- 雪碧图【Texture Merger】:提供雪碧图合并导出,并且可以将gif,swf等动画转成MovieClip可运行的文件
- 龙骨动画编辑器【DragonBones】:提供了龙骨动画的可视化编辑,支持多种格式文件导出
- 粒子编辑器【Egret Feather】:提供了粒子的可视化制作
- 调试工具【Egret Inspector】:chrome插件,可以及时定位错误
当然,除了上面的工具,还有其他工具,如:地图制作工具、关卡制作工具、性能分析工具...
知识体系
由于H5游戏的特殊性,他对游戏开发者提出了更高的要求,以下是你想入门游戏必须掌握的知识体系:
- 前端知识
- 游戏知识
- 平台知识
前端知识
由于H5游戏属于Web范畴,所以需要具备很多的前端的基础知识,包括了以下几个方面:
- 基础语言:JavaScript、HTML、CSS、TypeScript、PHP等
- 浏览器:浏览器缓存、本地存储、浏览器页面渲染流程、多屏适配、兼容性
- 网络协议:HTTP、HTTPS、WebSocket
- 缓存:redis、memcache
- 音频视频:howlerjs
- 基础技能:PS切图、动画制作、音频剪切压缩
游戏知识
由于H5游戏又有游戏的范畴,也是一个复杂的前端工程化项目,对基础游戏知识和前端工程化知识也有一定的要求:
- 资源管理:按需加载,延迟加载
- 图片压缩:tinypng、雪碧图、减少动画帧
- 数据状态管理:redux、react...
- 实时性管理:socketio
- 解耦业务系统:新手引导、红点系统
平台知识
H5游戏的发布需要平台作为载体,需要掌握相关平台的能力体系,进行适应性开发,充分发挥平台的能力:
- 微信公众号:授权、支付、分享、关注、客服、红包
- 其他平台:账户、支付、数据统计、兑换码、添加图标到桌面、分服
相关规范
H5游戏开发 && 设计师:
- 通用按钮一致性
- 背景图片可复用
- 特效动画尽量精简帧数
- 粒子特效尽量减少资源
- ...
H5游戏开发 && 游戏后端:
- 接口规范:规定单个页面中的查询数据一个接口返回,奖品规范格式返回,错误格式规范
- 前后端通信协议,小团队建议使用HTTP,实时性使用websocket
- 公共组件提取:账户、支付、红包、平台、...
- ...
性能优化
资源
- 小图资源进行雪碧图合并
- 动画进行重复帧数减少跟复用
- 图片进行tinypng压缩
- 资源按需、按页面异步加载
- 图片进行浏览器缓存:cdn、静态资源站点
- 首屏游戏资源大小控制在2M以内,提供加载页优化用户体验
内存
- 使用chrome性能分析,对函数内存优化
- 减少JavaScript大数据或复杂运算
- 对动画、缓动的计算进行优化
- 保证游戏的FPS在30帧以上
网络
- 实时性要求高的使用websocket,减少使用不断轮询方式
- 合并没必要的请求,减少请求数
- 对请求响应时间做数据统计分析,定位接口问题
- 对大流量接口进行数据优化
写在最后
游戏更像一场奇幻的魔术秀,好的游戏能够带给游戏玩家无限的惊喜感和快乐。而游戏开发者正如伟大的魔术师一样,发现生活中的智慧,精心安排游戏中的每一个环节,把最优秀的游戏作品制作出来,奉献给玩家。正因为热爱改变,所以我们才一起聚集在游戏行业中。