[Unity Mirror] Ignorance

81 篇文章 31 订阅

https://github.com/SoftwareGuy/Ignorance

什么是Ignorance?

  Ignorance 是一个可靠的 UDP 传输层,它通过 ENet-CSharp 的自定义分支利用本地 ENET C 网络库,为 64 位桌面操作系统(Windows、Mac OS 和 Linux)和移动操作系统(Apple iOS 和安卓)。它还支持一次连接多达 255 个通道和 4096 个客户端。

  ENET 是一个成熟稳定的可靠的 UDP C++ 网络库。 Unity 的 LLAPI 需要更换。 Ignorance 的设计考虑了这一目标——填补空白并为 Mirror 提供可靠、高性能的 RUDP 传输。

为什么Ignorance在Unity LLAPI之上?

  Unity 的旧 LLAPI 效率极低,大量测试表明,在项目中使用 Unity LLAPI 会降低性能。这是由于旧网络代码的设计 - Unity Tech 做出了“设计”决定和糟糕的错误修复,其他开发人员将其视为创可贴。他们不关心性能或错误修复。

  Unity LLAPI 也是封闭源代码,这意味着 Mirror 开发人员无法对其进行改进。Ignorance 的概念由此形成。

谁开发的Ignorance?

  Coburn 是传输的主要开发商。 Oiran Studio 积极地将这种传输方式用于网络游戏项目。它目前也被一些游戏项目使用,您可以在 Mirror Discord 服务器上找到它。

为什么我使用可靠的 UDP 而不是 TCP?

  • 如果您有关键任务(例如,需要从 A 和 B 获取数据,没有例外)
  • 如果您需要完全可靠的网络协议
  • 如果你偏执
  • 如果您正在制作类似 Minecraft 的游戏并且需要让每个人都保持同步

我想了解更多有关可靠 UDP 的信息…

  需要一点解释。 UDP 最好被描述为“粉碎”数据传输协议,这意味着您只需在目的地喷洒和祈祷数据包并希望最好。远程目的地可能会或可能不会收到这些数据包,它们也不会按顺序排列。例如,如果您有一个数据包流:

1 2 3 4 5 6 7

  …然后由于数据包乱序到达,它可能会在另一端像以下任何一种情况一样结束。以下示例中的点表示数据包丢失。

7 6 1 3 2 4 5
7 6 . . 4 . 1
. . . . 1 2 3
1 2 3 5 4 6 7

  例如,假设您丢失了一个包含玩家健康更新的数据包。其他人可能都知道他们受到了 69 点伤害,但该客户端仍然具有旧值,例如 72 点生命值。如果没有可靠的 UDP,您很快就会失去同步。当你不同步时,游戏就结束了——一切都将开始非常奇怪。


排序和可靠的交付

排序

  排序基本上会标记数据包,以便它们在发送时知道它们的编号。因此,如果您将数据包 100、101、102 发送到远程目的地,另一端将按照该顺序而不是不同的顺序(如 101、100、102)重建数据包。如果一个数据包丢失,它将被跳过,但网络库会注意到它丢失并进行补偿。

  可靠模式只是告诉 ENET 在等待远程确认数据包接收时发送此信息,然后再声称它“丢失”。如果 ENET 没有收到来自远程的回复,它仍会将所述数据包分类为丢失,但它会重新传输它们以补偿丢失连接或高延迟情况。如果没有及时确认,可靠模式会尝试模拟一些 TCP 重新发送,但由于 UDP 没有 TCP 协议的所有开销,它会增加一些数据包开销。

  默认情况下,Ignorance 在 Reliable 和 Unreliable 模式下都有两个通道。开发人员可以测试其他通道模式,因为不同的通道模式可能适合不同的负载,但普通人无需担心这一点。Ignorance带有开箱即用的理智默认值。


Ignorance 是否支持 Websockets?

不,不是的。 Mirror 带有内置的 websockets 支持。


我在哪里可以得到Ignorance?

从 Ignorance 存储库的发布页面获取最新版本。只需从您下载的版本中导入 Unity 包。


我在哪里可以获得支持?

  您可以通过在 Ignorance 存储库问题跟踪器或 Mirror Discord 服务器中的#ignorance 频道上打开问题单来获得支持。


我还是不明白这个传输工具是什么,我头晕,求助!

  来到 Discord,我们会尽力用简单的英语解释它。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值