查看原文
其他

Created with Cocos丨免费榜Top4!3D像素风+5种玩法,这款模拟经营手游如何爆火海外?

C 姐 COCOS 2023-03-16

由于国内游戏版号限制,近几年,不少手游在一边等待版号的同时选择了出海,在海外先行发育并进行调优。杭州每日给力研发的 3D 像素风模拟经营游戏《种地勇者》也是其中之一。该游戏自今年3月起陆续在马来西亚、新加坡、中国台湾、中国香港等国家或地区上线,截止目前在台湾地区 App Store 免费榜最高来到了第4名。团队尚未进行大规模推广,而是集中精力根据玩家的反馈,优化稳定性和产品内容。



在《种地勇者》中,玩家将从零打造家园,在荒岛上盖楼种地、生产物资、洞窟寻宝,同时还要建造防御工事,打败试图入侵的怪物。游戏采用了融合玩法,以建造家园为核心体验,同时包含 RPG+塔防+战斗+养成+放置等玩法要素。丰富的游戏内容、精美的画风、流畅的体验,都成为这款游戏在海外受到玩家喜爱的原因所在。



本次,我们邀请到了《种地勇者》的制作人「卖切糕的买买提」,和我们分享这款游戏的研发历程与技术亮点。



简单介绍一下《种地勇者》的项目背景吧。


项目在2020年11月就立项了。在国内手游内卷的大环境下,我们想做一款中重度的项目,用吸量的美术风格和题材吸引用户、用中度易上手但不失深度的玩法留住用户。因为本人有点种田情节(一些中国人的基因),以往做过这类的经营小游戏,也做过养成类数值卡牌手游,于是就有了一个把模拟经营(留存和用户基础)和卡牌养成(付费)结合起来的想法。


美术风格上,为了省钱选择了 3D 像素风格——当然这也不是唯一理由,经过了一些买量的验证过程后,我们最终采用了 3D 像素并优化了配色,以适应泛用户的审美。


确定项目基调后,我和主程、主美一支3人小队开始了 demo 的研发。在后续一年多的研发中,团队不断扩充人员,到现在已经有20人左右的规模,产品也在多次迭代后稳定下来,走上了运营的正道。


《种地勇者》包含了多种玩法,你会如何定义它的类型?



融合玩法也算是目前的一个潮流了,就我个人来说,我觉得《种地勇者》的核心就是一句话:「我有一个家园,我要和伙伴一起建造和守卫这个家园。」


在家园中,我们想尽可能满足玩家的想象,增加各种让玩家觉得有生活气息的功能,比如现在的种田、钓鱼、饲养动物、伙伴互动和经营建造等,未来还会逐步加入室内装修、伙伴专属剧情等功能,带玩家真正代入游戏世界观,和伙伴们一同生活。


游戏在玩法设计上有哪些差异或亮点?


《种地勇者》的 RPG 元素和伙伴功能是我们很花心思的内容之一。我们设计了有较多机关和解谜元素的洞窟探险,也有强大和花里胡哨的 BOSS,还有需要细心寻找的隐藏密室。在伙伴上,不仅有可以一同战斗的伙伴,还有能够在家里干活的「工具人」,分配好住所和工作后,伙伴们日出而作日落而息,给家园带来更多的生气,同时能大幅减少玩家的手动操作——护肝也是我在设计各类功能时优先考虑的。



游戏为什么会选择出海,并率先在新马地区上线?海外玩家的反馈如何?


出海一方面是因为国内等待版号,更主要的是为了优化产品。我们想先在海外简体中文市场开始运营,简体中文也能避免一些翻译问题,因此选择了新马地区。游戏在立项时就考虑全球发行,因此在美术风格和题材的选择上也都是以全球化的视角去考量。


上线后大部分玩家的反馈都很好,差评大多数是由于游戏性能问题。因为目前东南亚地区的主流移动设备水平大幅落后于国内,很多都还在用国内四五年前的千元机,针对这些用户,需要对游戏性能做更有针对性的优化,这也是我们近期的工作重心。


如果要说出海的建议的话,从我们的经验来说,在海外运营首先得仔细阅读和遵守各种平台的规定,这点很重要,我们就曾因为旧版本违反了 Google Play 的隐私政策而被下架,好在后续沟通解决了。


你认为一款游戏若想在海外取得成功,最重要的是什么?



