[Unity Mirror] Interest Management

81 篇文章 31 订阅

英文原文:

https://mirror-networking.gitbook.io/docs/interest-management

  在制作多人游戏时,第一个明显的方法是简单地将世界状态广播给每个玩家。默认情况下,当您不使用任何Interest管理组件时,Mirror 会执行此操作。

在这里插入图片描述图片来源: https://www.dynetisgames.com/2017/04/05/interest-management-mog/

  与其将完整的世界状态发送给每个玩家,不如考虑仅将玩家周围的内容发送给玩家。Interest管理有几个主要原因:

  • 规模:想象魔兽世界。将整个世界发送给每个玩家将是疯狂的。为了扩展到数千个连接,我们只需要发送与任何给定玩家相关的内容。

  • 可见性:在像 DotA/英雄联盟这样的 MOBA 游戏中,并不是每个人都应该一直看到其他人。玩家应该只看到自己的团队和周围的怪物。不仅如此,玩家不应该看到墙后等。

  • 作弊:在反恐精英等游戏中,玩家自然不会看到墙后的敌人,因为相机不会渲染它们。但是,如果整个世界状态在内存中是已知的,那么黑客就可以通过将玩家展示在墙后来利用它。

换句话说,Interest管理几乎总是一个好主意。

内置系统

  选择网络管理器并添加内置的Interest管理组件之一。您很可能需要空间散列,但 Mirror 还包括其他几个系统:

  • 空间散列是我们从传统的每个网络身份系统迁移到全局系统并使用一个全局可见范围设置的原因,该设置对于场景中的所有内容都是相同的。
  • Distance 是 Network Proximity Checker 的奇偶校验替代品。
  • 场景 允许跨附加场景进行视觉和物理隔离。
  • 匹配 隔离非物理卡、棋盘、街机游戏的玩家。
  • 团队 提供将联网对象的可见性限制为团队成员。这也可用于仅所有者项目,替换网络所有者检查器。
  • 自定义 兴趣管理提供了一个模板,您可以使用它来创建自己的系统。
  • 旧版 Interest管理 - 已弃用。

  作为经验法则,在您的项目中使用空间散列。这也是大多数 MMO 所使用的。

最后评论

  新的 Interest管理 API 相当简单,允许大量定制。我们通过基于距离的示例进行了介绍,这很容易理解。

  您可能已经注意到这是一个全局组件,但所有功能似乎每次都围绕一个网络身份在本地工作。有两个原因:

  • 我们遗留的 Interest 管理系统在每个网络身份的基础上工作(或者如果你愿意的话,也可以在本地工作)。对于全局系统,我们只是将这些功能移动到一个全局组件中。

    • 这允许像空间散列这样的全局解决方案,同时还保证功能的奇偶性和从旧系统轻松升级。
    • 这实际上只是将旧系统移到了不同​​的地方。不要害怕:)
  • 在正确的时间产生和消失的所有 Interest 管理可能非常复杂。 Mirror在NetworkServer中有一大堆 Interest 管理代码,简单的调用了上面的三个函数。

    • 这个想法是为了保护您免受所有复杂性的影响。您需要做的就是一次担心一个网络身份。这很容易想到。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值