视频教程|手把手教你做一款 3D 冒险闯关游戏
引言:
「博毅创为」明星讲师 Blake 是 Cocos 引擎10年经验者,拥有12年网络游戏和手机游戏开发经验,参与开发了多款爆款端游/手游, 精通客户端与服务器开发。和 Cocos 共同成长的这十年,Blake 见证了 Cocos 生态的一步步完善,也持续为社区输出着高质量学习资源。
最近社区的 Cocos 商店非常火,进去一看非常惊讶,没想到现在社区的学习资源已经这么完善,远远不是2010年可比的。
《奔跑吧巨人》游戏截图
在源码板块,我看到付费榜第一名是由 Cocos 引擎官方出品的 3D 游戏《奔跑吧巨人》。下载后我把整个项目和源码都阅读了一遍,写得非常完整且很有学习价值,所以忍不住写这篇文章给大家推荐一些该源码中值得我们借鉴的技巧和思路。
Voodoo 游戏中的经典实现
海洋的实现
3D 得分路
水体模拟是游戏制作中不可忽视的一部分,但是要做出高质量的水体模拟并不容易。《奔跑吧巨人》中水面的 Shader 的处理方式值得每个程序员学习和吃透;除此之外,游戏最后实现了 3D 得分路的效果,也很值得参考借鉴。
游戏关卡的处理思路
《奔跑吧巨人》共设有30个关卡,每个关卡都基于 Excel 表格数据来驱动,通过地图中的图元拼接来生成每个关卡的地图。
首先把地图分成若干个图元,用一个 Excel 表格来描述每个图元的属性,每个图元对应唯一的 ID。我们来看一下图元描述表:
编号:每个地图图元唯一的编号
类型:描述图元的类型(路、人、钥匙、宝箱等)
资源名称:这个图元对应的资源预制体的名字,方便程序加载后创建节点到场景
说明:资源的功能描述,如:180度狼牙板块
路属性:初始位置、初始缩放、默认长度、描述这个图元的初始的形状,有些形状是通过缩放等变换而来
扣减体积量:碰到这个图元后,是否扣减体积,扣多少
然后再用一个 Excel 表格描述每个关卡的具体内容,如 map001 就是第一关,map002 就是第二关。关卡表格的字段如下:
编号:关卡中的第几个元素
对应资源编号:元素对应的图元的 ID,根据这个 ID,到上面的图元描述表中找资源,生成节点
位置、缩放:在地图中的位置与缩放大小,根据这个数据,摆好节点在关卡中的位置
可复用的有价值的代码
Utils 工具函数性质代码
这些函数可以用到你自己的项目中,编写一次,以后再也不用写了,直接使用就可以了。Utils 代码里面有很多工具函数,如随机数生成系列、加密解密系列、日期时间函数系列、base64/utf8 系列等等。
Excel 表格.csv 文件处理
在这份源码中,内置了 CSV 的文件解析库,实现了 CSV 表格数据的加载管理。加载 CSV 的数据后,将数据存到了对象表里和数组里面。CSVManager 管理所有的 CSV 表格数据,提供查询接口,给游戏的上层逻辑使用,这部分代码也是很有价值的,可以直接在自己的项目中借鉴。
物体节点池
物体节点池的处理方式也是这份源码的特色。游戏关卡中有很多地图图元,整个源码中把这些图元和游戏中的物体分类做好了节点池,每种类型的节点都对应一个节点池,提升了构建节点时的性能。这种节点池的设计,也是很好的一个参考。
游戏的运行帧率与物理引擎的迭代次数
有时候我们的手机发烫,或者物理引擎占用的资源比较多,可以通过降低运行帧率或降低物理引擎迭代的次数来减少 CPU 的占用,让游戏更省电,同时提供一个显示调试信息的接口,能让我们在 Android/iOS 上看到性能的参数。
《奔跑吧巨人》源码还有很多可以借鉴的代码和思路,限于篇幅没有办法全部用文字写出来。我录制了9节课程,详细讲解了如何上手《奔跑吧巨人》源码、抓住这份源码的流程和线索以及游戏项目中具体的技术的处理与实现。课程全免费,欢迎大家一起来学习、交流。
课程目录
课程地址:
https://bycwedu.vipwan.cn/course/55/Creator-ben-pao-ba-ju-ren-3D-yuan-ma-fen-xi-yu-shi-zhan-xiang-jie/play
《奔跑吧巨人》源码地址,点击【阅读原文】即可查看:
https://store.cocos.com/app/detail/3026