《巅峰漂移》是由武汉迷萌基于 Cocos Creator 3D 研发的一款 3D 赛车漂移竞速微信小游戏。近日,Cocos 对《巅峰漂移》项目组进行了专访,疫情之下,武汉当地游戏 CP 现状如何?这么优质的 3D 小游戏创作工作流是怎样?又带来了哪些宝贵的技术经验呢?一起来看看吧!

游戏玩法非常直观,通过手指滑动屏幕控制赛车的移动方向,躲避源源不断的敌人的追击,存活时间越长可以获得越高的分数。

玩家可以在游戏中充分展示自己的漂移技术,收集场景中的小星星以及击败其他敌人可以获得额外的金币和经验加成。

随着时间的推移,敌人数量会增多,强度也会加大,玩家需要面临更多的挑战。玩家的等级会随着得分而升高,等级越高,结算时获得的经验也就越丰富,每一次提升等级都可以获得强力的增益效果,此外场景中有许多增益道具,拾取道具可以帮助玩家提升生存能力。

《巅峰漂移》设置了丰富的养成系统,玩家可以消耗金币对道具进行升级,以提升增益效果。还可以对最高速度、加速性能和额外得分进行升级,等级提升之后,你能够获得更快的移动速度、更高的加速效率以及更多的额外得分。

为了满足玩家对于车辆的多样性改装需求,从车辆的喷漆样式、尾气颜色到局内表情,游戏均做了丰富的设计。

此外,游戏还创新加入了段位系统,根据玩家所得最高分数解锁不同的段位,从黑铁、青铜到车神。除了微信好友,玩家还可以与全球玩家比拼,大大提升了竞技乐趣。

武汉当地游戏 CP 现状如何?游戏创作工作流是怎样?有哪些宝贵的技术经验呢?《巅峰漂移》项目组接受了 Cocos 的专访,以下为访谈内容整理:

   请问《巅峰漂移》项目共有多少成员?其中研发人员的占比是?

《巅峰漂移》游戏项目组5人都是研发人员,我们公司成立于2019年8月份,主要专注于小游戏研发,也会接一些轻度、轻中度的定制项目。

除了《巅峰漂移》之外,我们已经上线的游戏项目还包括《披萨小王子2》《刺客别杀我》《巅峰漂移》《天天飚车 3D》,也欢迎各位开发者朋友搜索体验,此外,还有一款 APP 游戏《三国大作战》即将上线。

   《巅峰漂移》微信小游戏项目从立项到上线共计用了多长时间?

从立项到项目上线,只用了半个月时间。针对皮肤功能操作手感和性能优化,我们做了2-3个版本的迭代,后续还会加入新手引导、新的游戏内容以及优化游戏体验。

   《巅峰漂移》中车子相撞会有震动,小游戏为何也需注重震动反馈?

由于《巅峰漂移》是赛车主题的街机休闲游戏,游戏中会有大量激烈追逐的画面。尽管是小游戏,我们仍然希望通过震动反馈的方式为玩家带来一些紧张又刺激的体验。

   除了好友排行榜,游戏还有没有其他挖掘社交链价值的内容呢?

除了排行榜之外,我们还加入了试用功能,只要玩家分享游戏链接给好友,即可获得赛车和皮肤使用,此外还可以获得开局免费道具等。

  从立项到上线只有半个月时间,开发效率真的很高,可否分享一下这款游戏的开发工作流?

我们的工作流:

  • 立项。

  • 策划完成功能文档,界面原型,文档定稿,同时程序开发核心功能。

  • 美术程序同步进行,程序完成剩余功能,对于 UI 相关的功能,会先使用一些常用的组件拼装界面,等美术出完效果图和切图后,统一替换。

  • 最后整理,分包,压缩打包上传。

  • 测试,提交。

   为什么会选择 Cocos Creator 3D 作为开发引擎呢?

