您当前所在位置: > 爆料站 > 君子堂

古风黑马!延趣游戏《叫我大掌柜》App+小游戏双端技术分享

时间:2022-08-12 22:48:14  来源:  作者:网络转载
3699小游戏

3699小游戏

大小:22.5M更新:2021-01-13

分类:系统工具

由延趣游戏研发的古风模拟经营游戏《叫我大掌柜》上线至今已有一年多,在这段时间里,游戏不断充实内容、迭代优化,连宣发也在升级,成功吸引并留住了一大批玩家。在 Cocos Star Meetings 厦门站中,《叫我大掌柜》主程格兰和我们分享了该项目 App 和小游戏双端的技术开发经验。

以下是分享实录:


《叫我大掌柜》是一款面向全球发布的模拟经营游戏,目前已在8个国家或地区的多平台以多语言发布,所以也充分榨干了 git 的功能,做到内容版本快速更新迭代。

项目立项时间是2019年中,当时只考虑发布 App,选择了比较新的 Cocos Creator 2.2.2 开发,UI系统编辑使用 fgui 来设计,主要看中其支持多语言多区域功能。

小游戏版是在2021年4月投入研发,使用的是 Cocos Creator 2.4.4,后面升级到了 v2.4.7,跨度不大,升级比较简单。v2.4.x 开始支持 AssetBundle 功能,可以代替之前版本子包功能,性能更佳,也能更好地支持微信等小游戏的子包功能;另外升级也是考虑到对后面的 Creator 版本升级会更友好。


我们项目不希望玩家强制 App 强更,因为 App 强更可能会造成用户流失,所以该项目就不能进行 App 版本引擎升级,其中代码也无法做到分到各个子包中,导致代码只能放在一个子包里面,随着版本更新,代码量会越来越大,而当前项目子包只做资源管理更新。

由于项目中存在两个 Cocos Creator 引擎版本,但是项目代码却只用一份, 所以我们也做了一套引擎 Api 兼容中间层,主要体现在资源加载管理和部分材质相关的代码。




本次我将分别介绍《叫我大掌柜》App 和小游戏两个版本的技术研发经验,抛砖引玉,供大家参考。

App 技术分享

多打包机打包

及热更、远程资源管理

如何高效打包热更包?针对这点,我们在 v2.2.2 的基础上进行了修改优化,若是较高版本的 Creator,可结合引擎热更逻辑判断以下几点是否可用。

主要方案如下:

更新超时时间不与更新文件数量关联,单个文件的超时时间也不与文件大小关联,而是整体超时体验可控、可配置。解决在热更过程中需要考虑到网络波动导致个别文件加载超时导致热更失败问题。

修改版本对比逻辑,使热更可执行版本回退。引擎的热更只能对比高版本进行热更,但是在项目实践中有时需要让指定用户回退到指定热更版本。

将所有资源划分为主包资源、子包资源、补充资源和远程资源四大类,扩充游戏后期内容的同时不增加初始下载包体大小,这个部分是常规操作,比较大型游戏大部分都会考虑到。

通过对文件增加自定义 md5 校验,实现多台打包机交叉打包提高效率,避免不同打包机热更补丁大小异常。

通过资源内容生成的 md5 来判断资源打包是否重新生成。

注意:上面这两点是为解决不同机器或 meta 变化导致资源重新打包,但是实际上资源还是原来的没有改动,热更时会被判定为要热更该资源。

表格数据加密和压缩

使用 npm 模块 xlsx 功能[1] 读取 excel 表格数据, 该模块 Api 比较稳定,便捷。

表格数据使用 protobuf[2] 进行打包生成二进制内容文件,使用 protobuf 主要体现两点:生成文件小,加密高效。

使用嵌入式 JS 模板引擎 EJS 定制 TS 文件内容:加载 protobuf 二进制文件代码,自定义枚举和结构体代码。

把生成代码做成 JS 插件,在项目中添加该插件进行使用,使用插件可和项目代码进行解耦合。

大地图显示和优化

可借鉴四叉树原理进行大地图分块加载,在这个项目中,我们也是根据项目需求自定义分块加载功能。

滑动动态加载时是根据摄像机镜头属性判断进行加载。

使用摄像机做移动、缩放、定位等视觉效果。

