模拟佳作《江湖医馆》专访:用 Cocos Creator 开发原生游戏

《江湖医馆》是一款由成都瓦瑞尔科技有限公司采用 Cocos Creator 开发,成都淌盈科技有限公司发行的原生手游。

年前武汉刚传来新冠肺炎的消息,作为医馆题材的游戏,《江湖医馆》便响应号召,给游戏中的医生和员工也戴上了口罩营业。不仅如此,还与发行公司一起联合推出了“看广告献爱心”活动,将玩家在活动中看广告收益的一部分直接捐助给湖北灾区。

《江湖医馆》各方面的成绩也都非常亮眼,在 APP Store 国内模拟游戏排行榜中位列第 1,免费总榜第 8 ,评分高达 4.9,广受玩家喜爱。

游戏背景设定在江湖之中,玩家经营一家医馆,用“中医”为来往的各路武林大侠及百姓进行医治。

游戏的机制设置也非常合理,玩家只需要点点点就能获得大量金币,建设自己的医馆。同时又具有一定的策略性,需要思考如何才能够让自己的医馆赚钱,有好的发展。玩法简单,却令人欲罢不能。

虽然模拟经营类型的游戏层出不穷,但从目前能够突围而出的作品来看,当下模拟经营类游戏最能吸引玩家的点是–题材。《江湖医馆》是一款体验医馆生活的经营类手游,中医加上古风的题材,正好击中了当下年轻人的佛系态度及武侠情怀。

今日我们有幸邀请到《江湖医馆》游戏制作团队,一起来聊聊这款火爆游戏背后的故事~

  1. Hi,能否先为我们介绍下贵公司呢?

我们公司是在 2018 年 9 月份成立,名字叫成都瓦瑞尔科技有限公司,刚成立的时候,只有 3 个人,随着公司业务的发展和壮大,目前我们公司已经有 20 个小伙伴了。

2.请问开发的人员规模和研发占比是怎样的呢?

《江湖医馆》相对于我们公司之前做的其他游戏项目来说,功能模块更多,玩法设计上也需要花心思,所以团队资源更多的倾斜到了这个项目组。

当时把整个团队一半的资源分配给了《江湖医馆》项目组,不过借助 Cocos Creator 这款成熟的引擎开发原生游戏,各方面的成本都降低了许多。

3.为什么会想做一款体验医馆生活的手游呢?

从市场方面上来说,模拟经营类游戏用户门槛低,用户黏着度高;另外玩家在游戏的同时,一般渴望获得更多对自己有帮助的内容,社会大众一直比较重视中医养生,所以做中医题材容易引起共鸣。

而从情怀方面来说,我们的团队大多数是 80 后和 90 后,从小就深受武侠影视剧影响,选择中医题材,美术风格上我们就选择了走古风武侠类。

4.如何让不懂中医的玩家也能感受乐趣呢?

我们还原了中医的就诊方式,且基本上不需要什么操作,所以对于没有医学基础的玩家也能正常游戏,感受中医魅力。

另外研发团队的态度就是尊重中医理论,我们也是一边学习一边开发,做到每一个病症,每一种药材,每一份丹药都有史可考,有料可查,经得住推敲。

对医学感兴趣的玩家动动手,查查资料,自己发现丹药配方,并在游戏中获得验证,就会是件很有成就感的事。

5.在开发的过程中有遇到哪些问题吗?

1)问题:当有 20 个左右的 NPC 在场景中移动时,在一些低端机上帧率很低,还会导致手机发烫。

解决方案:通过各种实验方案及排除法手段,发现是因为场景中 NPC 过多,若直接减少 NPC 的数量,会对游戏体验有很大影响。因此我们选择了这种解决方案:把之前的每帧刷新 zIndex 改为了每 15 帧刷新一次。优化结果很显著,且对游戏体验几乎没有影响。

2)问题:在进行版本 1.0.1 热更新后,下个版本需要强制更新整包,但玩家安装新包之后,由于没有清除上个版本的热更资源,导致玩家还是使用 1.0.1 热更新代码和资源。

解决方案:问题出在进行过热更的客户端,本地缓存了热更的代码和资源,在安装新包之后,仍然使用了这个缓存的代码和资源。

于是我们就在 main.js 文件中添加了一个段逻辑,去判断是否需要清除本地的热更新缓存资源,这样我们之前已经进行过热更新的玩家就可以正常进入游戏,并且使用最新的代码和资源;逻辑流程主要是在本地通过设置的 key 值读取版本号,判断这个版本号是否存在,如果存在就需要清除一次缓存并更新本地存储的版本号,反之则不做任何处理。

代码如下:

3)问题:在打开一些功能界面,如游戏中的病症图鉴功能,即使我们已经对 ScrollView 进行了优化,使用了循环列表,但在低端机上打开界面时,仍然会有明显的卡顿感受。

解决方案:经过测试,我们发现是由于游戏的 drawcall 指数猛增,导致了游戏的短暂卡顿。即使当我们已经对 ScrollView 进行了优化,不会因为数据过多而一次性创建几十个结点,但是功能界面的设计上也需要我们至少加载 12 个结点,这已经足以让低端机性能受影响。

我们尝试着使用分帧创建结点的方案,也就是之前一帧需要创建 12 个结点,性能压力比较大,现在改成了每 n 帧只创建一个结点,将性能消耗分摊,发现优化结果非常理想。

