搜索 Unity

Games Focus(游戏聚焦):利用多人游戏联网制作和运营联网游戏

2022年11月16日 类别 Engine & platform | 12 分 阅读
Games Focus: Creating and operating connected games with multiplayer networking | Hero image
Games Focus: Creating and operating connected games with multiplayer networking | Hero image
分享

Is this article helpful for you?

Thank you for your feedback!

这是游戏聚焦系列第八篇,我们将继续介绍来年及以后的关键产品行动。这一期,我们将讨论Unity Multiplayer Networking(多人游戏联网)的现状、近期发布计划和未来设想。

大家好,我是Kiki Saintonge,是多人游戏团队的产品经理。我们团队的主要工作重心是交付Unity的Netcode for GameObjects解决方案。

我来已经Unity快一年了,但从2013年起我就一直是一名Unity爱好者和独立开发者。我热爱着游戏,尤其喜欢玩大家制作出来的新奇事物。非常高兴能在今天聊一聊我们的多人游戏解决方案,因为许多人已经迫不及待地想在多人游戏开发中使用一个完整和易使用的解决方案了。我们的进展要比你想得更大。

 

Unity: Games Focus | Cover every aspect of your multiplayer game

不断完善的多人游戏解决方案

先说个事实:从机制的设计到应用再到测试,制作多人游戏可以变得非常困难。有许多方面需要考虑:延迟、丢包、场景管理、网络传输数据的范围,大部分都非常难以跟踪或模拟。即便是第三方联网方案也需要第三方(第四方?)工具来搞明白究竟发生了什么。

为游戏搭建的联网系统也应该和游戏一样,独具特色又适合游戏体验。

在这个理念下,我们希望将netcode方案打造成足够灵活、可适应所有多人游戏特色,同时又能轻松兼容第三方工具或服务的解决方案。这是netcode方案的基本目标。

Unity: Games Focus | Player count evolution GIF

还需要注意的是,多人游戏开发经常涉及网络服务和规模,这两个方面通常并不存在于单人或合作游戏里。恰好,我们最近发布的Unity Gaming Services平台包括了Game Server Hosting (Multiplay)、MatchmakerRelayLobby服务。它是个一体化的生态系统,将为你提供所有必须的工具来建立稳固的基础、创造吸引人的体验并驱动游戏增长。

Unity: Games Focus | Netcode for GameObjects now available in 2020 and 2021 LTS

What’s ready for you today

我们已经在今年发布了几款出色的netcode解决方案。我们首个Netcode for GameObjects的主要版本目前已发布于2020和2021 LTS.

这个基于GameObject的Netcode解决方案能帮助你开始制作小规模多人合作游戏。如果你在使用DOTS(Entities)制作游戏,我们也很高兴地宣布Netcode for Entities方案将登陆2022 Tech Stream,帮你制作大型多人游戏体验。本系列的下一篇博文将详细介绍这次发布。

所有这些技术组合为多人游戏开发带来了应用广泛的基础性起点。这些技术能让你走好多人游戏里的第一步。它们同样着重覆盖了关键联网情景,如服务器与客户端的抽象通信方式、在网络上发送对象数据及处理输入。

Netcode debugging tooling

本次发布的版本还支持几种关键工具,让你能跟踪联网对象的丢包、包大小和延迟。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创建游戏

尽管Netcode for GameObjects还是个新东西,但它已经被用在了数款游戏之中。

Promotional image for Fika Productions and Team17's hand-drawn game, Ship of Fools

Fika Productions和Team17的团队正在制作一款精美的手绘游戏《Ship of Fools》。这款快节奏、“征服大海”的多人合作游戏完全用Netcode for GameObjects开发而成。

我们的前进方向

我们将通过开发多人游戏工具持续不断地弥补信息差、揭秘网络上所发生的一切。

In this screenshot,we have three clients running simultaneously, two that are connected and one waiting to connect. They are all being hosted by the main Editor (in the background) and are visible with their console logs open for debugging.
在这张截图里,三个客户端同时运行,两个已经相连,还有一个在等待连接。游戏皆托管于一个主要编辑器(运行于背景里),带有开放的控制台日志用于调试。

要让多人游戏开发体验更为优秀,第一步就是推出多人游戏Play Mode。

我们的目标是让工具在进入运行模式时“就能工作”。它需要有类似单人游戏开发的工作流,但还须支持在同一个编辑器进程运行至多四个客户端,每个客户端都接收自己的控制台信息,并且能用联网标签系统作区分。

The Network Simulator component attached to the NetworkManager object. It’s showing the connected state, lag spike options, and the customizable parameters available to test specific conditions.
关联到NetworkManager对象上的Network Simulator组件。它带有的连接状态、延迟高峰选项和自定义参数能模拟特定的联网条件。

Network Simulator是另一个值得一提的Transport功能,我们希望用UI来完善该工具,让你能生成延迟高峰、设定ping频率、触发连接/断连,甚至在测试时运行特定的自定义联网情形。

我们计划让Transport包更好地与Burst整合,并支持WebSockets。

管控专用服务器版本

建立专用服务器是很多多人游戏的核心,而你需要对无外设服务器有着更精细的控制。

我们已经开始研究专用服务器的工作流。在流程中,你首先需要明白并管控服务器上所用到或用不到的资产,为服务器版选取一定量的内容,以便在往后节省时间和带宽。

想要了解Netcode for GameObjects功能的现状及更多详情?那就来多人游戏联网路线图看看1.0版及以后版本的内容吧。你也能在最近的Unite 2022 Roadmap演讲环节了解Unity生态的总览。

更多资源

创建多人游戏并不简单,即便手握SDK文档,开发者也很容易在开发时感觉手足无措。

我们的目标是为你提供需要的工具和支持,帮助你为玩家打造出色的多人游戏体验。作为承诺的一部分,我们不仅会提供基本的联网技术,还会呈上文档及教育性模板,比如《Boss Room》,助你理解这些应用。

你现在已经有充足的资源来学习Unity多人游戏方案。

The Boss Room shows a specific approach to creating and networking in Unity for a small-scale co-op game.
《Boss Room》演示了一种小型合作游戏的制作和联网方法。

《Boss Room》是用Netcode for GameObjects构建而成的小型合作游戏。整个项目的作用便是帮你探索多人游戏背后的概念和模式。

Galactic Kittens, a 2D small scale cooperative sample

我们也将在内部继续开发项目,来着重展示Netcode for GameObjects的新特色和可能的用途。

最新的《Galactic Kittens》就是这么一款可玩、开源的2D多人合作射击游戏。

要开始学习Unity的多人游戏工具套,你可以先从下方博文入手:

另外还有我们优秀的社区所创造的资源:

告诉我们你的想法

我们希望大家能持续参与游戏聚焦系列并留下反馈。请在多人游戏论坛或这个专门贴里留下任何问题和意见。

访问Productboard来了解产品的详细路线图。你需要登录Unity ID并接收功能性cookie。页面上的每张卡片都能被点开,你能在卡片里了解某个主题的详细信息,并留下自己的反馈。点击卡片,选择主题对你的重要程度,留下自己的意见,然后就能提交。你的反馈将直接被送达到对应的产品团队。 

Netcode for GameObjects是一款强大的netcode方案,但如果你想制作一个更大的项目——比如带有多个星系或服务器、有数千玩家同时在线的MMO,那么请关注下一篇游戏聚焦系列博文,下一期将讨论怎样创建更大的世界和更丰富的环境。

2022年11月16日 类别 Engine & platform | 12 分 阅读

Is this article helpful for you?

Thank you for your feedback!

相关文章