注意:以上两点也是 Creator 推荐的方式,即尽量使用摄像机功能,而不是通过操作节点的属性去实现,可大大提高性能。

判断摄像机显示范围控制大地图上物件显隐,不在指定范围内就不显示。

2D 界面做 3D 景深效果


地板设置节点的 is3DNode 为 true,调整 eulerAngles 属性。

旁边建筑图片设置 Texture2D 的 genMipmaps[3] 为 true,并进行纹理刷新才有效。

关于 genMipmaps,为了加快 3D 场景渲染速度和减少图像锯齿而提高性能。

Fgui 虚拟列表多层级节点使用

列表组件一直都是我们 UI 界面影响性能比较大并且最经常用到的组件,如果能够对列表进行深度优化,那将解决大部分 UI 界面性能问题。

而 DrawCall 的渲染次数是一个重要衡量指标,该技术就是为解决渲染合批会被其他组件打断的问题。把一个列表分成多层级渲染,不会打断批次渲染的节点可以放在同一层,比如:图片节点(合图)一层,文本节点一层。

若是 fgui 设计, 相关的 Api:GList.prototype.addLayer。

小游戏技术分享

小游戏启动流程优化

修改小游戏的 main.js 文件, 对里面下载流程添加异常判断并尝试重新下载和反馈信息给用户,这个是考虑到低网速引起的问题。

把 RESOURCES 子包加载移出 main 逻辑流程,在启动页面再进行加载,提速启动。虽然资源是放在远程 cdn 上面,但是里面有一个 config.json 文件,我们项目资源非常多的,这个文件也是会有好几兆的大小,所有也需要对这个文件进行分批加载处理,避免低网速加载经常失败。

删除项目中没有用到的引擎模块,这个是常规操作。

使用小游戏独立分包来提速启动,但有些小游戏平台不支持,比如华为快游戏。

多个文件可适当组合在一起,太大在低网速下载失败率高,太小则下载次数增加导致整体下载进度漫长。比如我们项目中表格配置文件就是分成多个组合文件下载,每一个组合文件大概 3M。

Fgui 动态创建节点


和资源加载同步

常规界面打开逻辑流程是一个直线型流程:加载预制体,同时加载相应资源→创建节点→界面显示,处理业务逻辑。

我们对这个流程进行了优化,用界面一点即开、内容逐一渲染的方式来展示界面。该技术设计核心是充分利用预制体配置文件和资源文件加载的耗时不同,而提前做了界面节点创建和业务逻辑处理。在小游戏平台上,这个方案的优化效果会更加明显,因为资源都是在远程 cdn,加载和网速紧密关联;而对低端机来说,复杂的界面中单单节点创建这个环节耗时就会更长。

设计原理:

加载界面 Fgui 包的 bin 文件(类似预制体配置)同时加载界面的图片资源合图。

加载 bin 文件会比图片更快完成,然后创建界面节点,并记录纹理相关节点信息,在图片加载未完成之前也可以处理其他业务逻辑。

等图片资源加载完成后,再重新设置界面纹理数据。

纹理相关的节点包括:图片、帧动画、艺术字。

流程图

当然界面快速打开也有涉及到其他方面知识,网上也有很多大神给出答案,比如界面资源合理规划并合图、分帧加载部分资源(spine 或特效)等。

Fgui 虚拟列表分项加载

虚拟列表的意思是使用一屏或多一些的有限节点展示数量巨大的列表数据,节点重复使用而只是根据数据来刷新要展示的内容。比如用户上滑时,就将最底部的节点放置到最顶部,反之向下滑时就将最顶部的节点放置到最底部。


但是在小游戏环境下,受到网络和低配机影响,在同一帧创建展示一屏的节点内容,也会让用户在视觉上感受到卡顿,所以需要逐帧依次生成节点来提升界面效果。

此外,支持不同节点来展示列表内容,底层根据当前所有节点大小和显示区域大小来判断是否创建或复用的节点,并设置节点位置。

流程图

测试结果对比:

优化前

优化后

小游戏代码压缩经验

小游戏有子包总量大小限制,比如,微信小游戏所有包体总量大小是不能超过 20M,主包不能超过 4M。但是前面说到 App 不能升级,项目通用一份代码,导致代码不能分包,只能放在一个子包里面,而且大小已经超过 20M。