3D 表现力强,团队成员也都比较熟悉 Cocos Creator,有些库可以直接从Cocos Creator 2D 中移植过来。

Cocos Creator 3D 毕竟是一条全新重点产品线,Cocos 团队必将会精细打磨。我们是一个敢于尝试的团队,提前踩坑,对后面效率的提升有积极的作用。

   游戏内的无限地图是如何实现的?

实现原理:分成 9 个 3x3 的格子(我们称为 Grid ), 每当玩家控制的赛车快移动到当前 Grid 边缘时,会将另外一边的 Grid 补到另一边。

游戏道具和资源都会刷在每个 Grid 子节点下面, 这样只需要移动 Grid 既可完成下面所有的资源的移动。

这样做的好处是:(1)很难看出地图上的资源有重复;(2)创建在其它 Grid 里的道具/星星可以重复使用,玩家离开后无需要再次创建,直到被玩家吃掉。

   尾气和刹车痕的参数配置是?

   可否分享一些性能优化的经验?

在游戏过程中创建和销毁都是比较耗时的,通常我们可以将创建过程提前,销毁推迟操作, 但在某些情况下(比如无尽关卡)在游戏过程中生成不可避免,就不可能一次性创建所有节点。

1.分帧创建

关卡生成器负责将需要生成的 prefab,位置信息提交到节点管理器的“创建队列 ”。


节点管理器
进入游戏后开启定时器,每过 N 帧,从“创建队列”拿一条创建信息。

(小技巧:nextInterval 可随时控制,这里自行做的定时器是为了可扩展性,比如检测到 fps 不稳时,可以考虑将创建间隔拉长)

从缓存里取节点,当节点不存在时自动实例化 Prefab (可在场景加载时,创建若干,以免在游戏中创建)

当资源被玩家吃到后,会通知节点管理器回收这些资源。

(这里的 poolManager 实际上就是对 cc.NodePool 的封装,每个 prefab 对应一个 NodePool. 方便快速查找)

这套机制在实际使用中复用性好,实用性非常高。

2.碰撞优化

(1)车的碰撞检测使用 ,Cocos 自带的 BoxCollider 实现。

每个车上有一个大的碰撞盒用于检测与敌方车辆的碰撞,且绑定了四个“方向碰撞盒”,用于检测是碰撞方位(因为碰撞无法确定碰撞点,只能用不同的碰撞盒表示不同的碰撞位置)以确定是被撞还是主动撞击(侧面和尾部可以撞毁敌车)。

为了效率,这四个方向的碰撞起初不检测碰撞的。

//设置方向碰撞盒的掩码 , 当masks =0 的时候表示不发生任何碰撞
enableDirCol(maks) {for (var i = 0; i < this.dirColliders.length; i++) {var c = this.dirColliders[i];c.setMask(maks)}
}

当最外面的碰撞盒发生碰撞时(onTriggerEnter),才开启"方向碰撞盒"的检测,并在最外层碰撞盒结束(onTriggerExit)的时候关闭"方向碰撞盒"的检测。

具体设置2个碰撞器的是否检测相互碰撞可以参考:
https://docs.cocos.com/creator3d/manual/zh/physics/physics-group-mask.html

(2)道具的碰撞检测,因为道具资源刷新非常多,峰值在 100 个左右的碰撞体,使用 BoxCollide 性能会严重受损,加上这些物体的碰撞不需要太精确。

还记得前面说的 Grid 吗?我们在 Grid 上又做了子网格:

每个道具都会刷新在网格里,相当于3维数组的一个元素, 通过数组索引即可知这个格子里的内容。

有的小伙伴可能觉得费内存,其实通常情况下只需要 x * z * 1 的空间(在不考虑 y 轴的情况下如:跳跃)

这里每个网格对象里记录着节点的位置信息:

我们通过赛车的本地坐标可以直接转换为其所在的格子坐标。

可直接使用格子坐标索引到附近的节点,时间复杂度 O(1):


(3)其它

