引言:

「博毅创为」明星讲师 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

往期精彩

视频教程|手把手教你做一款 3D 冒险闯关游戏相关推荐

  1. 安卓3d游戏引擎_3D球闯关游戏-3D球闯关游戏安卓官方版预约 v1.2.5

    3D球闯关游戏是一款让人上瘾的球球跳跃闯关游戏,在音轨上不断跳跃,控制球球顺利到达终点,玩家需要在曼妙的背景音乐下找到自己的闯关节奏,大家只有找到了节奏才能更轻松的完成挑战,轻松点击球球就可以让它不断 ...

  2. 手把手教你做一个CSS 3D云

    为什么80%的码农都做不了架构师?>>>    介绍:之前在runjs分享了个3d云,今天在这分享个制作过程.这是个简化版,为了减轻浏览器打开时的压力去掉了云流动效果和鼠标滚轴效果. ...

  3. 手把手教你做一款支付宝收款音箱

    前言 Python 语言的是一款非常容易使用的解释性语言,它的主要特点如下:易学易用;可扩展可移植;丰富的三方库.正是由于以上这些特点,使得Python在一些逻辑简单,功能复杂的场景应用非常广泛.近几 ...

  4. 手把手教你做一款音乐播放器(csharp的winform)

    前言:项目是c#的winform 写的,使用的播放器是基于AxWindowsMediaPlayer. AxWindowsMediaPlayer的方法 1.1 首先新建一个页面 如图所示: 图片左侧是列 ...

  5. linux编写弹球游戏,手把手教你开发一款基于Box2D的弹球游戏(一)

    今天我们来介绍一款物理引擎,并基于它完成一个弹球游戏. 提到物理引擎,就是在游戏中模拟真实世界的运动,碰撞,摩擦等等.Cocos2d集成了两款常用的物理引擎:Box2D和Chipmunk,两款引擎都是 ...

  6. ❤️❤️❤️Unity废柴看过来,手把手教你做植物大战僵尸(十四)—— 游戏胜利和失败界面

    1.游戏胜利界面 条件:所有僵尸都被打死了 2.游戏失败界面 条件:如果有僵尸走到了房子前

  7. 【手把手教你做智能车】第三节-Jlink驱动安装_下载第一个例程到系统板

    飞思卡尔智能车系列教学视频教程 手把手教你做智能车:第三节-Jlink驱动安装_下载第一个例程到系统板 视频教程观看地址:http://v.youku.com/v_show/id_XNzkwNTYyO ...

  8. 我的世界服务器显示器,我的世界红石显示器制作教程 手把手教你做显示器

    我的世界红石显示器制作教程 手把手教你做显示器.那下面给大家分享的是我的世界里面的一个红石显示器的制作教程,那对下面的这个显示器感兴趣的玩家不妨进来卡看哦!希望大家喜欢. 游戏园我的世界官方群:325 ...

  9. jsp mysql视频_手把手教你做jsp servlet mysql实现的图书管理系统附带视频开发教程和完整源码...

    上一个教程我们做的是对数据库框架底层原理的讲解,然后教大家做了一个自己的数据库框架,这次我们做的这个图书管理系统就是用我们上个教程自己写的数据库框架,整个项目做完框架运行的很稳定,没有出现任何问题.如 ...

最新文章

  1. canvas学习笔记(下篇) -- canvas入门教程--保存状态/变形/旋转/缩放/矩阵变换/综合案例(星空/时钟/小球)...
  2. 使用Google App Engine、Google Closure Library与Clojure编写HTML5应用
  3. boost::fusion::replace用法的测试程序
  4. 你必须承认电子计算机是天之骄子,天之骄子造句
  5. PHOTOSHOP常用快捷键了
  6. 修改oracle数据库用户名和密码
  7. JavaSpring菜鸟教程,附Java面经
  8. vue 防止多次点击重复提交v-preventReClick
  9. 抬杠计算机,全 自 动 抬 杠 机
  10. 看雪CTF2020 KCTF 秋季赛 签到题
  11. mysql两个时间比较,Java架构师成长路线
  12. QQ邮箱如何获得邮我代码
  13. 微信小程序页面间通信实现pub-sub
  14. 学理财应该从哪些学起_学理财入门知识理财的知识有哪些
  15. 网易易盾滑块逆向分析 js 滑动轨迹生成_1
  16. java调用windowsAPI初识-简单的文件删除功能
  17. 当今世界智商最高十大天才
  18. kali更新源安装中文输入法
  19. cloud-init镜像.qcow2镜像导入并启动Proxmox VE虚拟机
  20. 悄悄的进村,打枪的不要

热门文章

  1. slf4j 日志打印
  2. 【分析】Ceph and RBD Mirroring:Luminous
  3. mmap实现共享内存
  4. Android编程小鸟游戏,6.【小萌伴Android】原生小游戏及其实现(二)小鸟
  5. 狂神说SpringMVC笔记(全网最全)
  6. 获取mmc 的ext_CSD寄存器值
  7. 什么是Transformer?| 小白深度学习入门
  8. ubuntu下软件安装卸载与查看
  9. PAT甲级真题-1007 Maximum Subsequence Sum详解优化
  10. django+whoosh