4)问题:NPC 移动需要避开家具以及一些障碍物,移动使用了 A* 寻路方案,改动场景中的障碍物及各类家具的位置比较频繁,并且这些改动会影响 NPC 的 A* 寻路功能,每次调整位置需要花费比较多的时间去调整 UI 位置以及填写地图数据。

解决方案:由于对 Cocos Creator 编辑器相关的 API 不是太熟悉,综合开发时间考虑,我们并没有做一个真正意义上的编辑器拓展功能,而是新建了一个场景。写了一个在运行时,可以手动标记每一个格子的信息,这样的操作非常直观,编辑完后会输出一个用于 A* 寻路的 json 数据表,这个功能为我们后续频繁的修改场景布局提供了很大的便利。

6.Creator 在原生游戏画面的表现力如何?

在开发 2D 项目上,Cocos Creator 开发出来的项目品质并不比 Unity 差,并且包体还能小很多;在我们的游戏玩法中,很多地方需要给玩家代入感,比如问诊,抓药等过程的表现。

Cocos Creator 引擎提供了许多简单实用的动画函数,让我们的策划同学更多的去考虑一些玩法表现该如何设计,而不是过多的考虑实现的难度了。

7.游戏后期还有哪些规划呢?

年前武汉刚传来新冠肺炎的消息,作为医馆题材的游戏,我们也想出一份力,战胜新型冠状病毒。

我们推出的“看广告献爱心”活动,玩家热情很高,只用了 3 天就完成了原定 15 天的献爱心计划,搞得策划和运营同学临时加码,捐款金额直接翻了 4 倍。(笑)

后期我们也还会继续优化用户体验:

增加背包系统,使得满地的道具得到整理,操作更加便捷;

增加激活码功能,可以向玩家发放小福利了;

加强游戏内部各系统的关联,以后玩家可以从剧情、信件中获得丹药配方,方便佛系玩家;

增加更多具有收藏价值的信件和更多高级的丹药,增加中国特色的清明节皮肤。

8.选择Cocos引擎,您有哪些话想说呢?

目前我们团队已经使用 Cocos 引擎开发过多款项目了。

从团队培养和产品优势上来看,Cocos 开发的项目包体更小,上手快,官网文档全面,和 Unity 操作理念相似,这让很多只有 Unity 开发经验的团队转型更快了;最重要的一点,也是我们非常看重的,能一键发布很多主流平台,我们曾经有使用过 Unity,对比之下发现 Cocos Creator 的引擎界面和操作习惯能让我们的团队尽快上手,我们也就果断选择了它。

目前发现的不足主要有引擎版本升级不太稳定,偶尔会有一些事件或者图片引用关系丢失。

另外一点其实并不是不足,只是对于 Cocos Creator 的一个期许。就是希望 Cocos Creator 在未来的设计中能够直接在编辑器中运行游戏,并且场景中的结点信息能实时变化,这样更加方便于开发者的开发调试工作。

在此 Cocos 想先感谢以上为我们提出的宝贵意见。

Creator 是一个非常复杂,并且要抹平很多平台差异的引擎,确实我们在新版本中也比较难完美避免 bug 的引入。

细节是魔鬼,但也是 Creator 的根基,我们会继续在效率和稳定中尽量平衡,为维护高质量的跨平台游戏引擎这个长期目标而努力。

升级的兼容性方面,我们也一直很重视。除了 API 的兼容,如果引擎有行为上的差异,我们都会尽量在项目中自动进行适配,确保升级后的逻辑和表现不变。否则也会在版本发布时提供相应说明。

关于引用关系丢失,在测试版比较容易出现,正式版似乎没有收到过同类反馈,如果有的话我们也会紧急发布新版本进行修复的哦。如果后续还有类似的情况,欢迎在论坛吐槽,我们会高优先级改进。

另外关于对 Cocos Creator 期许,我们不得不承认,内嵌的预览调试确实是 Creator 的一个短板。

我们已经在 Roadmap 中加入了对应的卡片,https://trello.com/c/AF96BdiL。负责人 Jare 也表示,争取今年实现。

最后,非常感谢瓦瑞尔科技有限公司接受我们的专访,也祝《江湖医馆》能够取得更棒的成绩!

Cocos Creator 2.3.1 Preview 已发布,更新说明和下载地址请查看 Cocos Creator v2.3.1 正式版已发布 哦。也欢迎小伙伴们继续通过论坛、GitHub、Cocos 企业服务等渠道向我们提交使用反馈!我们希望以这样积极的态度让我们彼此之间的交流形成良好循环,以便更好地打磨产品。

4赞

开发速度确实很快!

1赞

从Unity转过来的,刚开始确实不能在编辑器运行游戏感觉到不适应。运行游戏的时候可以浏览场景里的节点信息确实方便很多。比如涉及到位置尺寸信息或者增删节点之类的bug,输出日志或者断电调试都麻烦了一些,不如一眼看上去的直观。

1赞

调试的话感觉creator比Unity快很多,creator在浏览器里调试简直是为所欲为,想要什么就敲什么指令:grinning:,不像用unity开发时得搞一大堆按钮和假数据测试功能
运行时没有节点树的问题其实也可以通过console敲命令解决(当然有就更好了)
还有的就是语言层方面的优势,感觉c#相对ts的代码量普遍多很多,看着难受。
希望creator的插件生态环境也能跟unity一样丰富,bug再少点,性能再好点,咱们码农就要死而无憾了。

1赞

这个问题2的解决代码没有效果。应该还有什么地方需要改一下:open_mouth:

mark,武汉加油,creator加油~

不错,体验过

支持一下