欢乐坦大作战,欢乐坦大战下载

前言

《欢乐坦克大战》是一款3V3实时竞技微信小游戏创作,是最早在线发布的游戏之一。由于这款游戏是最重要的微信小游戏之一,项目的开发周期很短,游戏复杂度、开发难度、性能挑战也很大,项目组先后开发了单机版和联机版。完全的。一个月内玩一场战斗游戏。

同时,由于客户端开发团队核心成员拥有多年cocos2dx引擎开发经验,项目组决定使用CocosCreator V1.6.1版本引擎进行开发。微信小游戏平台使用的JavaScript语言,开发团队基本上是从零开始,边学边做,是一个很大的挑战。

1. 架构

关于网络通信,项目使用WebSocket协议进行通信,通信格式为json。为了支持tdr xml 协议,项目团队开发了专有的tdr-json 转换工具。

为了帮助学生计划使用Excel表格进行数据组织,项目团队开发了一个工具将Excel转换为JSON文件,以便客户可以读取配置文件。

对于地图,我们没有使用cocos引擎自带的TileMap,而是自己实现了类似TileMap的机制。规划学生可以使用工具在Excel中配置地图信息,并将Excel转换为JSON格式的地图文件以供客户端加载。

由于开发进度紧张,单机玩法和PVP玩法必须同时开发。所以我们封装了一个驱动战斗逻辑的命令层(CMD层)。例如,使用摇杆控制坦克的移动,在独立模式下,表示层将CMD命令发送到逻辑层进行处理,CMD保存在客户端的本地列表中,然后发送到命令管理器。它将被保存。 CMDMgr 在更新层处理期间读取本地命令列表以驱动逻辑。在战斗模式下,CMD命令被发送到服务器,服务器将它们广播给所有玩家,并且玩家客户端的命令管理器CMDMgr驱动逻辑层在更新期间进行处理。引入命令层(CMD层)后,战斗逻辑层变得抽象和独立,开发者无需担心当前的玩法模式,并且可以轻松复用,降低开发成本。

在PVP实时战斗中,客户端进行碰撞检测,将碰撞检测结果通知服务器,服务器验证并计算伤害并广播给其他玩家。游戏支持断线重连和客户端崩溃重连机制,服务器会发送战斗过程中的所有状态数据,客户端会恢复战斗场景。

基于时间戳的位置点同步算法用于玩家位置同步。该算法最初用于《全民飞机大战》中的双打和决斗模式。《全民飞机大战》实时战斗采用UDP通讯。《欢乐坦克大战的》 在WebSocketTCP环境中也获得了良好的结果。算法原理如下。

2. 挑战

在开发过程中,我们遇到了很多挑战,但具体我们一一解决了以下问题。

1.微信小游戏平台增加动态代码执行限制

微信小游戏平台对eval(\’console.log(1)\’)、new Function(\’console.log(1)\’)、setTimeout(\’console.log(1)\’)等代码的动态执行有限制。 )\’) call 方法无法被调用。 CocosCreatorV1.6.1 源码中广泛使用的函数为了解决这个问题,我们联系了cocos 引擎的开发者,并参考了cocos 1.7 版本(当时尚未发布)的修复,修复了部分源码。这个问题就解决了。

2.微信小游戏不能超过400万个

正如标题所示,微信小程序对大小有严格的要求。我们想了各种办法来解决这个问题。

措施一:定制引擎,通过删除不必要的模块来减小引擎的体积。这可以通过配置引擎模块来实现。

措施二:图像压缩

PNG图像压缩工具pngquant可用于有效减小PNG图像的文件大小(通常压缩60%-70%)。

即使采取了上述两种措施,资源仍然高于标准,所以唯一的解决办法就是采用资源的动态下载。

措施三:动态下载资源

游戏中添加了资源更新场景。启动游戏时,更新场景资源时并不创建游戏业务模块,而是在场景发生变化之前在游戏场景内创建并初始化业务模块。具体计划如下。

1. 首先,下载资源更新配置文件。该文件包含资源下载列表和资源验证MD5信息。

2.根据资源下载列表将验证MD5与本地文件进行比对。如果相同,则不会下载。如果不同,则会下载。

3. 下载完成后,运行MD5 验证。如果验证失败,请删除本地文件并重新启动下载过程。这里的MD5验证不仅可以验证资源的下载是否正确,还可以起到防止资源被非法修改、防止资源欺诈的作用。

4、修改cocos引擎源码,将加载管道中读取资源替换为读取本地下载文件。

由于游戏运行中可能出现Bug,可能需要发布客户端补丁。资源更新配置文件可以多次修改,这可能会导致CDN更新延迟并导致某些播放器下载可能是旧版本的配置文件。此外,出于成本原因,一些中小型企业会缓存旧文件。以前的项目如果出现这样的情况,我们一般会联系玩家确定问题原因,如果确定是操作人员造成的,就会报告给运维同学和A网络部的同事推了话务员。这效率不高。为了减少这种情况发生的可能性,我们使用双CDN策略。

具体做法是对同名文件添加版本号机制,将文件内部存储中的版本号+1,更新文件时在两个不同的CDN上更新。客户端下载时,会下载版本号较高的两个文件。这样,在更新配置文件时,只能同步两个不同CDN中的一个,这不仅减少了CDN更新延迟,还减少了操作员缓存问题发生的可能性。

3、性能优化

与普通游戏不同,微信小游戏平台本身的JS 脚本执行效率较低,且目前iOS 环境下小游戏的JavaScript 引擎没有默认启用JavaScriptCore,导致JS 执行速度较慢。单纯从测试结果来看,它的速度大约是Mobile Safari 的两倍。从profiler来看,js脚本占用了80%左右的执行时间。因此,减少脚本中的计算量也是性能优化的一个重要方面。

小米6

安卓游戏

安卓微信浏览器

安卓铬

57.55

53

58

iPhone 6

iOS小游戏

iOS微信浏览器

iOS 浏览器

20

48

50

帧率测试对比

为了解决这些问题,项目组进行了以下优化。

绘图调用

渲染批量合并与大多数游戏项目类似,需要合理规划图集的使用,并将GameObj 使用的图像资源拼图到同一水平。

这可以分为地图背景图层、表面、地图对象、坦克、子弹、特效、UI 和其他谜题。确保同一关卡中的游戏对象使用相同的图集,并且相邻的精灵使用相同的材质。

面具

玩家在游戏中显示的头像是圆形的,但从微信平台下载的头像是矩形的。最初的头像显示使用了cocos mask组件进行渲染,效率较低。我们实现了自己的基于网格的控件,通过将一个圆分成n 个三角形并将相应的UV 分配给这些三角形的顶点来绘制圆形头像。渲染头像时的批处理开销已减少。

冲击检查

cocos Creator自带的碰撞系统效率不高,不划分空间,不适合大量单元的碰撞检测。此外,对撞机的碰撞盒必须每帧更新。游戏地图内有许多静态物体(例如砖块、主基地、铁板等)。当玩家在场景中移动时,移动摄像机会改变地图的视图。地图上的许多静态物体都有恒定的世界坐标,它们的碰撞盒只需要计算一次。

为了解决这个问题,我们添加了一个属性static,可以让你缓存静态节点的计算结果,避免重复计算。

对象池

游戏中的坦克、子弹、砖块等都使用对象池。当进入战斗场景时,会预加载足够数量的对象并在战斗中重复使用,以避免实时对象创建和销毁。

避免场景和节点更新

在分析cocoscreator源代码后,我们发现当一个节点变得活跃时,它会触发场景的代价高昂的递归遍历。

为了避免这种开销,当游戏中的一个物体死亡时,它不会被从场景中移除或禁用,而是通过将其坐标移到很远的地方来死亡,而不进行任何相应的逻辑处理设置状态。代码。尽量保持帧速率稳定,以避免性能曲线出现故障。

农作物

如果物体不在主角的视野内并且特效或声音没有永久播放,它们可能会被剪掉并且不播放。

模型适配

美术资源分为高、中、低三个级别,规划者在资源表中设置不同级别的资源名称。游戏过程中,根据模型和实际表现选择表现水平。

图中横轴是时间(秒),纵轴显示FPS有明显提升。一系列的优化措施最终保证了低端iPhone 5S基本满足游戏需求。

以上是《欢乐坦克大战》微信小游戏开发概况。有兴趣的朋友可以过来一起交流。

本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/656974.html

(0)
上一篇 2024年5月29日
下一篇 2024年5月29日

相关推荐

  • 和平精英头像能换几次?

    和平精英头像能换几次? 一共是5次。 超过了次数就无法再修改了,如果超过了人脸识别上线,你可以找腾讯客服。1.玩家在游戏登录界面会被要求进行人脸识别验证,疑似未成年人的玩家需要人脸识别验证,与其实名信息进行比对。 2.若玩家在人脸识别时不小心退出了程序可以在半小时后再进一次游戏试试。如果这样没有效果的话,可以等待到明天早上八点登录,或者晚上九点前登录再试一次…

    游戏快讯 1小时前
  • 和平精英怎么送好友券?

    和平精英怎么送好友券? 券是送不了的好像,你可以去虫虫助手做任务,可以换皮肤或者套装什么的送好游 和平精英怎么送好友兵团币? 进入和平精英游戏主界面,点击左下角的好友。 2进入好友界面,就可以看到自己的好友了。 点击好友头像后面的金币图标,就可以给好友赠送金币了。 如果要给游戏好友赠送金币,则先点击游戏好友。 页面弹出游戏好友的头像后,点击金币图标即可。 3…

    游戏快讯 2小时前
  • 和平精英8倍镜可以装哪些枪?

    和平精英8倍镜可以装哪些枪? 8倍镜所有的单发狙击都可以装,射手步枪SKS-迷你-大炮都可以装, 和平精英倍镜怎么转动? 设置的方法/步骤: 第一步,在和平精英游戏中,点击更多选项按钮。 第二步,在更多选项按钮页面中,点击设置。 第三步,在设置页面中,选择开镜按钮转动视角功能进行设置即可。 和平精英哪里有倍镜? 和平精英在哪里? 有倍镜在一些房子里,还有一些…

    游戏快讯 3小时前
  • 为什么和平精英是皮肤游戏?

    为什么和平精英是皮肤游戏? 现在有钱人太多,商家利用有钱人炫富和攀比的心理就疯狂出皮肤,而且又有了可以宣传的名义使老玩家回归,也能吸引新玩家的好奇。学生党大多都有钱,几千几百的皮肤都能买得起,频繁出皮肤能让学生在消费后满足在同龄人之间的虚荣心,维持对游戏的新鲜感。 有些皮肤是活动免费得的,需要花费大量的时间精力在上面,这样就能给平台带来大量的流量。在平民白嫖…

    游戏快讯 5小时前
  • 和平精英被扣钱怎么投诉?

    和平精英被扣钱怎么投诉? 和平精英被扣钱投诉,首先我们看扣钱记录,看看扣钱方向是什么,如果是系统误扣,需要我们联系客服解决问题才行。 花小猪乱扣钱怎么投诉? 这个可以直接在花小猪的平台投诉就行了 ,找他们的客服人员 ,这个投诉是有效果的  闲鱼乱扣钱怎么投诉? 1、向工商局进行申诉 闲鱼是提供服务的平台,当消费者或商家在平台上权益受到侵犯时,可以登…

    游戏快讯 6小时前