【问题标题】:Implementing computation on a TCP based game application在基于 TCP 的游戏应用程序上实现计算
【发布时间】:2016-04-18 23:47:24
【问题描述】:

我们正在规划一款适用于手机的实时网络游戏应用程序。
经过一番研究和研究,我们决定通过实现Socket在服务器和客户端(移动设备)之间使用TCP连接。
在编写协议时,我们遇到了以下问题:我们应该在哪里实现计算?在用户的设备中还是在服务器中?

例如,假设 5 名玩家之间进行了一场简短的游戏,在游戏结束前不需要交流(尽可能快地点击屏幕或类似的东西)。
在回合结束时,客户端将他们的分数发送到服务器,应用程序应该显示输家或赢家。

计算应该在哪里进行?服务器是否应该收集所有分数,计算最大值和最小值并发送回输家和赢家?或者服务器应该将所有分数发回给玩家,他们的设备将在其中计算结果?
每种策略的优缺点是什么?

【问题讨论】:

    标签: sockets tcp architecture


    【解决方案1】:

    这里有几件事:

    1) 不要将持久套接字用于移动应用程序。连接性太差。

    2) 使用更高级别的协议,例如 HTTP。您无需使用这样的低级协议。通过这样做,您最终将完成比您需要的工作更多的工作。考虑一下您是否要将其构建到基于 Web 的游戏中,或者在不允许您使用原始套接字的设备上实现。

    HTTP 很好,因为它对防火墙友好,大多数防火墙已经允许标准端口上的 HTTP 通过。这就是它现在如此受欢迎的原因。

    3) 您应该对这些设备持怀疑态度。一般来说,您应该尽可能少地信任客户。您可以在客户端进行处理,但它应该与渲染有关。通常假设您的客户端是恶意的,这是处理 n 层架构应用程序的好方法。尤其是游戏。

    【讨论】:

    • “太参差不齐”是什么意思?我需要使用套接字才能将消息从客户端推送到服务器,如何使用 HTTP 来实现?
    • 我写错了从客户端到服务器,我的意思是从服务器推送到客户端。我知道 websocket 可以实现,但它只管理 1 个连接
    • 好吧,我坚持我的主张,你不应该相信客户。我也至少会考虑仍然使用 HTTP,轮询范式几乎与服务器推送一样有效,并且具有能够扩展得更高的额外好处。 (服务器上的套接字很容易用完,但现代 HTTP 服务器可以为数千个客户端提供服务)。
    猜你喜欢
    • 1970-01-01
    • 2011-07-21
    • 2010-10-10
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    相关资源
    最近更新 更多