震惊! 有人在用Cocos Creator3.x做吃鸡游戏

前沿

大家好我是菜鸟,点进来的小伙伴相信都是对Cocos Creator3.x做吃鸡游戏有着期待。菜鸟也是怀着这个想法出发,一步步的去学习,才做到了现在的程度。废话不多说,先给大家上效果。

效果


视频链接:[Cocos Creator3.x 独立游戏开发]

游戏目前处于开发阶段,离吃鸡还有那么点距离(哈哈)。虽然整体上完成度还非常的低,但是菜鸟一定会坚持到最后的。大家如果想了解游戏的最新进度可以关注菜鸟的抖音号,里边有菜鸟开发的所有的进度视频,从第1节到目前的第73节。抖音名称大家搜“搬砖小菜鸟”就行。



放出几张图片给给大家看看,

同时B站也是有的,同名“搬砖小菜鸟”B站链接点击跳转

正文

之前菜鸟发过一篇文章一篇文章,当时只是大概的聊了一下使用Cocos Creator3.x的感受,以及放了几张游戏内部的图片,时隔比较长了,游戏中的功能一直在完善,场景也发生了很大的变化。今天菜鸟就详细给大家聊聊游戏中的目前用到的技术,希望对大家有所帮助。

  • 先来给大家列一下之前介绍过的

    • Cube实现天空场景
    • 水面效果实现
    • 迷雾效果的实现
  • 接下来就开始今天的技术点

1.大型的游戏地面贴图

在游戏开发过程中,当遇到一些比较大的地图时,地形都是怎么处理的呢

常见的有:

  • 使用Terrain地形系统,添加贴图,用笔刷去刷就行,比较方便,但是有个问题是美术去刷还是程序去刷,美术不怎么会,程序刷不出美术心中的感觉。
  • 由美术做好模型,画好贴图,程序拿来直接用,但是这个也有个问题,当你的地图非常大,但是贴图的大小只有1024* 1024,再大也就2048 * 2048,这个时候当设置好材质后就会发现由于地图太大,贴图压根无法满足,贴图变模糊是最明显的。
  • 第三种方法也就是菜鸟游戏中用到的,由于将所有的元素细节都展示在贴图上是有限制的,那么有没有一种方法可以将每种元素单独提出来,然后在使用一张采样图,采样图中最简单的是使用r,b,g三种不同的通道去区分区域,确定每个区域显示的元素,游戏中在片元着色器中去对采样图采样,根据三个通道的值去确定显示那种元素的。但是如果单个元素数量超过了3个,怎么整,菜鸟现在想到的是再用一张采样图,不知道有没有大佬有没有更好的方案

2.雨天的地面雨滴涟漪

之前菜鸟一直想做这个效果,但是奈何能力有限,没有思路,但是正好有大佬发了一片文章creator shader:从零开始 第二篇,做个动态的光影
,菜鸟真的觉得,这些大佬们实在是太强了,啥都能搞出来。

有了大佬的思路,菜鸟稍加完善,加入了之前水面涟漪的效果,就有了上边视频中的效果,代码就不往出搁了,有兴趣的小伙伴可以私聊菜鸟奥。

3.骨骼动画挂点系统

先上官方链接SkinnedMeshRenderer
。菜鸟复制一下官方的文档,因为他已经写的很详细了

如果需要将某些外部节点挂到指定的骨骼关节上,需要使用骨骼动画组件的 挂点(Socket)系统:

  • 在要对接的骨骼动画组件下新建一个子节点(直属父节点应为动画组件所在节点);
  • 在骨骼动画组件的 sockets 属性中添加一个数组元素,path 从下拉列表中选择要挂载的那根骨骼的路径(注意骨骼动画组件的 defaultClip 一定要有值,下拉列表的选项依赖这个属性),target 指定为刚刚创建的子节点;
  • 这个子节点就成为目标挂点了,可以把任何外部节点放到这个子节点下,都会跟随指定骨骼的变换而变换。

4.代码动态控制骨骼节点

在3d游戏开发过程中,骨骼动画是最常用的,但是动画是使用三方软件maya,3dmax这些3d建模软件做好导出的,那么游戏中在动画播放的过程时怎样去控制某个关节节点来实现预期的效果呢

文档里边明确说了:骨骼动画有两套方案预烘焙骨骼动画 和 实时计算骨骼动画。

  • 预烘焙骨骼动画系统:
    • 所有动画数据都会按照指定帧率提前预采样、烘焙到全局复用的骨骼动画贴图合集上;
  • 实时计算骨骼动画系统
    • 所有动画数据根据当前全局时间动态插值计算;动画数据会输出到场景的骨骼节点树中;用户和其他任何系统都可以通过操纵这个骨骼节点树对蒙皮效果产生影响;

上边的的介绍已经很明确了,要想使用代码控制骨骼动画,那么就要使用实时计算骨骼动画系统

菜鸟在游戏的使用过程中,前期一直实现不了效果,经过查询,菜鸟之前的骨骼刷新的逻辑是写在update中的,网上说要放在updatelate中,菜鸟试了一下,果然有用,菜鸟想了一下应该是:骨骼动画每帧都会提取骨骼节点树信息进行计算与提交,如果将刷新逻辑写到update中就会出现系统的计算会将我们的逻辑覆盖掉,使用默认的数据进行展示,我们要的是使用我们的逻辑去覆盖默认的数据,那么就要保证我们的逻辑要在当前帧骨骼动画计算完成后,那么只需要放到updatelate中就行,不知道我理解的有没有毛病。

结语

  • 上边菜鸟列举了四个菜鸟游戏中的小总结,菜鸟是没有参加过完整3d项目的开发的,所有的都是菜鸟自学研究的,有的地方说的不对希望大家能指出来,菜鸟及时改正。
  • 前边效果中显示的游戏是菜鸟独立在搞,有兴趣的小伙伴可以去点个关注奥。之前因为要上班,进度比较慢,现在不一样了,菜鸟和大多数入坑教育行业的小伙伴一样,由于整个业务线取消,菜鸟失业了,休息一段时间,有机会好好搞搞了。
6赞

震惊!某论坛惊现在UC震惊部

2赞

大佬 3d音效有解决方案吗

大,大,大,老佬:ox::beer:

打捞mark !

坐等大佬分享项目

大佬!带带弟弟!

直接引入openal开源库就行了

后边会把代码提供出来的

哈哈,我也挺菜的

感谢大佬无私奉献。嘤嘤嘤,么么哒。

既然是吃鸡,得多人联机吧,同步、插值、追帧、断线重连/恢复现场,在向你招手。

单机的又怎么称之为吃鸡?你和谁吃?整个烧烤架?
吃鸡这个词,已经演变成游戏类型了。

嗯嗯,有考虑联机,但是第一版还是以单机为主,先把功能实现的差不多

ccc首个大型3d游戏,再整理完善下,写写可以出书了

开个github一起玩啊

大佬,666

震惊!这个热情和耐心令我等汗颜。话说游戏中的草没用billboard shader,穿帮了

太强了吧,mark

mark 大佬 请收下我的膝盖

1赞