我已经开发了一些使用服务器端编程(PHP和C++)和Flash(用于GUI)的在线游戏(如国际象棋,跳棋,风险克隆)。现在,我想开发某种游戏门户(如www.mytopia.com)。为了做到这一点,我必须决定什么是构建我的服务器逻辑的好方法。关于多种游戏服务器的建议
起初我想在为每个游戏编程分离的游戏服务器。通过这种方式,每场比赛将是一个孤立的程序,为客户打开一个特定的端口。我还想过为每个游戏室创建不同的服务器(每个游戏室允许同时连接100个客户端)。当然,我会使用数据库来链接一切(如高分等)。
然后,我想这不是构建游戏门户服务器的最佳方式。我正在阅读关于线程编程的知识,我认为这是最好的方式。所以,我想像做一个连接线程那样只会监听新的连接客户端(这样每种类型的游戏客户端将只连接一个端口),验证这个客户端(登录),然后将这个客户端转移到特定的游戏线程(如国际象棋线程,跳棋线程等)。我将使用select(或变体)来处理异步客户端(我猜这次“每个客户端一个线程”不适合)。这个结构似乎是最好的,但我如何在线程之间进行通信?我已经读过关于竞争条件和全局作用域变量的信息,因此一种解决方案是在每次更改时都需要通过连接线程或游戏线程锁定全局客户端数组(向量或映射)(新连接,注销,更改状态等)。这样对吗?
有没有人在这样的事情?任何建议?
非常感谢