柠檬友玩

首页 > 游戏资讯 > 正文

20分钟开发一个200人的FPS?网易5000万美元的投资太不可能了。

时间:2023-01-03 05:56:01

APP永久免费入口

近年来,游戏开发工具越来越高级、越来越简单,但对于游戏开发者来说,想要制作出万人对战的大型MMO和竞技游戏,仍然面临着不少技术挑战。

上次,GameLook在介绍了Hadean和EVE实现1万5000人对战的事例后,提到了另一家更早拥有类似技术的公司。 这是2017年从软银获得5亿美元巨额投资,2018年在网上冲浪获得5000万美元投资的英国伦敦“超级独角兽企业”Improbable,小团队可以制作更加简单成熟的游戏现场展示了Improbable公司创始人Herman Narula、共同创始人Rob Whitehead和工程师Jessica Flak在20分钟内通过Unity引擎开发200人FPS游戏的过程,据该公司称,将有1万人的网络游戏对战

20分钟开发一个200人的FPS?网易5000万美元的投资太不可能了。

以下是Gamelook总结的演讲内容。 我叫Herman Narula。 是Improbable公司的创始人兼首席执行官,5年前成立于英国伦敦的一家酒吧。 我们的目标是让开发者们用更简单的方法制作多人网络游戏。 简单来说,我们做的SpatialOS是一个多玩家游戏开发解决方案,是解决基础设施、网络问题的平台,做Unity、幻像引擎、Crytek等主流引擎的插件今天主要通过实际案例,展示我们的技术能实现什么效果,同时也介绍我们的公司。 随着对互联网的投资,我们可以支持中国的开发者,我们在中国上海设立了办公室。

在基础设施方面,我们与更多供应商合作,包括与谷歌的合作关系,但目前仍支持其他云服务,因此使用SpatialOS时可以从各种云服务中自由选择。 还有一个大新闻,我们在加拿大成立了内部研发工作室,由原BioWare总裁Aaryn Flynn领衔,团队成员有《龙腾世纪》、《质量效应》、《圣歌》、0770 例如,千人战术竞技游戏《孤岛惊魂5》、Josh Holmes、他的团队开发的《WipeOut》等产品都有很好的效果。 我们发现,许多人希望有足够的空间以更方便的方式创造多人游戏体验和进行创新,而不是为了创造更大的世界活动。 接下来把舞台交给Rob。 他从技术方面介绍SpatialOS。 Rob Whitehead (联合创始人、首席产品官)首先介绍SpatialOS。 用这个技术能做什么? 第二部分,谈谈2018年技术方面发生了什么变化,取得了什么进展,以及将来会发生什么变化。最后一部分将在舞台上现场展示demo。 这是用本地的GDK开发的,包括概念上的东西和引擎功能的使用在内,可以看出真的使用了API。

可开发多人游戏的云平台:在SpatialOS的结构中,SpatialOS就像Herman说的那样,可以提供研发、主机以及很多在线多人游戏的解决方案

首先,说明Hosting功能。 游戏不需要在专用的服务器上运行。 你只需要在我们的服务器上运行就行了。 游戏运行时,我们负责这些部署的运行时间。 第二个功能是在线服务。 现代网络游戏不仅运行游戏系统,还包括网络匹配、系统玩家数据和完美的实时体验。 如果其中的任何一个功能发生了问题,你需要很长时间才能解决。 这些我们都参加。 工具是非常重要的要素。 你需要有内部工具来探索这个平台。 我们也提供大量的工具。 我们的目标是为你的研发提供便利,而不是提供大箱子。 最后一个功能是独特的网络堆栈,可以尝试很多疯狂的想法。

此图的左侧显示了大多数游戏的服务器体系结构模型。 无论是战术比赛还是MMO,目前大多数游戏都在服务器端有自己的服务器,运行您的游戏引擎版本并连接到客户端。 当你体验比较小的高保真度时,那是一个很好的解决方案,比如32人、64人,作为100人战术比赛的时候,可能要牺牲一些性能。 但是,如果有更多想做的事情,比如加入持续出现的AI,增加玩家数量等,就会碰到个别服务的天花板。 所以SpatialOS的解决方案是,虽然你还有服务器和客户端,但是不是单一的服务器,有很多,这些服务器可以实时合作支持更大的游戏世界。 那么,这是如何实现的呢?

