病毒尚未过气,害虫又活跃了

诚然这是一款模仿消灭病毒的打飞机,我依然花费20多天去制作。打飞机系列是代表是小游戏优化基础的一个入门挑战,里面包含很多技术细节,也为以后制作更多另类有趣的游戏需求打下基础。当然,每个男人都有一个打飞机的偏好:grin:


先说一下技术栈, 后端 nodejs+mongodb+express 前端cocos creator
之所以采用后端,不仅是为各种联网游戏做好基础,用户数据建档,货币产出保存在后端,使得微信小游戏不在“单机化”,特别这次的货币产入产出由后端计算,杜绝原版消灭病毒那样的刷金币行为。因为尚未涉及互动,全程采用http短链接,在网络承载方面和服务器上就不会有什么太棘手的问题。

这次主要的工作量都在都在前端开放上,主要技术点为性能优化,以苹果5s同时代作为下限机型参考优化,毕竟实际运营中发现低配机数量依旧不少,就项目最后,产品流畅度和手感依然感觉不如消灭病毒,估计是laya引擎在性能上小胜一筹吧,差别并不算很大。

归纳如下:
1 对象池使用 + 分帧处理:满屏的弹幕和害虫群,肯定要使用对象池的,目前锁定60帧/秒,特别是子弹和害虫分裂行为,采用逐帧/分帧创建,减少掉帧现象。
2 碰撞检测:计算量较大的一块,采用四叉树遍历 + 圆圆碰撞圆矩碰撞算法
四叉树网上资料很多,把节点适配成cocos适应的节点,锚点默认在中心,也比较好算圆心
3 单场景模式:原版病毒场景切换动画过度很自然,cocos下如果采用多场景的机制场景之间动画过度会异常难处理,所以采用单场景模式,所有“场景”相关图层元素采用预制件,按需加载。
4 帧动画+资源分包:因为没有使用龙骨等手段,全程使用序列帧,图片数量极多,故借助图集打包工具
texturepacker打包并压缩,最后使用分包机制加载,控制整包大小在6M左右(含原音音效,这里不做压缩处理,损音较大),也推荐远程资源包,默认加载过程体验较差,依赖网络资源。这样完整加载体验非常良好,加载时间控制在4s左右。这是以前塞班机时代极致的控包习惯养成的。

小游戏发展至今,也会进入一个淘汰期,普通产品生存空间越来越有限,作为开发者打好基础,为加下去的创意游戏做好技术储备才是关键,毕竟想的出,做不出或做不好才是最伤的
欢迎 各路小游戏独立开发爱好者 交流共同进步 我的qq/wx: 8510214

3赞

我感觉四叉树可以省掉,碰撞体不是很多,毕竟生成四叉树也有消耗
直接判断 x<=阈值 && y<=阈值 就可以了,要是精度不够,就在判断一下xx+yy<=a²(就别考虑开方了)

子弹的话也不用全做碰撞检测,做一个存储结构,只检测最外层子弹的碰撞就得了

(PS:毕竟我没做过,以上纯属饥饿状态下的YY)

请问分帧处理具体的实现方式是什么的呢?

我现在也是在用的四叉树,但是感觉有点掉帧。。。
感觉也并不是分裂时导致的掉帧。。。

。。。。。。

感觉是有点卡啊

分裂 = new ,以事件的形式 通知到生产队列。 然后根据实际情况生产,可以1帧生产1个,1帧生产2个,或者2帧生产1个。

实测四叉树和掉帧关联不大,四叉树只在场景诞生的时候初始化,每一帧只是放入要遍历的元素,遍历完清空。目前我是每一帧都四叉树全遍历一次,实际测试每2帧做一次全遍历也问题不大

玩了一下,打击感很好,但是屏幕震动不建议太多,有些头晕

个人制作么,美术呢,美术怎么来的

外包 :disappointed_relieved:

谢谢~ 震动+CD 就好了 :relaxed:

赞!!!