项目代码量大小的问题,只要建立在合理规划子包和业务逻辑的冗余程度控制基础上,一般项目是没什么太大问题,除非项目内容非常庞大而导致代码量超出限制。

设计原理:

使用 uglifyjs[4] 进行代码代码压缩,功能相对其他压缩方案更加优秀和稳定。

修改 uglifyjs 生成简码是三位字符串开始,避免代码中三位以下字符串命名的冲突。

需要配置跳过指定简码,比如:jsb。

配置不生成简码命名,包括:

网络通讯协议字段、表格字段,这两点原理上也可以做到代码压缩,但是考虑到影响面比较广,建议屏蔽;

引擎特定字段(预制体属性,场景属性,shader 属性),不同平台适配代码的字段(微信小游戏)。这两点需要特别注意:如果是团队自行查找问题,需要对引擎代码和平台的适配文件逻辑非常清楚才能有把握解决问题,我们在实现过程中遇到过压缩后没有报错但是出现白屏或黑屏的问题,折腾了很久,后面也是在 Cocos 技术支持人员的帮助下修改正确,在此也向技术团队表示感谢!

整合代码压缩流程为 Creator 插件并在打包流程执行。

在小游戏和 H5 可起到加密代码的作用。

代码需要定义简码和源码相互获取的接口,代码中有些逻辑必须使用到源码。

流程图

我们对优化结果进行了测试,客户端编译后代码压缩率达到25%左右,最高我们游戏有测试过将 21.3M 压缩到 15.4M。

另外有两个小 Tips,一是项目命名需要严格规范,需要注意通过""引用变量逻辑;二是推荐进行代码覆盖检测?[5],可更全面地发现代码异常。

代码文件分段下载优化方案

由于单个代码文件很大,在低网速情况下经常出现下载失败,微信小游戏子包下载是不支持断点续传的,而且是底层处理相应功能,我们是无法修改加载流程。

Creator 的子包的 JS 代码内容主要是{文件名:该 TS 文件内容},加载子包 JS 代码时会 require 里面每一个文件名。如下图:


修改生成子包的 JS 文件内容加载流程:加载子包时只保存子包的 JS 文件内容{文件名:该TS文件内容},不进行 require,也是对上面红框代码进行修改。

把原来子包代码通过配置 TS 文件个数分隔成多个子包,相应的小游戏的子包配置也要修改,比如:setting.js,gam.json。



在游戏中加载相应的多个子包后再调用 require 保存文件名。

流程图

本次的分享就到这里,希望能对大家有所帮助,谢谢!


来源:COCOS
原文:https://mp.weixin.qq.com/s/5jeCCYfRWlEz--AYL5zgPQ


资源转载网络,如有侵权联系删除。
相关下载

玩家评论

游戏策划初入行——小游戏一年打工经验总结

作者:风暴降生郭德纲;邮箱:xiebingwangba@163.com 前言 去年三月开始到今年三月辞职,做了刚好一年的小游戏。参与了两款换装小游戏,自己做了一款换装小游戏。尝试过不同详情>>

阅读: 0
日期: 2022-08-09
手游主程转型独游制作人,从微信小游戏起步,下一个项目将颇具野心

本文首发“腾讯GWB游戏无界” 作为一位游戏爱好者兼开发者,在这个行业打拼了十年以后,总有很多人诞生想要成为独立开发者的欲望。笔者结合自己的经历,分享从专职程序开发转详情>>

阅读: 0
日期: 2022-08-09
抖音挡蜜蜂小游戏介绍 抖音上挡蜜蜂的小游戏叫什么

抖音上一款躲避蜜蜂的小游戏非常有趣,那么这款游戏叫什么,又要怎么玩呢?请看下面的抖音躲避蜜蜂小游戏介绍,希望详情>>

阅读: 1
日期: 2022-08-05
星球建造大师小游戏兑换码大全 最新礼包码2022分享[多图]

星球建造大师游戏v1.0类型:休闲益智大小:0KB评分:5.0平台:标签:趣味动漫卡通横版游戏简洁风格立即下载 星球建造大师小游戏兑换码是多少?礼包码有哪些?星球建造大师小游戏兑换详情>>