● 向量计算:如果当一个向量已经计算过一次长度了,要实现归一化时,没有必要再 Vec3.normalize() 计算一次,可以直接使用使用除法,可以少开一次方。

● 能不必要每帧检测的地方就开定时器,隔帧检测。

● 尽量避免/减少在游戏过程动态加载。

● 所有有距离比较的地方,都使用 Vec3.squaredDistance 进行平方比较。

● 1-360度计算三角函数采用查表法。

   目前团队成员是在家复工状态还是回办公室办公了呢?疫情对贵公司的影响如何?

疫情对所有的企业、公司和个体户都产生了比较大的影响,虽然说游戏公司不局限办公场所,员工可以在家办公,但办公效率真的不如在办公室,一方面,员工的电脑配置跟不上需求,缺乏工作氛围,另一方面还存在员工之间沟通不及时、不通畅等问题。

这两个多月,武汉地区的游戏项目或计划十有八九都被迫延期甚至取消,有的公司可能会转变策略争取达成新的 KPI,为了弥补这2个多月产生的损失而赶工,这就预示着员工要面对长时间的加班,可能导致员工波动。

对于我们这些初创公司或小公司而言,存活下去是唯一念想。


非常感谢《巅峰漂移》项目组接受我们的采访,并分享了如此多宝贵的技术经验。针对武汉地区的 CP 朋友,Cocos 推出了线上技术支持服务,有需要的武汉开发者可以联系我们,希望可以为武汉尽绵薄之力。

最后,祝《巅峰漂移》取得更好的成绩!祝同事们身体健康,祝公司顺利渡过疫情影响,蓬勃发展!

【技术派】专栏往期文章

技术派01 |《野蛮人大作战》H5项目从开发到上线

技术派02 | Cocos Creator 2.0 摄像机的灵活运用

技术派03 |  推荐一款可查看节点树的插件

技术派04 | 3D 人物渲染详细教程

技术派05 | 实时竞技小游戏技术分享

技术派06 | Camera 摄像机详解

技术派07 | 重度小游戏《三国封魔传》技术实现方案

技术派08 | 3D 小游戏《飞跃地平线 Plus》开发分享

技术派09 | 畅销 SLG《乱世王者》深度优化方案

技术派10 | 3D小游戏《快上车》技术分享

技术派11 | 极限开发创作笔记

技术派12 | 竞技对抗小游戏《单挑篮球》开发历程

技术派13 | 3D 小游戏《欢乐贪吃龙》关键技术盘点


技术派
,是 Cocos 公众号专栏,我们将不定期邀请知名的游戏制作者,为广大开发者分享来自真实项目的实用的开发技术和实战经验。欢迎大家推荐想要学习的游戏产品和想要了解的技术知识,也诚邀有技术分享意愿的开发者联系我们噢~


为武汉游戏人点亮“在看”