此图从结构角度显示了SpatialOS的工作方式。 虽然你还拥有客户端和服务器,但是它们都集成到了我们的SDK中,为他们增加了Networking的能力。 客户端像往常一样连接服务器。 从技术上来说,它链接到了SpatialOS Runtime。 因为这是分发系统而不是专用服务器,所以可以处理更多的客户端请求。 底部的这些服务器直接链接到runtime,因此多个引擎的服务器可以同时协作。 然后,客户端可以接收更多的信息,而不是只靠单个服务器承担所有的压力。 SpatialOS是非常强大的研发工具,但并不一定需要使用所有的功能。 看制作什么样的游戏,就像给你一个大箱子。 想探索多少,取决于开发者。 在某些情况下,你可能没有预算,想加入AI角色。

SpatialOS支持所有类型的游戏

因此,从规模上看,SpatialOS可以支持10到10000人,1000人可以同时交互,或者在匹配之前互相交易。 这些匹配无论是传统的100人战术比赛,还是4人PVE都可能没有问题。 在游戏世界模拟等级上,可以创造高保真世界,也可以进行传统的PvP射击。持久性是指游戏世界的状态可以持续几个月甚至几年。 当然,也可以创造传统的游戏世界。 开发者的选择自由度很高。 以上是SpatialOS技术的概要,接下来介绍酷的事情。 这也是我最喜欢的事情。

SpatialOS能做什么: 6000人吃鸡,2万MMO是2017年第一个版本的时候,我们的Runtime能处理1000个MMO,当时每秒的操作达到25万,2019年3月我们每秒可以支持600万操作,这还只有一个。这意味着什么,比如说,可以进行最高支持6000名玩家的高保真战斗游戏。 或者,降低保真度可以支持更大的用户数量,例如2万个MMORPG场景。

在建立了一个大世界之后,我们需要让开发者有工具实时了解这个世界发生了什么。 例如,该工具可以跟踪所有玩家、所有AI的位置,以可视化形式看到这个游戏世界发生的一切。 SpatialOS的另一个有趣的功能被称为Query-based interest。 当有一个能容纳数千人的游戏时,如何知道每个人看到的是什么是一项复杂的任务。 因为每个人都看不到一切。 这个工具是我们的解决方案。

通常,在MMO游戏中,当角色在游戏中行走时,泡沫般的范围会随着角色移动,在特定距离内玩家可以看到游戏世界中的东西,但在其他距离内看不到。 该工具可以让玩家自己决定所看到的游戏世界是什么样的,展现出多远、多忠实。 例如,你可以站在山上,用望远镜看山下的数据。 甚至树上的苹果,这些都可以实现。

另一个值得探索的是在线服务。 玩家进入游戏后,需要考虑的事情太多了,比如匹配、持续的玩家数据、道具栏等等。 但是,并不一定有足够的设施来支持这些服务。 也许只能做其中的几个。 我认为这些是开发者下一个需要的功能。

2019年,我们要做的事情有两件。 首先,给开发者们一个可以构建这些服务的环境,让开发者可以顺利地支持各种在线服务。 我们还希望提供源代码,以便更轻松地执行这些功能,包括匹配、玩家文件、player auth、数据库集成和实时管理。 GDK for Unity是为Unity引擎制作的游戏开发工具包。

在性能方面,SpatialOS是一项非常好的技术,但我们经常会考虑如何与Unity引擎配合使用,以及它如何帮助开发人员解决多人游戏中的研发难题。 我们所做的不仅仅是制作了Networking堆栈,还制作了一套完整的支持现代多人游戏研发全过程的工具。 在这个GDK上,您可以获得高性能的游戏,并快速重复。 最后,有现成的玩法调整。 从结构上来说,这张图可以说明我们的GDK是如何工作的:

最下面是我们的GDK Core,直接集成在Unity中。 更上面的是功能模块,针对很多难的功能制作开源内容。 可以通过FPS Starter Project功能快速制作自己的游戏,包括角色移动、同步转换、可射击武器、角色健康值、玩家生命周期等。 接下来,让工程师Jessica Flak向您展示GDK的完整使用流程。

20分钟内使用Unity制作200人的FPSJessica Flak。 在开始展示demo之前,让我们先了解一下SpatialOS的一些概念:

首先是工作器。 它指的是客户端或服务器上的实例,可以在服务器或客户端上以任何逻辑执行。 这些工作器连接到部署。 后者指向你的game instance,所有需要在客户端和服务器端同步的东西都存储在deployment中。 保存在deployment中的物体称为Entity;保存这些物体数据的称为Component; 最后,Event/Command是指workers可以发送和接收的信息。

接下来,我们来看看Unity的fps starter项目。 源代码可以在GitHub上下载。 我们的GDK支持许多游戏开发所需的功能和工具,您可以自行决定使用哪些功能,包括酷睿是发送和接收所需数据的功能,以及GameObject Creation模块可以创建游戏中的物体。 这取决于制作什么样的游戏。

