我正在使用一种通用游戏服务器,该服务器可以为任意数量的TCP套接字网络客户端在玩游戏时管理游戏。我有一个“设计”与管道胶带一起被破解,但它既脆弱又不灵活。对于如何编写健壮而灵活的客户端/服务器通信,是否存在一种完善的模式?(如果没有,您将如何改善下面的内容?)
大概我有这个:
- 设置游戏时,服务器为每个玩家套接字提供一个线程,以处理来自客户端的同步请求和来自服务器的响应。
- 然而,一旦游戏开始,除了一个睡眠之外,所有线程都将循环,并且该线程一次循环遍历所有玩家,以传达有关其行动的信息(反向请求响应)。
这是我目前所拥有的图表;单击以获取较大的版本/可读的版本,或单击66kB PDF。
问题:
- 它要求玩家用正确的信息准确地依次做出回应。(我想我可以让每位球员随机回应,只有在他们给我有效举动后才继续前进。)
- 除非轮到他们,否则不允许玩家与服务器交谈。(我可以让服务器向他们发送有关其他播放器的更新,但不处理异步请求。)
最终要求:
性能不是最重要的。这将主要用于非实时游戏,并且主要用于使AI相互对抗,而不是抽动的人。
游戏将始终基于回合制(即使分辨率很高)。每个玩家总是在其他所有玩家获得回合之前获得一招。
服务器服务器的实现恰好在Ruby中,如果有所不同的话。