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


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.