前几天,有个前同事问我有没有Unity相关的开发人才推荐。一开始以为只是常规的游戏开发,看了他给我发的一篇技术文章(
Yahaha移动端是如何实现内嵌Unity引擎的?
),并试玩了一下他们的游戏之后,才发现他们的产品更有“野心”。在谈朋友的
Yahaha
产品之前,我想先说一下国内游戏开发的通用“宝典”。
国内游戏市场在经过20多年的发展之后,已经进入到一个相对稳定的阶段。几乎所有类型的游戏都已经有了稳定的核心玩法和受众。那么在某个品类下,后发的游戏需要通过“微创新”的方式来打破先发游戏的僵局,既能用核心玩法来避免商业模式的踩坑,又能用“微创新”打动核心玩家,分到蛋糕。这种通用的“宝典”可以称之为“X+1”。“X”为某个品类的核心玩法,“1”为微创新玩法。

《剑与家园》在传统SLG游戏中融合RPG元素 大获成功
但朋友公司的产品走的是另外一条路线:UGC社交平台,我自己归纳为"1+X"的模式。UGC的全文叫User Generated Content,也就是用户生产内容。"1+X"的意思是:“1”代表支撑UGC的平台和工具,“X”代表任何由用户产生的内容。
UGC其实并不是一个非常新的概念,相反它是一个处处可见的模式。比如豆瓣、知乎、B站,甚至是苹果、谷歌的应用商店都是UGC平台,所有的用户可以在上面自主的产生符合规范的任意内容。这意味着,不仅玩家之间会产生互动,在玩家和内容创作者之间也会产生大量的互动,携带丰富的社交属性和元素。

《我的世界》中由玩家建造的中式建筑
而扩展到游戏层面也是有大量类似的游戏。耳熟能详的,比如暴雪的《星际争霸》、《魔兽争霸》,《我的世界》以及最近大火的《Roblox》等。如果大家还不能理解话,可以再举个众人皆知的例子《DOTA》。《DOTA》最早便是诞生于《魔兽争霸》的地图编辑器。而像各种自走棋产品则是源自于《DOTA2》的UGC创意。

酒馆战旗模式让《炉石传说》焕发了第二春
之所以说
Yahaha
的产品拥有“野心”,是因为前人的UGC产品都是在PC或者主机平台上进行衍生的,而Yahaha作为跨端的UGC产品,是极富有挑战性和先驱性的。
我本人从事游戏开发很久,非常能够理解UGC内容对于设备性能的不可控性。传统游戏的性能优化都是在已经确定的场景或者人物上寻找瓶颈,然后使用“平衡术”将问题问题转嫁到其他硬件层面。但当我们对UGC所产生的内容都未知的时候,那么对于性能的优化就会变得非常棘手。为了应对未知的情况,就需要挑战工具和框架的性能极限,以及它的稳定性。

Yahaha的多端产品展示
那作为一个“现代化”的移动UGC社交产品而言,一个最重要解决的问题就是跨端。背靠强大的Unity引擎,多端部署自然不是问题。但对于日常开发来说,一个快速、高效、灵活的UI方案也是非常重要的。
Unity的UGUI具备完整的UI解决方案,但对于跨端的产品来说,不同的终端在分辨率适配上会遇到比较大的开发阻碍。同时UGUI在性能和自动化测试等层面也没有较好的实现。
因此,朋友的团队最终选择了将Unity嵌入到Flutter的方案来解决这个问题。一开始听到这个方案我是没有能够理解的,后来查了一下资料才理解了Flutter的强大之处。

简单来说,
Flutter 是 Google 开源的应用开发框架,仅通过一套代码库,就能构建精美的、原生平台编译的多平台应用。
在我看来它有如下的优势:
-
开源框架,能随时掌控自己的实现和效果。
-
无需再针对每个终端做UI的分辨率适配。
-
原生平台编译,拥有更高的性能。
-
集构建、测试和发布于一体,更好的保障开发过程和质量。
但
Flutter
毕竟只是一个跨平台UI解决方案,如果想要配合使用Unity的能力,还需要打通Unity和Flutter的兼容性。我一开始想的是,Yahaha团队应该需要修改Flutter的源码,将其包装为库交给Unity加载。但实际上朋友团队却用了一个反向思维,将Unity作为库嵌入到了Flutter中!当然能力也是Unity自身支持的
UAAL
的功能(Unity as a Library)。

解决了跨端问题之后接下来要解决的资源问题。众所周知,漫长的游戏下载和安装时间会极大影响玩家体验,所以一个即点即开的体验是需要努力保证的。
这块的技术和游戏开发比较接近,即把游戏包当成一个“壳”,只打包最小的资源量,玩家在下载了这个最小包之后即可进入游戏。虽然思路没有革新,但是我比较惊讶的是他们的初始包只有完整包的3%的大小,这是大多数游戏都无法做到的。进入游戏之后,再通过资源服务器将UGC内容流送到玩家手机,完成边玩边下的游戏体验。
方案听起来比较简单,但这背后却涉及一些很重要的
asset streaming
技术。包括:
-
精细化拆分所有的游戏资源,并进行归类
-
高效的自定义序列化的格式保存资源数据
-
逻辑和资源的分离,以便首包代码能够正确执行
-
完整的资源校验逻辑,保证服务器资源和本地资源的完整性和一致性
-
平衡下载,让资源在下载的过程中不会影响到玩家的正常游戏体验
以上。当这些都能妥善处理的时候,玩家才能在手机端自由的浏览和游玩其他玩家所创建的游戏和关卡。

当然,对于一个UGC内容平台来说,创作工具也是非常重要的一环,Yahaha即将推出的Studio就扮演着这样的角色。
如果我们将大多数游戏假定称之为“鱼”,代表的是最终成品是一个既定、已知的游戏或者玩法。那么Yahaha的平台,就可以称之为“渔”,代表的是一个通用的平台和工具,可以自定义生产新的游戏和玩法,甚至是其他用途的应用。
在
Medium
上,有很多关于Yahaha的内容介绍,其中有一篇介绍了Studio的文章:
如果总结一句话大概就是:
YAHAHA Studio是一个无代码的3D内容创作工具。

由于工具是面向所有玩家而非专业开发者的,所以,团队特意将跟代码相关的复杂逻辑包装成简单的游戏资产,通过摆放场景、地形、资产等方式即可完成关卡或者其他任何你想要的内容。开发团队还贴心的给所有使用者提供了若干的示例场景,以便能够更进一步激发玩家的创作灵感。
当完成了一个自己的作品之后,只需要保存并点击发布,即可让所有其他玩家在APP上看到你所发布的内容。

所以,毫无疑问,Yahaha在这个时间点上,在移动的平台上是一款具有技术创新,和玩法先驱性的产品,通过同时提供App和Studio的方式,让玩家自己成为创作者。有Unity的UAAL特性做背书,产品的性能和设计有了非常大的灵活性。当然从另外一个层面上来说,Yahaha也成功地拓展了Unity的生态环境,为UAAL的使用场景增加了一个成功的样例。
参考资料: