【问题标题】:How to "filter" a multicast with Unreal Engine? [closed]如何使用虚幻引擎“过滤”多播? [关闭]
【发布时间】:2020-01-10 10:31:46
【问题描述】:

我目前正在开发一款多人游戏,其中两支队伍(一支红队和一支蓝队)互相对抗。问题是服务器有时需要将一些数据提供给特定团队而不是其他团队。我想知道是否可以“过滤”多播以防止服务器向所有人发送数据?或者将数据发送到特定的客户列表?我在几个论坛上找了片刻,暂时没有发现什么有趣的东西^^

非常感谢!

【问题讨论】:

  • 你为什么要这样做是出于兴趣,当然你不希望客户端得到来自服务器的未同步数据?
  • 我想把一些演员互相隐藏起来(例如,一些蓝队的球员不应该看到红队的一些演员)。我终于通过覆盖方法 'IsNetRelevantFor' 实现了我想做的事情,这里有更多信息:docs.unrealengine.com/en-US/API/Runtime/Engine/GameFramework/…

标签: c++ networking server multiplayer unreal-engine4


【解决方案1】:

UDP广播的工作方式是提供网络IP和掩码; ip和掩码匹配的机器会收到消息。

因为只有一个面具;它旨在说明应该将消息广播到哪个网络级别;但不适用于特定的机器。

解决这个问题的常用方法是给每条消息一个“主题”,然后按主题过滤;但仍将所有数据广播到所有机器。

对于您的具体示例 - 您可能有 3 个主题。 "RedData" "BlueData" "CommonData"。

【讨论】:

  • 我正在考虑这样做......这让我很困扰,无论如何我都必须将数据发送给任何人:/但无论如何,谢谢,至少它应该工作!
  • 另一种选择是不广播 - 但这样做的代价是您最终不得不多次发送相同的消息 - 但每次发送给不同的客户。
  • 我明白了,没有真正优化...我会尝试使用“主题”方法,非常感谢!
  • 虚幻中的多播不是 UDP 广播或 UDP 多播 afaik。
【解决方案2】:

您可以使用客户端 RPC 而不是多播,在相应的 PlayerController 上调用它,它只会发送到任何特定的客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 2020-09-01
    • 2018-09-01
    • 1970-01-01
    • 2017-09-20
    • 2020-02-17
    • 2022-06-28
    相关资源
    最近更新 更多