此外,还提供了SpatialOS工具栏。 也可以直接在Unity中创建服务或直接运行服务。

首先,让我们看一下Unity的工作器结构。 你有很多场景。 每个场景由工作器组成。 例如,客户端场景、游戏逻辑场景等。 由于这些场景实际上包含多个工作器,因此向游戏中添加物体的方法是添加场景。

正如我之前提到的,我们有Inspector功能。 他能让你实时看到游戏内的情况。 例如,我们现在在游戏中有两个玩家。 在右边可以看到你在使用哪个workers。

当我们回去连接游戏时,你会看到另一个玩家在向我的角色射击。 Rob Whitehead :连接到客户端时,它还会同时连接到服务器,因此您可以在编辑器中这样做,并轻松地进行调试。 Jessica :首先,我们来看一下数据在SpatialOS中是如何表示的,以及workers是否可以相互交流。 为此,我们制定了纲要。 您可以定义要使用的组件类型。 例如,健康值component。 我们已经加入了玩家Entity。 每个健康值component有两个fields。 一个是现在的健康值和被枪击后的健康值的变化和获得的健康值,另一个是最大的健康值。

我们加入了command Events,以便其他workers可以了解健康值变化后的信息。 这些架构完全位于Unity之外,因此也可以用于幻想引擎,并且无需使用任何引擎即可与GDK兼容。

SpatialOS工具栏还提供了代码生成功能,允许Cshell Project生成所有与健康方案相关的内容。 例如,我们的HealthBarHandler包括多个SetHealthBar,显示效果取决于剩下的健康值,目前状态下没有任何变化。

添加名为Require的属性,以便可以从SpatialOS接收数据。 在此处添加HealthComponentReader,并分为Reader和Writer生成两种类型的Objects。 Reader允许读取HealthComponentReader

让我们回到Unity Project。 此时,健康值的变化会以视觉方式显示出来。 我还没有在这个demo上做别的东西。 根据需要可以添加必要的功能。 因为可以同时连接服务器和客户端,所以多人游戏就像独立游戏一样简单。 这是我们在Local上开发的做法,将来还会增加云功能,你的工作室成员可以远程加入游戏进行测试。 或者,也可以让朋友和家人来测试。 在用户数量方面,我们最多支持2000人。 同时测试。 谁都可以下载自己做。

在编辑器界面中,您可以通过选择SpatialOS工具栏、build for cloud和all workers来实现。 下次打开deployment launcher时,可以将所有东西上传到云,以确保一切正常运行。

调整了数值后,可以返回Overview界面,查看游戏的状态。 目前连接了200个Unity客户端,可以看到其他想要使用的高级参数。

现在请看logs页面。 它包含SpatialOS和其他工作器发送到SpatialOS的所有log,因此可以很容易地创建调试。

我想给你看的第二页是Metrics。 这样可以了解更多部署信息,包括当前没有workers错误、连接了许多wokers以及各种workers的延迟状态。 右上角的dashborads可以显示更多的数据和执行更多的命令。

最后是World页面,可以看到很多玩家实时在游戏中的状态。

这个页面的Launch按钮可以直接进入游戏观察发生了什么,共享按钮可以发送给想邀请测试的人。 Rob whitehead :关于这个demo,我们被问得最多的问题是手游。 我们在PC和主机上演示了游戏,高保真游戏的手游设备需要适应。 我们的技术已经可以实现对iOS和安卓的支持,而且支持3G、4G和wifi网络。 用智能手机展示demo效果吧:

如您所见,SpatialOS现在可以支持跨平台游戏。

总结Herman,最后,我想简单谈谈其他领域,比如商业。 在了解了技术知识之后,很多人关心的可能是我们如何收费。 在这里,可以简单地说明商业模式。 因为我们是另一个基础设施供应商,所以合作方法有很多种。 现在由我们选择合作方法,但将来你们也可以根据情况改变。 这种灵活合作的好处是可以降低开发人员的成本

从左到右: Rob Whitehead、Jessica Flak、Herman Narula

还有一个我想说的,为什么要和我们合作? 在过去的五年里,我们做的不仅仅是服务,还有专门针对基础设施的行业的合作者。 例如,我们的开源工作,从我们发表的调查报告,到开源工具,我们的开源设施在谷歌和亚马逊上也有使用。 另外,SpatialOS的优势在于集中在API上,使用门槛较低。 你可以做任何你想做的创新,也可以卖用它做的项目。 我们不是只向你展示黑科技的公司,而是真正想和你们一起合作的伙伴。 你们可以通过社区、Discord和我们联系,也可以在伦敦或上海见面聊天。 谢谢你。