多人网络的简史

将您的计算机和外围设备拖到您的朋友之家的日子已经一去不复返了,只是向他们挑战您选择的游戏。 如今,游戏玩家可以启动PC并与世界各地的其他用户建立联系,而无需意识到大量的设计和工程设计已经成为我们如今理所当然的事情-快节奏的多人游戏触手可及。

但是我们如何到达这个阶段? 当然,多人游戏并非只是凭空出现的-实际上,距离还很远。

与任何网络一样,用于多人游戏的网络必须可靠快速有用 。 最初,在多台计算机上玩的多人游戏使用对等方法以非常原始的方式处理网络。 对等网络的设计使每个连接的玩家都扮演着控制游戏状态的角色。 尽管这似乎是一个好主意,但可能会导致一些可能对游戏玩法不利的难题,例如,已连接的客户端与其他玩家失去同步。 一些对等多人网络使用锁步协议来确保每个连接的玩家在确定下一个游戏滴答的结果之前已经采取了行动。 这可能会导致重大问题,因为每个客户端的游戏都只能与连接速度最慢的客户端一样快地运行。 这会阻止游戏快速运行,从而无法实现网络服务器的主要目标之一。 但是,这是当时多人游戏唯一的解决方案,因此总比没有好。

幸运的是,这对于John Carmack和其他ID软件来说还不够。 在1996年,id软件发布了Quake,这是一款快节奏的多人第一人称射击游戏,具有全新的联网方法- 客户-服务器模型 。 通过引入另一台充当游戏标尺的计算机,这种新方法完全改变了多人游戏的处理方式。 那台计算机或服务器将由所有想要玩的玩家连接。 玩家计算机(也称为客户端 )随后会将所有按键从玩家发送到游戏服务器。 服务器接受所有输入数据,计算其如何影响游戏状态,并将所有这些信息中继到相关的已连接客户端。 使用服务器作为连接所有玩家的中央集线器在许多方面都非常有用,因为它仅允许存在一个游戏实例(而不是每个玩家计算机上都存在的游戏)–这样可以防止两台计算机不同步。 它还允许游戏继续进行,而无需等待最慢的玩家连接发送数据,从而使具有稳定连接的玩家能够立即享受游戏乐趣。 听起来不错吧? 好吧,这还不完美……

基本客户端-服务器模型的问题在于,每个客户端的游戏仅在收到来自服务器的信息后才会做出反应。 用户将按下一个键,然后必须等到服务器发送和接收数据后,几乎不可能在必要的时间内对游戏做出反应。

随着1996年在Duke Nukem 3D和QuakeWorld中引入客户端预测 ,这一切都发生了变化。客户端预测意味着客户端计算机可以本地预测其输入将如何影响游戏状态。 客户端计算机仍将其输入数据发送到服务器,但是客户端本身将尝试解释服务器将响应的内容并适当显示新游戏状态。 这意味着连接速度较慢的玩家将无法注意到服务器响应其请求所花费的时间,从而导致流畅的游戏体验。

该方法至今仍用于大多数多人网络游戏,证明了其巨大的可扩展性和应用性,即使在1996年也是如此。尽管对该方法的工作进行了小幅改进和补充(例如滞后补偿,实体插值),大部分过程保持不变。 如果没有QuakeWorld和Duke Nukem 3D之类的公司引入客户端-服务器模型,我们可能永远都不知道在多人游戏中精心设计网络的重要性。