6

我正在开发一个小型网络游戏(仅限 LAN),其中一台计算机充当服务器,所有其他计算机(包括在同一台计算机上运行的实际游戏)充当客户端。本质上,服务器对用户是透明的,但它的存在是为了简化我的状态管理。我现在的基本概念是每个玩家的计算机会通过广播说“嘿,我想玩”,并将保留网络上其他玩家的列表。在每个运行游戏的玩家表示他们准备好后,选择一台计算机作为服务器,其余的默认为客户端。

在选择 LAN 上的哪台计算机用作服务器时,真的有任何既定的方法可以选择一台并通知其他计算机吗?

我一直在修改简单的基本想法,即让所有玩家的计算机选择一个随机数,并让具有最低(或最高,无关紧要)的服务器作为服务器(为滚动相同的计算机重新生成随机数) )。每台计算机将收到其他计算机的“滚动”数量,并可以确定哪台是服务器,之后它可以连接到它。这看起来很粗糙,但我不确定这是否重要,因为所有计算机实际上都在同一网络上,彼此相距几英尺。这会充分完成这项工作还是有更好的方法?

4

1 回答 1

5

老实说,我会做出比这更复杂的决定。我倾向于做一些基本的信息收集来确定哪台计算机拥有最大的权力并选择那台作为服务器(权力故意是一个模糊的术语,因为最强大的计算机将取决于服务器和游戏的要求) . 假设服务器将需要运行一个额外的软件(除了游戏之外的服务器),除非所有计算机都具有相同的规格,否则会有一个比其他计算机更适合该任务。只要所有节点都对数据进行相同的评估,它们就应该就谁应该领导达成共识,或者您可以让创建游戏的第一个节点负责确定哪个节点应该是服务器。

将服务器设置为定期重新评估其成为服务器的资格可能也是值得的。例如,后台进程可能会启动,这会阻碍其充分执行的能力,或者更强大的节点可能会加入游戏。显然,转移托管游戏的服务器并非易事,但这是值得考虑的事情。(请记住,这发生在在线游戏中,即 Halo。当所有客户端与服务器的连接下降到某个阈值以下时,游戏会暂停并在可以提供更好性能的不同服务器上重新建立)。

于 2011-06-18T02:46:23.103 回答