我应该重写我的游戏服务器、写一个转发器,还是使用新插件?
我有一个用Python和Twisted写的游戏服务器,还有一个旧的游戏客户端也是用Python写的。现在我用JavaScript写了一个新的游戏客户端,它会通过WebSocket连接到服务器。现在我面临一个设计选择,我应该:
- 把游戏服务器重写成node.js,使用miksago的WebSocket服务器和纯JavaScript。
- 用node.js和miksago的WebSocket服务器创建一个转发器,这个转发器会为每个接收到的WebSocket连接,创建一个与旧的Python服务器的传统套接字连接。
- 使用gleicon的WebSocket服务器来配合Twisted和Python(这个主意看起来不错,我觉得我喜欢,但我还是想发这个问题)。
编辑:添加了链接和更清晰的描述
4 个回答
1
如果你对JavaScript非常熟悉,重新写一遍代码将是一个非常好的练习,尤其是在Node.js中。
当然,这也要看你有多少代码。如果客户端和服务器都是用JavaScript写的,这样可以减少在不同环境之间切换的麻烦,而且如果你在做很多插值的客户端代码,这样也能更好地重复使用代码。
我建议如果你想学习Node.js,并且已经会异步编程的话,就去试试重写吧。
另外,我用Node.js做过两个游戏服务器,所以如果你以后有更多问题,我有很多经验可以分享:
https://github.com/BonsaiDen/NodeGame-Orbit
https://github.com/BonsaiDen/NodeGame-Shooter
你可能还想看看BiSON,这样可以在使用WebSockets时节省带宽,我是专门为HTML5游戏写的这个:
https://github.com/BonsaiDen/BiSON.js
6
这里缺少很多信息。
- 你现在对Python、Twisted或者你的游戏服务器实现感到满意吗?
- 你觉得用JavaScript重新实现这个项目需要多大的努力?
- 你对Node.js已经熟悉了吗?
- 你觉得用JavaScript做服务器有什么好处?
- 这些好处对你来说值得付出这样的努力吗?
选项1看起来确实有点吓人,但这可能不适合你。重要的是不要让自己陷入一个让项目偏离轨道的情况,因为你开始了一个庞大的工作,可能在某个时候会失去完成它的动力。
选项2和3看起来更容易实现。我觉得主要的区别在于选项2需要学习Node.js,还要管理一个额外的后台进程。
你可以选择做选项2或3,如果不满意再考虑选项1。