c++ - 多类型游戏服务器推荐

标签 c++ multithreading

我已经使用服务器端编程(PHP 和 C++)和 Flash(用于 GUI)开发了一些在线游戏(如国际象棋、西洋跳棋、风险克隆)。现在,我想开发某种游戏门户(如 www.mytopia.com)。为此,我必须确定构建服务器逻辑的好方法。

起初我想在编程时为每个游戏分开游戏服务器。这样,每个游戏都将是一个孤立的程序,向客户端打开特定的端口。我还想为每个游戏室创建不同的服务器(每个游戏室允许同时连接 100 个客户端)。当然,我会使用数据库来链接所有内容(例如高分等)。

那么,我想这不是构建游戏门户服务器的最佳方式。我正在阅读有关线程编程的内容,我认为这是最好的方法。所以,我想做一些像连接线程这样的事情,它只会监听新的连接客户端(这样每一种类型的游戏客户端都只会连接一个端口),验证这个客户端(登录)然后将这个客户端转移到特定的游戏线(如国际象棋线、西洋跳棋线等)。我将使用 select(或变体)来处理异步客户端(我猜这次“每个客户端一个线程”不适合)。这种结构似乎是最好的,但是如何进行线程之间的通信呢?我已经阅读了有关竞争条件和全局范围变量的信息,因此一种解决方案是拥有一个全局客户端数组( vector 或映射),每次更改时都需要由连接线程或游戏线程锁定(新连接、注销、更改状态) , ETC)。对吗?

有人做过这样的工作吗?有什么建议吗?

非常感谢

最佳答案

门户网站需要稳健、可伸缩和可扩展,以便您可以应对更多的受众、添加的更多游戏/服务器等。研究 MMO 和分布式系统的设计方式是一个不错的起点。这也可能有帮助:http://onlinegametechniques.blogspot.com/

就个人而言,我会通过拥有一个身份验证服务器来集中用户,然后为每个游戏提供一个单独的游戏服务器,根据身份验证服务器验证用户。

关于c++ - 多类型游戏服务器推荐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3112413/

相关文章:

c++ - 没有 RTTI 但仍然是虚拟方法

c++ - 代码无法输入名称?

android - Qt 无法在 Android 模拟器上绘制

c++ - 在 C++ 中线程完成后将新任务分配给线程

c++ - 在结构列表的 vector 中打印结构成员

c++ - using-declaration 不能在函数范围内重复。这是为什么?

java - jprogressbar 无法正常工作(可能是由于线程)

维护进程池的 Java 库

c++ - 多线程可以加速内存分配吗?

c++ - 在基类中调用真正的虚函数