Cocos Creator 是一个由腾讯开发的开源游戏引擎,专为快速制作 2D 网页游戏和手机游戏而设计。它提供了一套完整的工具和资源,包括可视化编辑器、物理引擎、动画系统、脚本语言等,能够帮助开发者轻松创建游戏,无需编程基础也可以进行一定的游戏设计。
使用 Cocos Creator 制作的网页游戏可以直接在网页浏览器上运行,无需下载安装,兼容性好,*便用户分享和体验。它支持多种平台发布,包括PC、移动设备等,极大地降低了游戏开发的门槛。
如果你想要开始制作网页游戏,Cocos Creator 是一个不错的选择。但请注意,虽然它提供了可视化编辑器,但深入理解游戏开发原理(如逻辑设计、用户体验等)还是很有必要的。
依靠上述 3 种**,我大概能把 drawcall 控制在 50 左右,但其实效果还是能优化。 Cocos Creator 就性能优化来说,还提供了“节点池”和"动态合图"的优化**,本游戏目前还没有应用上,未来也许可以试试。
2.“当前移动点跟上一个移动点的移动*向”如果跟“上一个移动点跟上上个移动点的移动*向”一样的话,那么上一个移动点即可销毁不做记录。(相当于把直线部分的移动点压减为两端点) touchmove 回调中相应代码如下:
1.当前移动点与上一个移动点的直线距离少于一个限定值,就认为当前移动点无效。(相当于强制移动点的距离) 相应的判断代码很简单,利用 Cocos Creator 提供的向量求距的*法即可:
监听节点上 touchmove,每次移动的时候对它上面的 cc.Graphics 组件进行 lineTo 的画线处理,同时存储每个移动点
cocos creator网页游戏
3.优化代码逻辑: 除上述常规手段外免费三国群英传1单机游戏,针对自己的代码也需要做一下优化,本游戏的代码逻辑中最有可能优化的地*是“画线”部分:
2.减少节点: 节点如果没来得及释放,那么一定会导致 drawcall 上升,往这个*向想,我就想到 cc.instantiate(),在物理的游戏里只有这个*法会主动去新增节点,那么只要产生的临时节点及时销毁就行,但发现其实在复制完都调用了 removeFromParent() *法,逻辑好像是对的。 但后来查了一下资料,原来 removeFromParent *法执行后,节点并不会自动销毁,真正能让它销毁的是 node 的 destroy *法。囧大了。应该换成 destroy。于是就全局搜索 removeFromParent,逐一替换,drawcall 就顺利降下来了。
不用不知道,一用吓一跳,这功能可以把当前目录以及子目录下所有的图片文件以指定的算法去合并成 sprite 图,并且自动更新原有 spriteFrame 的引用,一下子就把全部碎图合成大图来按需调用了。
1.自动合图: 降低 DrawCall 是提升游戏渲染效率一个非常直接有效的办法,而两个 DrawCall 是否可以合并为一个 DrawCall 的一个非常重要的因素就是这两个 DrawCall 是否使用了同一张贴图,所以官*是建议合图的。 但我项目中用了那么多碎图,这时候让我去合图,岂不搞死我!苦恼之际以外发现 Cocos Creator 提供了一个强大的功能“自动合图(Auto Atlas)”
讲真,毕竟我也不是太深入地去了解过 Cocos Creator 的底层原理,所以性能优化这块就只能从自己这个项目来给点小技巧,以下稍微讲讲:物理的游戏刚有初版的时候,性能特别糟糕,后来做了三项优化工作。
this.node.targetAssist. getComponent(cc.Sprite). spriteFrame = sf
// 新建一个 RenderTexture,并且设置 camera 的 targetTexture 为新建的 RenderTexture,这样 camera 的内容将会渲染到新建的 RenderTexture 中。
听说 2.0 版本的 Cocos Creator 对 camera 的逻辑进行了优化,我试用了一下真好用,目前 camera 是跟 group 绑定的,在游戏中可以定义多个 camera 来处理 node 的Color/Depth/Stencel,物理的游戏中用 camera 实现了各种元素的层级处理(给 camera 定义 Depth,然后指定不同 group 到 cullingMask 中)
不管是"创作模*"还是“闯关模*”里的地图元素的基础数据模型均来自该预制对象,如果需要新增地图元素,只要修改这个预制对象即可全局生效,可以说非常*便了。但大家要注意,预制对象对性能有一定的反向作用,具体可以翻翻 Cocos Creator 的论坛,可以说它是双刃剑。
*法进行预制对象节点的复制,这样可以实现节点逻辑的复用,用来做节点组件最合适不过了。物理的游戏中"创作模*"下的所有地图元素其实就是基于同一个预制对象。
预制对象是 Cocos Creator 中很重要的节点处理机制,它可以把某个节点像场景那样单独存为一个文件,然后在不同场景中引用,并通过:
这个*法的原生实现逻辑相当复杂,各种几何算法什么的,反正几何数学没学好的花叔如果要以原生**实现,也只能勉强实现很挫的效果,但 Cocos Creator 直接就封装好供大家调用了,非常*便。
2.rayCast *法,该*法可以获取指定出发点到终点间射线所经过的刚体集合,物理的游戏中画线遇到刚体后禁止继续的功能就是依靠它来实现的:
1.testPoint *法,该*法可以检测某个坐标点下是否存在物理碰撞体,物理的游戏中在某个刚体上禁止画线的功能就是依靠它来实现的:
其实除了这类型的关节组件外,官*还提供了很多别的关节组件,具体的用法可以参考 Cocos Creator 的[官*开发文档]对了,还要提一下:
此外,物理引擎里还提供了一种比较实用的组件:关节组件。它可以定义一些常用的物理场景,比如本游戏里,汽车轮子上用的就是物理引擎的 WheelJoint 控件:
var selfAABB = this.node.getComponent (cc.PhysicsPolygonCollider).
碰撞体有一个挺有用的*法,getAABB,这是获取碰撞体包围盒的*法,可以用其结合 rect 的 containsRect *法来实现对某个矩形区域里是否包含某碰撞体的功能,在物理的游戏中箱子与目标区域的监听功能就是依靠它来实现的:
cc.director.getPhysicsManager().enabled = true;整个游戏世界就会进入物理监听状态,所有被定义成刚体(追加了 cc.RigidBody 组件)的 Node 将直接具备物理性质,通过追加 PhysicsCollider 控件可让 Node 具备指定热区的物理碰撞特性。
2.Layout,这能让游戏中的 Node 具备如网页 dom 一般的流行布局特性。它提供了常用的三种流体布局**:横向、纵向以及网格。该组件对于本游戏的控件容器特别合适。
1.Widget,这能让某个元素自适应到任意位置。这是相当实用的控件了。使用*法非常简单,各种机型的自适应布局一下子就被兼顾了。
游戏引进了金币的概念,它是整个游戏世界里的通用货币,目前构思中给金币赋予的作用有两个:a. 以 20 比 1 的**兑换提示机会;b. 以 2000 比 1 的****卡车皮肤(暂未实现)
这需要我在游戏开发中应用到原本网页设计的组件化思维,要把游戏里可能会出现的元素抽象为通用组件,然后构建一个编辑模*,让玩家拖动放置,进而设计出不同的关卡。
这样的话,关卡是能动态新增的,任何人都可以随时随地在手机上去为本游戏构建关卡,我也可以脱离电脑很*便地为游戏设计初始关卡。
早前预想的故事场景是开卡车在林中运输木材,核心玩法很简单:把木箱子运到指定的区域。整个游戏基于仿真物理场景,唯一一点超现实的功能是用蓝墨水画的线条会被实体化,会成为物理碰撞体,玩家可借此搭建桥梁、容器、障碍物等**来协助搬运。
从涉及的 IDE 看出来,其实开发一个游戏需要兼顾好多内容,尽管游戏提供的功能并不多,但实际研发时间却不短,花了整个春节假期(WTF,明明就几天)实际上,游戏开发相比页面开发,我认为前者更难,它更像一门综合技术,世界观构建、内容建设、美术构建、音效设计、程序算法等等,很多*面都需要涉猎,这里面的每项内容都够我钻研很长一段时间了。题外话,请善待独立做游戏的人,他们都在以高负荷的工作压力在研发和学习。(文章篇幅略长,想看鸡汤,不想看技术细节,可直接跳到最后)门外汉的游戏策划
前阵子过春节,在家看小孩没法出去玩,于是就码起来了,心血来潮想做个基于物理引擎的小游戏,于是愉快地打开了 Cocos Creator。
Cocos Creator网络游戏开发中的短连接HTTP和长连接Websocket
最后,林顺也表达了对Web端技术在XR场景中落地的期待与展望。他提到,Web端是一个非常开放的平台,Web 3D 和Web XR在娱乐之外还有非常广阔的空间等待挖掘。对Web端的支持一直是 Cocos 发展的重点,今后 Cocos 仍将在Web端保持技术投入,为开发者提供功能丰富、架构稳定、高质高效的内容开发工具。
届时,大型开发商可以利用该功能对游戏玩法、细节进行深度测试打磨,个人开发者更是可以通过该功能拓展受众人群,在增加收入的同时,也能向更多元的玩家群体分享自己注入在游戏内容中的巧思与构想,为广大开发者出海获取流量与收益提供了坚实的技术保障。
据悉,这款插件将内置于 Creator 编辑器中,在开发过程中只需要简单勾选即可一键集成。当集成了该插件的内容发布在Web平台后,即可通过Google AdSense 的服务进行广告变现。
此外,林顺还介绍了 Cocos 与Google 一起合作的AdSense插件freekick 网页游戏,堪称游戏开发者创收的福音,预计插件将在Q4季度上线。
对于移动端高*量成本的SLG类游戏来说,通过相对成本更低的Web端*量,吸引玩家深度体验游戏内容后,再通过三端互通的优势引流回移动端平台,多端同步深度绑定用户使用场景,是一个非常值得借鉴的运营思路,而 Cocos 扎实的底层架构与友好的跨平台工作流正是不可或缺的基础之一。
以SLG 手游《三国 英雄的荣光》为例,开发商借助 Cocos 的跨平台能力,同时将内容发布到了Google Play、Apple Store和Web端,并实现三端画面表现与玩法一致、数据互通等核心功能。
在《使用 Cocos Creator 打造优秀的原生&Web游戏体验》演讲中,林顺介绍道,Cocos 强大的跨平台性能,可以帮助开发者在完成Web端开发后,快速将内容适配并发布到不同平台,Web平台与原生平台双核引擎的设计确保了内容对不同平台的优化都能做到极致,进一步提升玩家的游戏体验,增加内容商业成功的可能性。
游戏开发完之后,我们需要打包发布,这时候就可以根据自己需要发布在哪个平台上选择打成不同的程序包(需要打包iOS包的话必须在mac电脑才能看到iOS的选项)。
cocos creator是cocos公司推出的最新的开发平台,整个开发完全采用js开发语言,对比之前的C++和lua脚本更加简单了,很多原来h5的前端开发人员可以很快上手,于是我们采用cocos creator来开发游戏。
专题: 求三国单机游戏 征三国游戏单机 三国游戏.单机上一篇phigros网页版游戏
下一篇tuomasi网页小游戏