阅读: 1
日期: 2022-07-31
《奥比岛手游》星际大赛小游戏怎么玩?星际大赛小游戏玩法一览

  《奥比岛手游》中星际大赛小游戏已经开启了,玩法有大乐斗,贪吃蛇,百步穿杨,花云挑战,那么今天小编就给大家介绍一下奥比岛手游星际大赛小游戏玩法一览,有需要的详情>>

阅读: 1
日期: 2022-07-30
《奥比岛手游》星际大赛小游戏玩法一览

导 读 《奥比岛手游》中星际大赛小游戏已经开启了,玩法有大乐斗,贪吃蛇,百步穿杨,花云挑战,那么今天小编就给大家介绍一下奥比岛手游星际大赛小游戏玩法一览,有需要的小伙伴不要详情>>

阅读: 0
日期: 2022-07-24
猛将争霸小游戏礼包兑换码大全 最新可用兑换码总汇[多图]

猛将争霸v1.0类型:角色扮演大小:150.7MB评分:5.0平台:标签:3D三国剧情社交立即下载 猛将争霸小游戏礼包兑换码有哪些?兑换码是多少?猛将争霸小游戏礼包兑换码快来免费到手使用详情>>

阅读: 1
日期: 2022-07-16
《摩尔庄园》全新社交小游戏上线,组队集结探秘星空!

太空冒险队速速集结!达成一定集结数量就能免费获得云彩扭蛋币、金豆、拉姆装扮【航天头详情>>

阅读: 0
日期: 2022-07-13
经典角色“比谷”将回归《索尼克:边境》 带来钓鱼小游戏

《索尼克:边境》作为索尼克系列的新作品,近期又有了新消息,游戏中将会回归曾经的经典角色“比谷”,同时还会有该角色的专门钓鱼小游戏可以进行体验,在增详情>>

阅读: 0
日期: 2022-07-08
救救狗狗蜜蜂小游戏怎么玩 救救狗狗蜜蜂小游戏攻略汇总

最近非常火爆的小游戏救救狗狗蜜蜂瞬间圈粉无数,很多人都在休闲的时刻进行畅玩,对于很多不同的玩家来说,如何更好的畅玩增加游戏体验度一直都是没有目标的,那么接下来就让小编为详情>>

阅读: 0
日期: 2022-07-08
抖音小游戏在哪玩?抖音小游戏入口[多图]

抖音有很多有趣的小游戏,这些小游戏可以直接在线玩不用下载,那么在哪里可以在先玩这些小游戏呢?今天game234小编会给大家详细的介绍抖音小游戏的玩法入口,详细的请多参考下面详情>>

阅读: 1
日期: 2022-06-21
《想想森林屋》一款很温馨很治愈的小游戏

游戏画风可爱中带点精致,种菜加工难度不高,成熟时间也不算长,可以尽情布置家具房间挺大的详情>>

阅读: 0
日期: 2022-06-13
网飞涉足手游独占来世小游戏

原标题:网飞涉足手游 独占来世小游戏 2022-06-13 06:53:37 作者:老王 如果你想在你的手机上玩获得奖项提名的《Spiritfarer 》,你就详情>>

阅读: 0
日期: 2022-06-13
压轴大作变“小游戏”  Epic白嫖月送《食人鲨》被玩家爆破

  6月10日是Epic大特卖白嫖福利的第四周,此前Epic已经连续送出了《无主之地3》、《生化奇兵》合集以及《德军总部》。可原本以为在本周能迎来大体量佳作的玩家们,在看到谜底详情>>

阅读: 1
日期: 2022-06-10
抖音小游戏堆叠大陆攻略大全 入门仓库/蓝图用法分享

抖音小游戏堆叠大陆是一款策略风格的游戏,加入其中就可以开启策略的体验,享受多种的卡组的完成,买卖各种的资源来完成提升实力,还能建造自己的房子等,下面就来介绍下抖音小游戏详情>>

阅读: 1
日期: 2022-06-07
《黑道圣徒:重启版》捏人小游戏将于6月9日免费上线

《黑道圣徒:重启版》中的捏人系统相信有很多玩家都有体验过,近日,在今年的6月9日夏日游戏节发布会上,Volition将会发布一个免费的捏人小游戏《Boss工厂详情>>

