【问题标题】:Should I re-write my game server, write a forwarder, or use a new plugin?我应该重写我的游戏服务器、编写转发器还是使用新插件?
【发布时间】:2010-11-22 19:16:10
【问题描述】:

我有一个用 python 和 twisted 编写的游戏服务器,还有一个用 python 编写的旧游戏客户端。我用 Javascript 编写了一个新的游戏客户端,它将与 websockets 连接。现在我面临一个设计决策,我应该,

  1. 使用miksago's websocket server和纯javascript重写node.js中的游戏服务器
  2. 使用 node.js 和 miksago 的 websocket 服务器创建一个转发器,这将为它收到的每个 websocket 连接创建一个到具有传统套接字的旧 python 服务器的连接。
  3. gleicon's websocket server 用于twisted+python(这实际上看起来是个好主意,我想我喜欢它,但我还是会发布这个问题。)

编辑:链接和清晰度

【问题讨论】:

  • 如果没有损坏,请不要修复它。我从来没有从头开始重写过任何东西。

标签: javascript python client-server node.js websocket


【解决方案1】:

这里缺少很多信息。

  • 您目前对 Python 或 Twisted 或您的游戏服务器实现是否(不)满意?
  • 您估计在 JavaScript 中重新实现它需要付出多大的努力?
  • 您是否已经熟悉 Node.js?
  • 您认为 JavaScript 服务器实现有哪些优势?
  • 这些优势值得您努力吗?

选项 1 确实看起来很吓人,但它可能不适合你。重要的是,您不要陷入让自己的项目脱轨的境地,因为您已经开始了这项巨大的努力,在某些时候您可能会失去完成的动力。

选项 2 和 3 看起来更容易完成。我认为主要区别在于必须学习 Node.js 和一个额外的守护进程来管理选项 2。

您始终可以选择执行 2 或 3,如果您不满意,请移至 1。

【讨论】:

    【解决方案2】:

    我假设您这样做是因为您还希望基于浏览器的游戏客户端能够连接,尽管您的问题并不清楚。

    您可以查看wsproxy,它包含在noVNC(HTML5 VNC 客户端)中。它是一个通用的 WebSockets 到 TCP 套接字代理。 wsproxy 与 noVNC 一起使用以连接到不支持 WebSockets 的 VNC 服务器。 wsproxy 在 C、python 和 node.js 中有三种独立的实现。

    免责声明:我制作了 noVNC(和 wsproxy)。

    【讨论】:

      【解决方案3】:

      如果你很疯狂并且真正了解 JavaScript,那么在 Node.js 中重写应该是一个非常好的练习。

      虽然这取决于您获得了多少代码,但如果您使用大量插值来编写客户端,则同时使用 JavaScript 编写客户端和服务器会减少上下文切换并为您提供代码的可重用性。

      如果你想学习 Node.js 并且你已经知道如何进行异步编程,我会说去重写。

      另外,我使用 Node.js 制作了 2 个游戏服务器,所以如果您有更多问题,我有很多经验:
      https://github.com/BonsaiDen/NodeGame-Orbit
      https://github.com/BonsaiDen/NodeGame-Shooter

      您可能还想查看 BiSON 以使用 WebSockets 节省带宽,我专门针对 HTML5 游戏编写了这一点:
      https://github.com/BonsaiDen/BiSON.js

      【讨论】:

        【解决方案4】:

        是的,node.js 确实适合游戏服务器开发。 node.js的网络IO能力比python好很多。 但是重写是一个很大的代价,如果只有一个 node.js 进程,你仍然无法利用可扩展性。 已经有一个游戏服务器框架支持多进程且更具可扩展性,请查看: https://github.com/NetEase/pomelo

        此外,还有一个完整的开源演示: https://github.com/NetEase/lordofpomelo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-06-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-18
          • 1970-01-01
          相关资源
          最近更新 更多