【问题标题】:Network Traffic, MMO Tower Defense网络流量、MMO塔防
【发布时间】:2014-03-08 22:12:55
【问题描述】:

我正在编写一款 MMO 塔防游戏(客户端服务器架构)。因为作弊保护,服务器需要有逻辑。但我有真正的设计问题。当假设 10 个人互相进行死亡竞赛时,每一次射击塔都需要计算并发送给玩家。当许多塔被建造时。 (就像 10 玩家 * 10 塔 = 100 塔)流量非常高。 (一个玩家每秒会产生很多消息)我该如何解决这个问题?

服务器是用 Java 编写的 (Smartfox 2x) 客户端是用 C# 编写的(Unity 3d)

提前致谢。

【问题讨论】:

  • 目前服务器与客户端的通信是如何进行的?您使用什么语言?
  • 我正在使用 unity3d(c#, client) 和 smartfox(java, server)
  • 有一个游戏叫半神。当它发布时,需要几个月的时间才能将其修补到可播放状态,其中最大的问题出在网络领域。之所以发生这种情况,是因为当更多的玩家开始使用它时,他们进行了大量测试,但各种事情都出了问题。祝你好运,我知道你会玩得很开心!
  • 在您的服务器上拥有大量带宽和/或优化您发送的内容和/或让客户端具有逻辑并简单地发送玩家操作。

标签: networking traffic mmo


【解决方案1】:

在服务器上使用强大的简化单位和战斗规则。如果有人踏入塔周围的“伤害区域”,只需通过影响持续伤害来编程您的伤害算法即可。

你可以在服务器上使用二维战场,所有单位和塔楼和伤害区域都只是圆圈或点和圆圈。你也可以使用几个伤害环,每秒伤害在防御塔周围的外圈较低,在内圈较高。

你可以使用队列来管理单目标伤害/多目标伤害和区域伤害。单发时只有队列中的第一个受伤害区域影响,只有第一个、第二个和第三个受多发影响等。

如果一座塔每 5 秒发射一次子弹,每颗子弹造成 40 点伤害,那么你只需在服务器上计算,对站在“伤害区域”或“伤害圈”中的每个目标造成 8 点每秒的伤害即可。

在客户端你可以做所有的事情,比如飞弹、撞击、溅射、飞溅和烟花等等。

但是在服务器上通过进入损坏区域然后每秒获得伤害来完成所有工作。 (抱歉英语不好)

【讨论】:

    【解决方案2】:

    因为作弊保护,服务器需要有逻辑。

    这是一个错误的假设。服务器需要有足够的逻辑来运行游戏逻辑并确保所有玩家的行为都有意义,但它不需要发回结果。客户端都可以并行运行相同的逻辑并自行计算结果。

    【讨论】:

    • 感谢您的回答,但是服务器和客户端之间的延迟呢?就像,服务器认为所有单元都死了,但客户端没有。其他客户也应该知道单位何时被击中。我该如何解决这个特殊的问题?
    • 在客户端和服务器端模拟之间进行适当的同步,这不应该发生。
    • 谢谢,这就是我需要知道的一切:)
    猜你喜欢
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多