阅读: 1
日期: 2022-06-07
网曝《黑道圣徒》重启版捏人小游戏6.9上线 免费体验

知名舅舅党Tom Henderson日前透露,开发商Volition将会在6月9日的夏日游戏节上发布一个名为“Boss工厂”的《黑道圣徒:重启版(Saints Row)》捏人详情>>

阅读: 0
日期: 2022-06-06
太阁立志传5DX交涉小游戏攻略 交涉技巧分享

太阁立志传5DX交涉小游戏攻略。游戏中玩家在购买物品时可以进行交涉并游玩小游戏,如果成功的话可以降详情>>

阅读: 0
日期: 2022-05-23
总有一款是你所爱!《艾兰岛》种草小游戏推荐

  3D沙盒创造,乐趣无限!《艾兰岛》最新一期种草小游戏推荐来袭!解谜?平台跳跃?飞行射击?无论你爱的是什么类型游戏,《艾兰岛》通通都能满足你!在《艾兰岛》中,你甚至你可以利详情>>

阅读: 0
日期: 2022-05-23
《幻塔》镜都小游戏位置及玩法技巧

下面给大家带来的是《幻塔》镜都小游戏位置及玩法技巧,本期要讲的是镜都探索中的6个小游戏。 6个小游戏分别详情>>

阅读: 0
日期: 2022-05-23
《仙剑客栈2》官网上线 跑堂小游戏、多人联机介绍

《仙剑客栈2》是一款集餐馆经营、角色扮演等诸多要素为一体的经营模拟游戏,由仙剑系列的众多角色共同经营“逍遥客栈”。游戏官博在今日发文详情>>

阅读: 0
日期: 2022-05-17
小蓝的打工日常魔性的休闲模拟小游戏下载

小蓝的打工日常是一款非常魔性的休闲模拟小游戏,游戏完美模拟了现实中打工的点点滴滴,并且以火柴人为题材,美观上觉得还是可以的,玩法上感觉不错,体现了打工人打工魂的感觉,这个脑详情>>

阅读: 2
日期: 2022-05-07
幻塔元素魔盒小游戏位置介绍

导 读 幻塔元素魔盒是一个很好玩的小游戏,找到元素魔盒后观察它的颜色,再使用对应颜色的元素进行攻击。那么幻塔元素魔盒小游戏在哪呢?下面小编就为大家带来元素魔盒小游戏的详情>>

阅读: 1
日期: 2022-04-29
奥比岛手游有哪些小游戏-小游戏位置

  奥比岛手游有哪些小游戏?奥比岛手游今日开启全渠道内测,今天小编就给大家带来了奥比岛手游小游戏位置,感兴趣的小伙伴详情>>

阅读: 2
日期: 2022-04-28
GoogleArts&CultureLab推出了4款文教类小游戏

  Google Arts & Culture Lab 新推出了 4 款文教类小游戏,用户可以通过 g.co/artgames 网站或者 Android/iOS 端的 Google Arts & Culture 应用来访问这些游戏。该应用会详情>>

阅读: 2
日期: 2022-04-28
小鸡兄弟的爆米花店铺中文版冒险模拟小游戏下载

小鸡兄弟的爆米花店铺中文版是一款很有意思的冒险模拟小游戏!此款游戏画面场景设定的相当可爱,咱们将会展开一段全新有趣的模拟商业之旅,你将可以自由建立专属自己的爆米花店详情>>

阅读: 1
日期: 2022-04-20
3月最赚钱手游!中国游戏占一半,原神靠着小游戏依旧位居前三!_排名_天堂_Roblox

原标题:3月最赚钱手游!中国游戏占一半,原神靠着小游戏依旧位居前三! 大家好,这里是正惊游戏,我是正惊小弟。 前不久知名移动应用数据分析详情>>

阅读: 1
日期: 2022-04-19
爆款频现,IAP小游戏或是投放增长新蓝海_赛道_用户_产品

原标题:爆款频现,IAP小游戏或是投放增长新蓝海 IAP小游戏赛道正在成为开发者们不可忽视的重要战场。 近年来,随着微信小游戏平台生详情>>

阅读: 1
日期: 2022-04-15
《QQ炫舞2》「4月版本预告」燃烧卡路里全新小游戏火热来袭!

