我应该重新编写游戏服务器,编写转发器还是使用新的插件?

时间:2010-11-22 19:16:10

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

我有一个用python编写的游戏服务器和扭曲的游戏服务器,以及一个python中的旧游戏客户端。我在Javascript中编写了一个新的游戏客户端,它将与websockets连接。我现在面临一个设计决定,

  1. 使用node.js和纯javascript
  2. miksago's websocket server中重写游戏服务器
  3. 使用node.js和miksago的websocket服务器创建一个转发器,它将为旧的python服务器创建一个连接,并为其收到的每个websocket连接创建传统的套接字。
  4. 使用gleicon's websocket server进行twisted + python(这实际上看起来很不错,我想我喜欢它,但我会发布这个问题。)
  5. 编辑:链接和清晰度

4 个答案:

答案 0 :(得分:6)

这里缺少很多信息。

  • 您目前(不)对Python或Twisted或游戏服务器实施感到满意吗?
  • 您估计在JavaScript中重新实现它的努力有多大?
  • 您是否已熟悉Node.js?
  • 您在JavaScript服务器实现中看到了哪些优势?
  • 这些优势值得你努力吗?

选项1肯定看起来很吓人,但它可能不适合你。重要的是你不要在你自己的项目出轨的情况下降落,因为你已经开始做出巨大的努力,你可能会在某些时候失去完成的动力。

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

您可以随时选择执行2或3,如果您不满意,最多可以选择1。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

如果你疯了并且真的知道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

答案 3 :(得分:0)

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

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