首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编写基于Client-Server的游戏的建议

编写基于Client-Server的游戏的建议
EN

Stack Overflow用户
提问于 2011-01-08 00:55:22
回答 2查看 921关注 0票数 4

我正在考虑写一个基于服务器的游戏,几个客户端程序连接到它。游戏( very )基本上由用户可以“接受”的项目列表组成,这会将其从所有连接的计算机上的列表中删除(这需要快速更新)。

我正在考虑在客户端使用Java applet,因为我希望这是可移植的,可以在浏览器(主要是Windows)上运行,而且更新速度很快,可以是运行在Linux上的C++或Java服务器(目前只是一个家庭服务器,但也可能在VPS上运行)。

这个游戏的前一个“化身”在浏览器上运行,并使用PHP+mySQL作为后端,但当几个人连接时,这会使服务器相当不堪重负(大约有8个人,最终需要处理更多的人)。

用户可能都在相同的物理位置(具有相同的公共IP地址),系统每秒将收到几个请求,所有这些请求都需要将列表发送回客户端。

有些计算机可能有防火墙限制,因此您是否建议使用HTTP通信、自定义端口,或者可能通过SSH或某些现有协议?

有没有人能推荐一些技巧(线程,一个项目的多个请求?)、工具、数据库(mySQL?)或API来帮助我开始这个项目?我更喜欢C++作为后端,因为它会更快,但使用Java可以让我重用代码。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2011-01-08 01:12:53

我不会仅仅因为速度的原因而使用C++。性能上的差异不太可能对您的游戏产生真正的影响。(您的网络可能会影响任何性能差异,除非您的客户端和服务器之间有10个GigE )我会使用C++或Java,因为您将首先使用该语言使其正常工作。

票数 3
EN

Stack Overflow用户

发布于 2011-01-08 01:11:32

对于任何正在寻找用于c++的好的网络应用程序接口的人,我总是推荐Boost.Asio。它的优点是与平台无关,所以你可以为linux,windows等编译服务器。但是,如果你不太熟悉c++模板/boost,代码可能会有点压倒性。看一看,试一下。

就一般的建议而言。根据上面的描述,您似乎需要一个相对简单的服务器。我建议让它保持非常基本的单线程轮询循环。读取来自您连接的客户端的消息(在多个套接字上等待),并做出适当的响应。这消除了围绕列表的多次访问的任何问题以及其他同步问题。

我也可能建议,在你重写你最初的化身之前。试着改进它,正如你所说的:

和系统每秒都会收到几个请求,所有这些请求都需要将列表发送回客户端。

考虑到每个请求都会从列表中删除一项,为什么不直接通知用户删除了哪一项,而不是一次又一次地通过网络发送整个列表呢?如果这个列表有任何重要的大小,那么这个小的改变将会带来很大的改进。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4628054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档