4.14全新版本上线,小游戏领奖励,娱乐场全新赛季来袭!详情可点击这里前往查看~ 超链接地址>>> 燃烧卡路里 展示图效果为测试内容,最终内容以正式服为准 活动时间:4月14详情>>

阅读: 3
日期: 2022-04-14
《QQ炫舞2》·「4月版本预告」燃烧卡路里全新小游戏火热来袭

燃烧卡路里4月版本4.14全新版本上线,小游戏领奖励,娱乐场全新赛季来袭!详情可点击这里前往查看~燃烧卡路里(展示图效果为测试内容,最终内容以正式服为准)活动详情>>

阅读: 1
日期: 2022-04-14
3月游戏排行榜:休闲游戏再刷屏,“赚钱”小游戏获量惊人

近日,七麦数据发布了 2022 年 3 月热门游戏排行榜,包含游戏下载榜和游戏收入榜。 热门游戏下载榜 Top 3 中,腾讯旗下「王者荣耀」、「和平精英」再次包揽榜单前两名,而榜单第详情>>

阅读: 1
日期: 2022-04-06
庆余年手游舌战小游戏怎么玩-舌战小游戏玩法攻略

  庆余年手游舌战小游戏怎么玩?游戏中有着许多的小游戏,一些小游戏比较有意思,其中舌战小游戏玩法就比较有趣,有的玩家还详情>>

阅读: 2
日期: 2022-04-02
原神老臭挖宝游戏攻略大全 老臭挖宝藏小游戏详细玩法介绍

在完成了岩巅大侠往事任务之后很多玩家都会碰到这个小游戏,但是不少的玩家不知道如何的去玩,小编这里就为你提供了详细的玩法介绍,虽然说难度不是很大,但是很多玩家都发现自己详情>>

阅读: 3
日期: 2022-04-01
原神老臭挖宝游戏攻略:老臭挖宝藏小游戏玩法[多图]

原神老臭挖宝游戏怎么玩?这是玩家在完成了岩巅大侠往事任务之后会碰到的小游戏,挖宝小游戏的玩法难度不高,详细的玩法game234小编已经分享在下面,玩家可以通过下面的攻略了解详情>>

阅读: 2
日期: 2022-03-31
探索宝藏游戏《艾兰岛》种草小游戏推荐

由知名开发商波西米亚互动研发、乐趣无限的3D沙盒创造游戏乐园《艾兰岛》正在火爆测试中!在游戏中,玩家不仅可以开启自由的海陆空冒险之旅,还能自己定义、制详情>>

阅读: 2
日期: 2022-03-30
抖音热门小游戏 《咸鱼之王》新区攻略,什么阵容强

《咸鱼之王》新手怎么快速上手?怎么玩的厉害?需要怎样好的开局才可以,今天就给大家说下具体的玩法,这样我们上手会更加的容易一些的,要是不会的话下面一起来看看吧! 这游戏最好是详情>>

阅读: 1
日期: 2022-03-29
《风叶穿行》B站网页小游戏开启教程 风叶穿行B站小游戏怎么进

《风叶穿行》是B站制作的一款网页式平台跳跃小游戏,很多用户不知道怎么开始游戏,此次就为大家带来《风叶穿行详情>>

阅读: 4
日期: 2022-03-24
《隐匿按钮2》一款简洁风的单机休闲益智小游戏

总的来说体验下来感觉整体难度偏大,但是趣味性十足,每关都有隐藏的红宝石,让游戏性提升了不少。 详情>>

阅读: 2
日期: 2022-03-23
趣味小游戏 《热血合击》诛邪酷跑活动介绍_游戏新闻

  火爆的小游戏非常多,之前说到过黄金矿工,今天要聊的酷跑也是曾经风靡一时的经典游戏,而在王城争霸之热血合击中,大家也能看到酷跑的身影了,这就是诛邪酷跑活动。   热详情>>

阅读: 3
日期: 2022-03-14
2022超好玩的微信小游戏排行榜前十名 热门微信小游戏推荐

导 读 最近不少玩家都很好奇有哪些微信小游戏值得一玩,下面给大家带来2022超好玩的微信小游戏排行榜前十名,以及热门微信小游戏推荐。这些游戏基本玩法以及质量都受到了玩家详情>>

阅读: 3
日期: 2022-03-11
精彩推荐