我使用winsockets在C++上运行一个M意愿服务器。我的服务器不会支持200多个玩家。我有重新设计它的想法,所以它将使用多台服务器,而不是一台,所以,例如,每台服务器都可以照顾很多玩家,如果太晚,它可以将播放器的响应性转移到另一台服务器。不过,我不知道如何编写这样一个一致的游戏逻辑。这有什么技巧吗?
发布于 2012-03-08 21:33:24
你有两个问题要问。
第一,要将单个服务器转换为分布式计算环境,我需要做什么?
您需要学习如何编写分布式计算应用程序。有很多关于这个的书。甚至还有大学课程教授这种技能。你也可以找到一些在线课程。一旦您了解到您将需要重新设计您的游戏,以便在分布式系统中工作。可能需要对您的代码进行几乎完全的修改。
第二,如何处理来自竞争对手的DDOS攻击?这里不讨论这个话题,但对于IT安全SE来说是个好问题
发布于 2012-10-30 21:38:22
首先要考虑的是分区。也就是说,将玩家分成不同的组,通常不进行互动。有了更多的分区,您就可以拥有更多的服务器(您可以使用PCAM方法来更多地对http://www.mcs.anl.gov/~itf/dbpp/text/node15.html进行分区)。另一方面,让您这样思考的系统通常会同时将客户端连接到多个服务器上,以便进行故障转移(但这更难做到)。
发布于 2012-10-30 23:10:13
你必须做的第一件事是分析是什么使它变慢或“滞后”。了解问题所在。这是操作系统的限制(打开的套接字太多了)吗?服务器是否使用100%的CPU?DDOS是否淹没了网络并减缓了它的速度?如果没有,您能否对代码进行任何分析以确定当前的瓶颈是什么?
你的代码是多线程的吗?如果没有,如果您的游戏是CPU绑定,一个很好的改进可能是有多个线程。这也是迈向分布式系统的第一步。您可以拥有一个客户端处理程序/连接池程序和一个单独的线程,该线程表示游戏状态,并从处理程序执行操作并应用它们。如果不了解更多的程序结构,就很难进行推测。
https://softwareengineering.stackexchange.com/questions/138866
复制相似问题