我的订单|我的收藏|我的商城|帮助中心|返回首页
搜维尔[SouVR.com]>服务>案例分享 应用研究>案例分享>软件开发

Unity:事实or谣言,揭秘三种常见网络代码误区

文章来源: 作者:frank 发布时间:2021年12月03日 点击数: 字号:

创建并运营一个多人游戏并不容易,而且与单人游戏相比,往往涉及更多的部分,因为所有的东西都需要与其他玩家同步,以创建一个一致的、共享的世界。

多人游戏开发难题的一个核心部分是网络代码——处理游戏玩家和服务器之间“how”和“what”通信的代码部分。

然而,“网络代码”这个词常常会为人们带来不好的印象,经常被归咎于延迟和糟糕的多人游戏体验。

在本文中我们将带领大家深入探讨这些常见的误解,并一一证实关于网络代码的误解,这有助于推动更多的创作者使用网络代码创建多人游戏。

什么是网络代码?

Netcode指的是多人游戏开发中的“创建”部分,是一个总括术语,指的是游戏中处理客户端和服务器之间联网和同步的部分。

在多人游戏中,服务器和客户端通过网络发送的数据包相互通信。为了在远距离连接的游戏玩家之间创造一个可以共享的平台,如移动角色或生成对象等游戏事件可以以发送数据包的形式同步到其他客户端。负责通过网络发送和接收数据包的部分我们称之为“Transport(即传输)”。

虽然我们可以通过直接调用传输的发送功能来手动发送这些数据包,但这种模式很快会让没有多少多人游戏经验的程序员们难以承受。

网络代码库利用了网络变量和远程步骤调用(RPC)等功能,将发送的数据包从游戏代码中抽离出来。

Unity有两个网络代码包,游戏对象的网络代码(预发行)和实体的网络代码(实验版)。

三个常见的网络代码误区与事实

误区1:“在游戏开发中可以随时转换到多人模式”

谣言:在游戏的开发周期中,多人游戏可以在开发的后期添加到顶部。

事实:多人游戏实施起来很有挑战性。如果你想让玩家在游戏中体验多人游戏,那么你应该在设计和开发中尽早考虑添加多人游戏。

为什么呢?多人游戏几乎触及了游戏的每一个方面,所以它也影响了游戏的发展。例如,如果在一个游戏中有一个库存系统,多人游戏将需要同步库存物品到服务器。

在单人游戏体验中,也有许多相当容易实现的东西,当你试图将它们放入多人游戏时便会非常的困难。

你有没有想过为什么大多数多人游戏使用运动角色控制器,并且只有非常少的物理交互?这些游戏之所以这样做,是因为实现在多个客户端之间共享物理模拟和预测物理模拟是一个真正令人头疼的问题,即使对有经验的开发人员来说也是如此。

这里给出的建议是尽早检查你的游戏功能是否适合多人游戏——尤其是如果你的游戏有一个其他游戏中不常用的独特机制。

误区2:“延迟越低越好”

谣言:对于多人游戏来说,延迟越低越好。因为延迟越低,游戏体验越好。

事实:虽然保持低延迟对于向玩家提供流畅的体验很重要,但提供一致的体验也同样重要。以同步状态来创建一个共享的空间可能需要很少的时间,而这对于游戏中的玩家来说影响可以说是微乎其微。

为什么呢?为所有玩家提供流畅一致的体验并不总是有利于实现低延迟。

提高游戏流畅度和一致性最常用的技术是缓冲。

这里提到的缓冲技术不是立即处理来自网络传入的数据包,而是将数据包放入队列。在每个波动点期间(游戏模拟的单次更新),客户端从队列中取出(理想情况下)一个数据包,并同时尝试在队列中保持一定大小的缓冲元素。

这确保了当服务器每次发送一个数据包时,客户端也总是每次处理一个数据包。

但是为什么要这样做呢?原因很简单,如果客户端立即处理传入的数据包,它不是也会收到一个数据包吗?在完美的网络条件下,这是完全可能实现的,但是通过网络传输的数据包可能都有不同的传输延迟。

每个数据包的往返时间(RTT)的波动我们称为“抖动”。缓冲便是一种增加延迟但减少抖动的技术,我们最终会通过缓冲(增加延迟)以为多人游戏提供更多的一致性从而改善玩家体验。

示例:格斗游戏通常需要玩家以正确的节奏快速按下一系列按钮。玩家通过肌肉记忆一遍又一遍地练习来学习这些动作。为了让格斗游戏更加公平,玩家角色的最终动作与给出的输入保持一致是非常重要的。

那么很多格斗游戏是怎么做到这种一致性的呢?他们以固定的速率轮询输入,然后适当缓冲这些输入。通过这样做,他们将玩家输入一致地映射到游戏框架上。这样会让平均输入延迟增加,但延迟会变得更加一致。

虽然增加更多的缓冲会使游戏更流畅,但在许多情况下,这会导致太多的延迟,玩家最终会感受到他们的输入与屏幕上的游戏动作产生不一致。

这里有一些不同的技术可以应用于获得缓冲的平滑性而没有延迟损失。通过使用官方客户端游戏将玩家角色的输入立即应用到游戏当中,这使得本地玩家的延迟最小化。其他玩家仍然可以缓冲数据,让敌方玩家显示更流畅。

虽然这种方法对玩家来说感觉很好,但它会导致其他问题,因为它使作弊变得容易得多。

对于竞技游戏,可以使用一种称为客户端预测的技术。它所做的是立即应用本地玩家的输入,但服务器也会通过应用相同的输入来计算玩家的动作,并检查客户端是否执行了有效的移动,并在必要时进行纠正。

误区3:“带宽是免费的”

谣言:宽带合同太便宜了,这一定意味着带宽是免费的。

事实:带宽不是免费的,不同地区的成本可能不同,有些地区对使用的带宽收费明显高于其他地区。

这是为什么呢?与商业服务器的价格相比,私人宽带合同通常相当便宜。宽带合同非常便宜的原因是因为大多数人会使用一小部分带宽,而且很少使用。商用服务器则非常不同。它们通常大部分时间都在运行,游戏服务器通常支持数百名玩家的流量。因此,托管公司按每千兆字节使用量收费是很常见的。

这意味着节省带宽对于降低运营成本非常重要。除此之外,拥有一款带宽使用率较低的游戏将让网速较慢的玩家更好地享受你的游戏。

多人游戏中最常见的延迟原因之一是用户家庭网络的拥塞。虽然这种情况经常发生,因为网络上有其他繁重的流量,如视频流,但降低游戏的带宽成本仍有助于改善玩家体验。

打造你的下一个多人游戏

建立一个多人游戏虽然富有挑战性,但在游戏完成的同时也非常有成就感。无论你是在打造下一部《皇家保卫战》,还是一部拥有舒适性的在线合作游戏,了解这些网络代码的细微差别都是非常有帮助的。

电话:010-50951355 传真:010-50951352  邮箱:sales@souvr.com ;点击查看区域负责人电话
手机:13811546370 / 13720091697 / 13720096040 / 13811548270 / 13811981522 / 18600440988 /13810279720 /13581546145

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料