为武汉游戏人点赞!3D《巅峰漂移》技术分享相关推荐

  1. Cocos Creator 3D 蚂蚁庄园系列技术分享

    编者按 "游戏开发小赤佬,也玩 python 和 shell" 白玉无冰是"Cocos 荣耀讲师"征稿活动第1期的获奖作者之一,除了征稿作品<用摄像机实现 ...

  2. 武汉迷萌!3D《巅峰漂移》技术分享

    <巅峰漂移>是由武汉迷萌基于 Cocos Creator 3D 研发的一款 3D 赛车漂移竞速微信小游戏.近日,Cocos 对<巅峰漂移>项目组进行了专访,疫情之下,武汉当地游 ...

  3. 云从科技3D人体重建技术刷新3项纪录!仅凭照片即可生成精细模型

    3 月 19 日,根据官方消息,云从科技基于单帧图像的 3D 人体重建技术同时在 Human3.6M.Surreal 和 UP-3D 三大数据集上创造了最新的世界纪录,将原有最低误差记录大幅降低 30 ...

  4. 基于结构光测量技术和3D物体识别技术开发的机器人3D视觉引导系统

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 基于结构光测量技术和3D物体识别技术开发的机器 ...

  5. 超干货3D视觉技术分享+人才内推!独角兽奥比中光与你相约VALSE 2021

    10月8日至10日,一年一度的VALSE大会(视觉与学习青年学者研讨会)将在杭州国际博览中心举办.行业领先的3D视觉感知领域整体技术方案提供商奥比中光金牌赞助本届VALSE大会,并以"感知· ...

  6. 存储时间:高清3D化,技术应用化?

    今年4月,在北京举行的华硕光存储媒体交流会上,介绍了应用TrueTheater 3D技术的播放软件,配合ASUS蓝光光驱使用,即可将普通的2D电影(配合立体眼镜)展现出3D的效果. 这让我们想起了10 ...

  7. 《Unity 3D 游戏开发技术详解与典型案例》——1.3节第一个Unity 3D程序

    本节书摘来自异步社区<Unity 3D 游戏开发技术详解与典型案例>一书中的第1章,第1.3节第一个Unity 3D程序,作者 吴亚峰 , 于复兴,更多章节内容可以访问云栖社区" ...

  8. 《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——2.8节本章小结

    本节书摘来自异步社区<Android 3D游戏开发技术宝典--OpenGL ES 2.0>一书中的第2章,第2.8节本章小结,作者 吴亚峰,更多章节内容可以访问云栖社区"异步社区 ...

  9. android o 结构光流程,惊艳亮相!一分钟看懂OPPO Find X 3D结构光技术是什么鬼,太牛了...

    法国时间6月19日,OPPO在巴黎卢浮宫正式举办未来旗舰Find X发布会.此次亮相的Find X新机,既有充满艺术感的3D玻璃机身设计,又有3D结构光.曲面全景屏.双轨潜望结构等多项黑科技.众多黑科 ...

最新文章

  1. 广东海洋大学数学与计算机学院校友会,数学与计算机学院召开2020级研究生入学教育会...
  2. tomcat8 安装部署--一键版本
  3. zabbix 3.2 mysql模板_Zabbix-3.0.3使用自带模板监控MySQL
  4. PTA L2-002 链表去重
  5. 计算机网络-思维导图(1)概述
  6. ios开发 多人语音聊天_手游语音市场的现状、机遇与挑战
  7. 基于事件驱动架构构建微服务第1部分:应用程序特定的业务规则
  8. 将G1内的SIM卡联系人导入到GMAIL的联系人中
  9. SaaS 通识系列 1:云计算是什么
  10. Redis教程:数据持久化
  11. c#基础学习@--1--
  12. 强化学习实战——Q learning 实现倒立摆
  13. Python爬取广州链家二手房数据
  14. matlab程控开关,基于单片机和FPGA设计的程控滤波器(MAX297+LTC1068)
  15. html设置为壁纸win10,Win10让桌面壁纸自动换的设置方法(图文教程)
  16. 跨境电商机遇爆发,时下应该怎么“玩”?
  17. 三坐标测量软件DMIS语句解释
  18. 使用excel、python、tableau对招聘数据进行数据处理及可视化分析
  19. python实现账号密码登录
  20. Android 手机红外遥控器实现(转)

热门文章

  1. 基于Java实现的汽车租赁管理系统、SSM/SpringBoot两个版本都有+mysql汽车出租系统实现
  2. Python:从温度转换到距离转换
  3. 在工作表多行多列的区域中查找目标值的位置
  4. 微信H5页面的建议尺寸
  5. 使用FFmpeg的SDK库实现将H.264流封装进MP4文件时全局SPS、PPS与流中SPS、PPS冲突的问题
  6. 七牛-Android 视频播放端 SDK 引入
  7. html文字两端对齐 w3school,CSS实现两端对齐效果
  8. 安装操作系统前须知的理论知识
  9. 【python】廖雪峰学习笔记
  10. 何时使用section标签