游戏主机应该是授权机构,还是另一个愚蠢的客户?


15

当设计一个网络多人游戏时,一个玩家托管,另一个玩家连接,我知道两种策略:

  • 让主机玩家的游戏为权威,所有其他玩家为哑客户端,试图赶上当前的游戏状态。在代码中,将有很多特殊情况,具体取决于当前播放器是否是主机。
  • 通过在另一个线程上运行隐藏的专用服务器,使主机像其他所有人一样成为哑客户端。专用服务器将成为授权者,而主机将像其他所有人一样(通过localhost)连接到它。

每种优点/缺点是什么?哪个是最常用的(或者它因游戏类型/大小而异)?


您所描述的第一种情况可能是P2P网络的一种形式(具有一个权威客户端),并且通常更为复杂,并且难以实现和维护。
akaltar

Answers:


13

从纯粹的设计角度来看,哑客户端方法是最好的-它严重限制了主机和客户端之间所需的不同代码的数量,并允许服务器异步运行。缺点是主机的机器需要额外的资源-但我想总是如此。


8

在这两种选择之间,由于DeadMG提到的原因,哑客户端方法无疑是最好的。

还有一种选择是使每个客户端具有权限,它具有哑客户端的优点,即所有对等方都共享相同的代码。另一个好处是,如果您设置正确的规则,它可能会更加公平,因为没有人会比服务器落后于0。

当然,根据游戏类型,实现起来可能非常棘手。您的协议可能必须使用某种所有权计划来解决对等方之间的冲突。仅保留2个对等方声明对同一游戏对象拥有所有权的冲突。

谷歌搜索Peer-2-Peer多人协议可能会为您提供有关此方法的更多详细信息。



有趣。该帖子声称这是“大多数策略标题”如何实现网络的方式。这是真的吗?这是怎么 《命令与征服》和《星际争霸》可以工作吗?
BlueRaja-Danny Pflughoeft

@BlueRaja,这是星际争霸的运作方式,是的。在《星际争霸》中根本没有权限。《魔兽争霸III》和《星际争霸II》具有更集中的消息交换模型,延迟和断开连接处理,但是从根本上讲,每个客户端都拥有自己的游戏状态。
Rotsor 2011年

此网络模型的另一个优点是,它允许以最小的同步流量支持大型一致的共享世界状态。
Rotsor 2011年

该模型的最大缺点是其固有的“ maphacking”漏洞,即揭示了玩家通常无法看到的某些游戏状态数据。
Rotsor 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.