我觉得最重要的是美术风格和题材,要针对你想要运营的市场去寻找合适的,并用买量数据作为验证。而在游戏性上,全世界的玩家是共通的,并不存在本地化的问题。



《种地勇者》在技术选型时的考量标准有哪些?为什么选择使用 Cocos Creator 进行开发?


游戏使用了 Cocos Creator 3.3.1 进行开发。技术选型时,我们考虑需要一个有成熟的 3D 编辑器布局场景、有高效的编程语言、方便的调试环境,并且可供美术、策划、技术多人开发的跨平台工具。综上标准我们最后选择了 Cocos Creator。Cocos Creator 支持 TypeScript 脚本开发,可以通过 V8 内核的浏览器进行调试,并且能够通过一套代码生成 Android、iOS 客户端。


引擎在3D方面的表现还不错,此外,自定义插件这一块的设计让我们可以自由拓展插件来提高研发效率。组件化脚本也非常高效,我们通过组件化脚本设计了预制体加载器、NPC 加载器、场景预览等工具。


游戏的画面表现十分精致,在自定义材质方面,有什么经验能同大家分享?


GGX


首先,引擎自带的标准材质是 PBR 的,而我们并不需要用到这么复杂的材质,这一方面为了优化性能,另一方面也是希望材质能更加可控,方便我们去做一些定制化操作。其次,我们也没有选择常见的 Blinn-Phong 材质,因为它的材质表现一般,打上光之后非常油腻。所以最终我们选择了 GGX 高光,并进行了优化。


月光


游戏中的白天→黄昏→黑夜

游戏中的白天黑夜切换效果是通过调整主光源和环境光实现的,但是单纯调暗光源会导致场景整体太暗,这是因为缺少月光。因此我们使用 smoothstep 简单做了一个高度上的光照变化,y > 1.5亮,y <0.3暗。


腰灯/Spot Light


优化前(左),优化后(后)

我们给主角设计了一个腰灯,通过球体+GGX 实现,作为夜间的主要光源。引擎自带的 Spot Light 灯光边沿过于尖锐,我们希望灯光过渡带能更加柔和一些。由于在 shader 中实在找不到 penumbraCos,这里就强制写了一个1。


高度雾


在洞窟探险的场景里,我们采用高度雾实现了一些场景雾气,用于烘托场景氛围。此处高度雾的实现与「月光」类似,也是基于模型顶点的世界高度。


游戏的水面与海岸线是如何实现的?



水面渲染主要做了以下处理:

  • 采样焦散贴图作简单的位移叠加;

  • 按屏幕高度做明度递减。


在制作海岸线时,我们评估了几种技术方案:

  • 实时深度贴图采样:性能消耗较大,不同机型深度图精度不一样,表现不稳定。

  • 非实时深度贴图采样:可以用于表现大范围的深度渐变,但在表现小范围的海岸线时精度不够。

  • 顶点着色:引擎场景内没法编辑。

  • 摆点法:编辑方便,性能好,表现稳定。


我们最终采用了摆点法,实现了下图的效果。



游戏中的 3D 自动寻路是如何实现的?



由于游戏的视角固定,所以我们采用了 2D 空间的 Astar 寻路,并开发了自定义的编辑器用于绘制可行走区。


游戏兼顾了高品质渲染和流畅的运行体验,可以分享一下游戏的性能优化经验吗?


CPU 性能方面:

  1. 主要通过相机 Transform 改变动态显示隐藏节点。

  2. 利用节点池,减少实例化的开销。

  3. 将预烘培数据本地化,降低第一次实例化骨骼模型需要预烘培骨骼数据的开销。

  4. 自定义顶点数据和骨骼数据采用 protobuf。


GPU 性能方面:

  1. 通过 GPU Instance 合批相同的模型,减少 DrawCall。

  2. UI 方面通过调整节点层级,合并图集,减少 DrawCall。

  3. 当打开全屏的界面时,3D 相机不渲染。

  4. 减少一屏内顶点的数量,减小顶点着色器的开销。

  5. 着色器浮点数的精度改成低精度模式。

  6. 通过添加特效精简组件,在低端机上精简这些特效。




感谢杭州每日给力《种地勇者》研发团队的分享!Cocos 的目标始终是助力开发者们更轻松地实现创意想法,无论是原生 3D 手游还是 2D 小游戏,希望有越来越多的开发者使用 Cocos 创作出激动人心的作品!


往期精彩

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存