针对我们多年深耕的游戏开发领域,Unity中国今年陆续上线了一系列主要面向国内游戏开发者的云服务解决方案——Unity Online Services简称“UOS”,将助力开发者一站式解决资源分发、服务器托管、多人联机、玩家通行证等问题,大幅节省游戏开发成本。在Unity技术开放日北京站技术专场中,Unity中国开发者服务负责人毛力锐先生详细介绍了UOS云服务的产品特性,并分享了未来的产品路线。
毛力锐:大家好!我是Unity开发者负责人毛力锐,今天非常高兴站在这里和大家分享一站式游戏云解决方案Unity Online Services。
首先,为什么开发者需要游戏云服务?这也是我们做UOS之前问自己的问题。我们是怎么思考的?答案非常简单粗暴,就是“省”——省时间、省精力、省钱。“省时间”,省的是开发时间,让开发者把时间放在游戏创意方面,节省后端开发时间;“省精力”,当游戏上线以后,开发者就不用花很多时间管服务器运维、服务器伸缩这些事情;“省钱”,省下了开发时间,就节省了开发成本,同时,我们提供的云资源价格非常具有竞争力。
现在我们来看一下游戏云服务市场的现状。左边是大厂商提供的服务,有Azure的Playfab、亚马逊的GameLift、谷歌的Firebase、华为的花瓣开发者服务、腾讯的GCloud,这些云服务本身有大厂背书、广泛的开发者基础。但是同时存在一些问题,比如一是海外服务在国内节点数量比较少,所以使用起来时玩家体验并不是特别好;二是云服务SDK主要是面向传统的APP开发,Unity的开发者使用这些服务时没有感受到大厂对他们的关怀;三是如果开发者绑定了云服务,就很难实现多云的融合。
举个例子,在上上周的周末,国内的一个云厂商整个上海地区的虚拟机生成全都挂了,我们也被波及到,当我们收到这个报警后,立刻将这些资源分配转移到另一个云厂商上,帮助游戏开发者极大地减少了损失。如果锁死一个云资源的话,可能那天晚上的整个游戏就没法对战了。
看完云厂商的服务,我们再来看一下渠道和商店做的事情。渠道和商店很有动力提供这些云服务,吸引开发者把游戏上架到它们的平台,它们来获得一些收益的分成。因为它们更贴近游戏玩家的需求,所以它们做的SDK相对非常友好,提供的功能也跟游戏相关。但是也有一个非常严重的问题,就是各个渠道之间有互斥,因为这些渠道之间存在排他性,开发者想将游戏上架多个渠道、多个平台,就需要一家一家去对接,非常浪费精力。
综上所述,游戏云服务就是游戏引擎命中注定、天命所归、不得不做,一定是我们来做的事。对Unity来说,我们的立场非常坚定,就是站在开发者这边帮助开发者成功,所以这件事情就是应该Unity来做。
我们快速看UOS现状,UOS是“Unity Online Services”的缩写,目前有8个:CDN(资源分发)、Multiverse(服务器的托管)、Passport(玩家通行证)、Sync(多人联机)、UPR(性能优化)、Device(真机测试)、Func(权威逻辑)、CRUD(数据持久化)。
我们看一下UOS开发者后台,在界面右边是云服务开发平台,它上面主要功能是开发阶段使用的,比如UPR性能诊断、云真机云端测试、云编辑器和云桌面,都是游戏开发过程中用到的可以提高效率、节省时间的工具。中间是游戏上线可以使用的服务,就是CDN、Multiverse、Sync、Passport、Func、CRUD共6个服务。
接下来我们简单看下每个服务究竟在做什么?可以给开发者提供什么样的价值。
云真机。因为Unity本身是一个跨平台的引擎,云真机的目的是方便大家在统一的平台上对各种各样的设备进行测试和管理。我们把重心放在移动设备、车机HMI和VR这三类设备上。
我们从跟游戏测试人员深入交流中发现,现在传统云手机的网站都是面向传统APP的测试,都是基于网页的鼠标点击,但是游戏里很多都是要双手操作、多点触控,所以我们做了一个在微信小程序里直接扫码,然后就可以在自己的手机里做远端的游戏控制,过程不需要下载额外的安装包,打开速度非常快,极大方便测试人员在云端各种设备上进行测试。
同时,我们的云真机还支持私有设备接入。现在测试开发人员每个人手里都有几台手机,平时借来借去,还要找部门登记,非常麻烦。Unity云真机私有接入这个功能是在电脑上直接执行绿色程序,将你的设备插上去。这个设备可以是手机、pad、AR设备,这台设备自动进入组织管理里,公司所有员工都可以看到这台手机并远程使用它,这样就方便把公司零散的设备通过一个平台集中管理起来,提高工作效率。
UPR是一个综合的性能分析解决方案,它主要提供的价值是通过一次测试,将各种各样性能分析工具的数据汇集到一起,把数据对齐,在统一的报表里展示出来。UPR现在已经有非常多用户在使用,随着用户不断增多,给我们的反馈越多,需求越多,迭代越快,用户就越多,形成了非常正向的反馈。现在URP已经完成了50万次有效的测试报告,累计测试时长已经达到6万个小时。
Multiverse是一个服务器托管的综合解决方案,它主要面向的是开房间对战类型的游戏,它有几个特性:首先是自动缩扩容,如果一开始预备太多机器,但是玩家人数没有达到预期,会产生资源浪费,Multiverse可以按需缩扩容,根据玩家人数动态调整方案,既可以省钱,又可以避免服务器阻塞。
二是原地升降配,一般我们分配一个服务器时,都会限制它的资源,比如它的CPU核心数和内存使用量,但是有些游戏很特殊,一局游戏过程中使用的资源可能并不多,但是它在某些时候需要有大量的CPU计算。如果一开始给它分配太高的CPU,那么整个过程就显得有点浪费,但如果分配的CPU不够多,在运行这些耗时操作时玩家体验非常差。所谓的原地升降配就是指在平时用比较少的CPU保证游戏正常运行,等到需要高耗时操作时将CPU动态拉高,执行完后将CPU还原。这么细粒度的操作是为了在保证玩家体验的同时,最大程度减少服务器的开销。所以Multiverse对资源的管理非常极致,最低可以低到0.1核的CPU管理。
三是多地域和多云。中国幅员辽阔,我们支持成都、广州、北京、上海的四个地域集群部署,确保每个地域接入速度有保证。如果锁死一片云,那片云发生了极端情况,比如上海地区服务器都崩了,就没有任何容灾方案。Multiverse后面有多片云,如果出现极端情况,我们可以实现多云切换,确保游戏受影响最小。
四是基于Docker容器管理,每局游戏不会互相干扰。
五是我们提供对战匹配功能,游戏开发者可以根据自己的业务逻辑设计很复杂的匹配规则,将玩家撮合到一台战斗服上开始比赛。
Sync是一个多人联机数据同步的服务。它主要分为两种模式,第一种是Realtime,第二种是Relay。Realtime主要核心解决的问题是数据交互这件事情,解决一个房间内所有玩家的数据交互,比如玩家的位置、动作、状态等,同步这些信息。我们的目标是打造一个能承载非常多人的房间,并且支持高并发和低延时,尽可能将上海地区的玩家延时做到10毫秒以内。目前支持数百人的超大房间,接下来还会在此基础上做支持千人甚至上万人的解决方案。
第二个是Relay的模式。Relay是中继服务器,我们做了跟现有优秀框架的集成,一个是官方的Netcode,还有一个是Mirror。现在用Netcode或者Mirror开发的游戏只需要拖入sink的package,做一些简单的配置,就具备了后端的开房间、数据同步的功能,接入非常方便。接下来会做Netcode for ECS的集成,这也是为了刚才说的超大房间做准备。
CDN的意思不是说Unity自己做CDN,而是Unity对接很多CDN厂商资源,帮助开发者更轻松把资源托管到云端。这里分两种,一种是游戏资源,我们跟Addressable、xasset、YooAsset这些非常优秀的管理软件对接,开发者用这些软件开发完之后,不需要操心怎么把资源传到云端,只要Unity一键上传,同时提供命令行的方式。同时,我们还提供资源版本管理的功能,就是资源传上去之后可以有测试版、发布版,如果发现不对还可以回滚,这些事情全部可以在这个服务里做到。
另外,跟热更新框架进行对接,比如ILRuntime、HybirdCLR、xLUA,可以让开发者代码更新变得更轻松,这个服务的主要目的是帮助开发者把资源管理和代码管理统一在一个服务里,以相同的方式进行处理。
因为UOS的产品不是孤立的,所以每个产品之间都有交叉联动。比如CDN里我们就将UPR的一个AssetBundle检测和资源视图的分布嵌到里面,也就是说开发者把AssetBundle传到云端之后,可以在CDN里直接查看这些AssetBundle之间的冗余关系,没有必要再用工具重新跑一遍。通过分析这些隐式冗余,找到不合理的打包方式把它解决掉,从而解决包体、解决下载的开销,这是CDN和UPR之间的联动。
UOS Passport是我们这周内会上线的一款新服务。首先,它提供了开箱即用、灵活配置的登录系统。所有的游戏都绕不开登录这件事情,国内主流的登录渠道就那么几个,我们把它所有的功能,包括用户协议、实名验证、短信验证、微信登陆、苹果登陆,全部做到一个包里面,同时提供精美的登录框。开发者只需要把它拖到自己的场景里就获得了通行证的能力,同时也获得它背后的一套玩家管理系统,包括角色管理系统。
Passport不仅仅是登录,从登录开始我们提供了整个玩家的体系。接下来要做的事情是将游戏中常用的模块一个个装到Passport里,比如好友、群组、社交分享、礼包、存档、排行榜、成就、实时推送等等,这些功能现在是以许愿的方式放在首页,根据开发者对每个功能需求的喜爱程度,来调整我们开发的顺序。
UOS Func。这个看上去和云函数、无状态的status functions有点像,但又不完全一样。我们发现传统的云函数基本都是不面向连接的,都是基于HTTP Request的无状态操作。Multiverse解决的是战斗服托管,战斗服生命周期比较短,一局游戏一般半个小时,最多一个小时。但是逻辑服是永远存在的一个服务器,所以整个Func是基于UOS Multiverse打造的一个专门为游戏逻辑服做的服务。
我们发现,很多Unity开发者并不具备后端开发经验,更不用说运维经验了,对 load balance、自动缩扩容、灾备、故障转移等没有概念。他们可能会开发后端逻辑,但是对部署不是很了解。那么当你有一个服务器在本机、在单机已经跑通了,开发者就可以把这个提交到我们平台,剩下所有跟运维相关的事情,如滚动部署更新等全部由我们帮你做。开发者把游戏服务器提交上来以后,我们会给你一个游戏end point域名,接下来你调用你的逻辑函数就可以了。并且这个游戏服务器支持长连接,跟传统的云函数不一样。同时,UOS Func还会跟Sync做深度集成,UOS Sync目前主要做的是数据同步,有些元宇宙或者项目还是需要后端的权威性逻辑,Func可以为Sync提供深度整合,成为既具有数据传输,又具有后端校验逻辑的一个完整服务。
最后一个服务是CRUD。名字起得非常通俗,就是“增删查改”。不管做什么应用,增删查改是逃不掉的事情。这个产品的主要目的是将各种类型数据库的增删查改这些操作封装在统一的SDK里,让开发者在使用的时候没有必要再去了解每个数据库的使用细节以及对接方式。我们先会做四种类型数据库:关系型数据库、文档型数据库、对象型数据库、时序数据库。优先做文档型数据库,用来存游戏数据,比如背包数据、玩家数据、卡牌数据等;对象型数据库会存一些稍微大点的,类似存档文件这种二进制数据;时序数据库一般是用来保存游戏中的分析型数据,比如在某个关卡卡住了或失败,用来做后续后台分析。
说到数据库,就绕不开它的高可用、水平扩展这两个最关键特性。游戏开始时玩家数量不多,产生的数量也不多,但是游戏如果不小心爆了,数据突然激增,有些数据库可能就绷了。我们要做的是让开发者不用操心这些事情,它所有的水平扩容全部由我们来搞定,如果在一个地域,数据库出现了访问故障,我们会帮你做故障转移。开发者要做的事情是拿SDK调CRUD接口,后续的所有数据托管全部由我们帮你搞定。就算是再小的开发者,也能够通过这个服务获得大厂的运维能力,这就是我们想要达到的目标。
接下来说一下UOS的几种使用方式。网站 uos.unity.cn 里属于共享云模式,所有开发者都可以在上面自助接入。经过几番打磨,我们现在的文档和Demo已经非常容易,开发者照着文档从头到尾走一遍基本可以完成服务接入和使用。
第二种模式是专享云模式,如果你觉得游戏一定会火,可以联系我们,我们会开辟专属云资源空间,比如专属数据库、专属服务器、专属集群、专属CDN,各种专属的桶,里面的数据都是你的,但也是托管在我们的云端,只是你的数据和别人的数据不用混在一起了。
第三种模式是自有云资源,其实就是“尊享模式”,大厂本身手里有很多低价云资源,这时又想使用UOS服务的话,我们提供了一个UOS Stack技术栈,开发者只需要把云资源帐号开放权限给我们,可以把技术栈部署在自己的云帐号上,这样所有的数据都是跑在你自己的服务器上,也完成了监管方面公司内部的数据要求。
UOS支持国内和海外,如果有一些想出海的游戏,也可以来联系我们。我们今年的目标还是重心放在国内,因为我们要确保所有的服务打磨好,接下来就可以出海。使用模式和前面是一样的,海外也可以提供共享、专享和尊享这三种模式。
回顾一下,UOS目前规划8个服务,已经上线的是6个,CRUD和Func预计在Q4之前上线。
未来我们会根据开发者诉求不断迭代,开发者需要什么,我们就做什么。所以UOS不是封闭的,它是不断延展拓展的一套服务。UOS会倾听开发者的声音,希望大家有需求可以联系我们,开发者需要我们做什么,我们就帮你们做什么。
我们认为,云服务就是Editor License的一个云端延伸。Unity Editor是一个桌面端的软件,它开发出来的程序是跑在客户端上,但是现在已经没有纯粹的单机游戏了,哪怕是非联机的、非多人对战的,它的数据和逻辑也都是放在云端的。所以我们认为“Service是License的云端延伸”这个逻辑非常通顺,未来会和Unity Editor做更深入的集成,开发者可以在Editor直接控制云端服务的配置,更加丝滑。
这里截取了一部分使用UOS中一个或多个服务的案例。如果大家想了解更多关于UOS信息,可以登录网站 uos.u3dcloud.cn ,了解更多信息,通过自助接入的方式体验我们的服务,或给我们建议。
也可以通过以下网站 联系我们 提出诉求,比如想要有专享云资源部署,或者企业尊享的云资源部署,我们会有专人对接大家的需求。关于在网站上标出的刊例价,如果你觉得你的游戏用量很大,可以联系我们获取更低折扣。右侧是QQ群,大家可以扫码讨论使用问题以及建议,我们会有专人在里面收集大家的反馈。
谢谢大家!
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