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

前言

《欢乐坦克大战》是一款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日

相关推荐

  • 和平精英怎么对决? 和平精英火力对决怎么玩?

    和平精英怎么对决? 点击特训岛,然后我跑去决斗场,在那里面点击报名只需要一个乐园币乐园必要在金色宝箱里面获得,然后邀请旁边的人,跟你决斗 和平精英火力对决怎么玩? 1、玩家首先要找到火力对决模式进入,进入之后可以直接看到有直升机+队友召回+超级武器箱。 2、然后需要找到直升机的所在位置,之后就可以进行飞行,还可以直接进行拥有打无人机的操作。 3、玩家在火力对…

    游戏快讯 9分钟前
  • 斗鱼和平精英手册助力怎么弄?

    斗鱼和平精英手册助力怎么弄? 登录斗鱼官网,进入斗鱼和平精英活动页面,点击右上角的“助力”按钮,在弹出的助力码输入框中输入您的助力码,点击“立即助力”按钮即可完成助力。每个助力码只能使用一次,若您的助力码已被使用,请更换新的助力码。 和平精英攻略手册? 前期稳点发育,后期打架。 飞航线比较远的地方,可以更好的发育。 遇到那里有人就直接走,避免掉大分。 有了基…

    游戏快讯 1小时前
  • 和平精英画质修改器用哪个?

    和平精英画质修改器用哪个? 您可以在设置里找到,提示:是在游戏设置里 和平精英柠檬假日怎么获取? 1. 点击大厅主页右侧的活动 2. 找到领取空投节套装,收集能量 3. 为加快收集速度可去好友家收取 4. 集齐能量,即可领取柠萌假日套装 和平精英比例修改器怎么下? 没法下载,因为修改器没有独立的官方 和平精英改比例,首先需要对手机进行root,不过这个是有风…

    游戏快讯 3小时前
  • 和平精英队伍语音怎么开?

    和平精英队伍语音怎么开? 和平精英是一款非常有趣的战略射击游戏。如果你要与团队一起打游戏,可以开启队伍语音,使用内置的语音/文字聊天工具。具体步骤如下:1. 在游戏中选择“组队”并创建一个队伍。2. 单击您的队徽以打开选项菜单。在此菜单中,您可以设置您的队伍语音选项。3. 您可以选择“仅限文字聊天”、“语音聊天”或“关闭语音聊天”。选择“语音聊天”将允许您使…

    游戏快讯 4小时前
  • 和平精英挂件怎么使用?

    和平精英挂件怎么使用? 点仓库,背包,最上面的挂件按钮 和平精英挂件怎么获得? 商城通过军需币购买,也可以通过活动和手册获得 和平精英怎么装挂件? 和平精英在仓库里点击挂件就可以穿戴各种挂件 和平精英所有挂件? 一、动物系: 神秘黑猫挂件:小猫咪的设计非常惹人爱,尤其是那个表情!作为抽军需的附带产物,好看但是一个十连只出挂件也不会感觉很良心,反而很鸡肋! 小…

    游戏快讯 5小时前