这是游戏聚焦系列第八篇,我们将继续介绍来年及以后的关键产品行动。这一期,我们将讨论Unity Multiplayer Networking(多人游戏联网)的现状、近期发布计划和未来设想。
大家好,我是Kiki Saintonge,是多人游戏团队的产品经理。我们团队的主要工作重心是交付Unity的Netcode for GameObjects解决方案。
我来已经Unity快一年了,但从2013年起我就一直是一名Unity爱好者和独立开发者。我热爱着游戏,尤其喜欢玩大家制作出来的新奇事物。非常高兴能在今天聊一聊我们的多人游戏解决方案,因为许多人已经迫不及待地想在多人游戏开发中使用一个完整和易使用的解决方案了。我们的进展要比你想得更大。
先说个事实:从机制的设计到应用再到测试,制作多人游戏可以变得非常困难。有许多方面需要考虑:延迟、丢包、场景管理、网络传输数据的范围,大部分都非常难以跟踪或模拟。即便是第三方联网方案也需要第三方(第四方?)工具来搞明白究竟发生了什么。
为游戏搭建的联网系统也应该和游戏一样,独具特色又适合游戏体验。
在这个理念下,我们希望将netcode方案打造成足够灵活、可适应所有多人游戏特色,同时又能轻松兼容第三方工具或服务的解决方案。这是netcode方案的基本目标。
还需要注意的是,多人游戏开发经常涉及网络服务和规模,这两个方面通常并不存在于单人或合作游戏里。恰好,我们最近发布的Unity Gaming Services平台包括了Game Server Hosting (Multiplay)、Matchmaker、Relay和Lobby服务。它是个一体化的生态系统,将为你提供所有必须的工具来建立稳固的基础、创造吸引人的体验并驱动游戏增长。
我们已经在今年发布了几款出色的netcode解决方案。我们首个Netcode for GameObjects的主要版本目前已发布于2020和2021 LTS.
这个基于GameObject的Netcode解决方案能帮助你开始制作小规模多人合作游戏。如果你在使用DOTS(Entities)制作游戏,我们也很高兴地宣布Netcode for Entities方案将登陆2022 Tech Stream,帮你制作大型多人游戏体验。本系列的下一篇博文将详细介绍这次发布。
所有这些技术组合为多人游戏开发带来了应用广泛的基础性起点。这些技术能让你走好多人游戏里的第一步。它们同样着重覆盖了关键联网情景,如服务器与客户端的抽象通信方式、在网络上发送对象数据及处理输入。
本次发布的版本还支持几种关键工具,让你能跟踪联网对象的丢包、包大小和延迟。Network Profiler是编辑器内置Porifler的一个扩展程序,而Runtime Network Stats Monitor (RNSM)则是一款可自定义的轻型“Profiler”联网状态视图,可运行于单独版用于测试。
你可以在编辑器内用com.unity.multiplayer.tools包安装这些工具。
所有Netcode堆栈,当然也包括Entities,都基于Transport层建立。这一软件层独立于netcode、可与任意方案组合使用。
Unity Transport Protocol(或UTP)支持Unity Relay和更安全的DTLS,可拓展用户数据报协议。它兼容Windows、Mac、Linux、iOS、Android及所有主要游戏主机。
我们还借助传输包的Debug Simulator属性提供了一些轻型网络模拟功能,让你能在编辑器内测试时模拟限流、延迟或带宽问题。
若想直接使用这个低层级联网库,你可以用com.unity.transport&包来安装。
尽管Netcode for GameObjects还是个新东西,但它已经被用在了数款游戏之中。
Fika Productions和Team17的团队正在制作一款精美的手绘游戏《Ship of Fools》。这款快节奏、“征服大海”的多人合作游戏完全用Netcode for GameObjects开发而成。
我们将通过开发多人游戏工具持续不断地弥补信息差、揭秘网络上所发生的一切。
要让多人游戏开发体验更为优秀,第一步就是推出多人游戏Play Mode。
我们的目标是让工具在进入运行模式时“就能工作”。它需要有类似单人游戏开发的工作流,但还须支持在同一个编辑器进程运行至多四个客户端,每个客户端都接收自己的控制台信息,并且能用联网标签系统作区分。
Network Simulator是另一个值得一提的Transport功能,我们希望用UI来完善该工具,让你能生成延迟高峰、设定ping频率、触发连接/断连,甚至在测试时运行特定的自定义联网情形。
我们计划让Transport包更好地与Burst整合,并支持WebSockets。
建立专用服务器是很多多人游戏的核心,而你需要对无外设服务器有着更精细的控制。
我们已经开始研究专用服务器的工作流。在流程中,你首先需要明白并管控服务器上所用到或用不到的资产,为服务器版选取一定量的内容,以便在往后节省时间和带宽。
想要了解Netcode for GameObjects功能的现状及更多详情?那就来多人游戏联网路线图看看1.0版及以后版本的内容吧。你也能在最近的Unite 2022 Roadmap演讲环节了解Unity生态的总览。
创建多人游戏并不简单,即便手握SDK文档,开发者也很容易在开发时感觉手足无措。
我们的目标是为你提供需要的工具和支持,帮助你为玩家打造出色的多人游戏体验。作为承诺的一部分,我们不仅会提供基本的联网技术,还会呈上文档及教育性模板,比如《Boss Room》,助你理解这些应用。
你现在已经有充足的资源来学习Unity多人游戏方案。
《Boss Room》是用Netcode for GameObjects构建而成的小型合作游戏。整个项目的作用便是帮你探索多人游戏背后的概念和模式。
我们也将在内部继续开发项目,来着重展示Netcode for GameObjects的新特色和可能的用途。
最新的《Galactic Kittens》就是这么一款可玩、开源的2D多人合作射击游戏。
要开始学习Unity的多人游戏工具套,你可以先从下方博文入手:
另外还有我们优秀的社区所创造的资源:
我们希望大家能持续参与游戏聚焦系列并留下反馈。请在多人游戏论坛或这个专门贴里留下任何问题和意见。
访问Productboard来了解产品的详细路线图。你需要登录Unity ID并接收功能性cookie。页面上的每张卡片都能被点开,你能在卡片里了解某个主题的详细信息,并留下自己的反馈。点击卡片,选择主题对你的重要程度,留下自己的意见,然后就能提交。你的反馈将直接被送达到对应的产品团队。
Netcode for GameObjects是一款强大的netcode方案,但如果你想制作一个更大的项目——比如带有多个星系或服务器、有数千玩家同时在线的MMO,那么请关注下一篇游戏聚焦系列博文,下一期将讨论怎样创建更大的世界和更丰富的环境。