MMO 等多人游戏如何处理大量请求
How multiplayer games like MMO's handle massive requests
我问自己,mmo 是如何像 ragnarok、WoW 一样处理它们发送到服务器的操作(“我猜是请求”)?就像一个玩家使用某些物品或杀死一个怪物,或激活一项技能,游戏如何及时处理这个问题,以立即在其他玩家游戏中显示这一点,我看到有一次似乎是某种事件驱动的架构,玩家改变了游戏状态,并将事件发送到服务器,但是如何呢?在海量多游戏客户端开启。
这是一个很大的问题。但我会给你最短的答案。如果您想了解更多,可以阅读 Multiplayer Game Programming 本书以获取更多详细信息。
大多数MMO游戏都是服务器-客户端游戏(有些游戏是点对点的,但比例太小)。服务器-客户端游戏有 3 种类型:
- 权威服务器:游戏服务器对游戏的模拟被认为是正确的。如果客户端发现自己与服务器处于不同的状态,它应该根据服务器所说的游戏状态更新其游戏状态。
- 专用服务器:他们只运行游戏状态并与所有客户端通信。专用服务器进程完全独立于游戏中的任何客户端进程 运行。这意味着专用服务器通常是无头的,实际上不显示任何图形。大多数游戏都是运行独服,这种类型也是权威服的子分类。
- 监听服务器:其中一位玩家可以将他们的机器同时用作服务器和客户端。游戏发行商不需要在云提供商中租用服务器。一个要求是用户的计算机 运行ning 作为监听服务器必须足够强大并且具有足够快的连接来处理这种增加的负载。
如果您想更多地了解一些著名的或 AAA 游戏服务器,请查看一些开源服务器,例如:
- RakNet is a part of Oculus then Facebook now, but they stop development from 2015. One of famous game use RakNet is Minecraft,服务器被分叉然后写入 Java(而不是原来的 C++)。
- Agones is a collaboration project of Google and Ubisoft for Google Cloud Computing and Assassin's Creed Odyssey game. Their demo of server and client is here.
我问自己,mmo 是如何像 ragnarok、WoW 一样处理它们发送到服务器的操作(“我猜是请求”)?就像一个玩家使用某些物品或杀死一个怪物,或激活一项技能,游戏如何及时处理这个问题,以立即在其他玩家游戏中显示这一点,我看到有一次似乎是某种事件驱动的架构,玩家改变了游戏状态,并将事件发送到服务器,但是如何呢?在海量多游戏客户端开启。
这是一个很大的问题。但我会给你最短的答案。如果您想了解更多,可以阅读 Multiplayer Game Programming 本书以获取更多详细信息。
大多数MMO游戏都是服务器-客户端游戏(有些游戏是点对点的,但比例太小)。服务器-客户端游戏有 3 种类型:
- 权威服务器:游戏服务器对游戏的模拟被认为是正确的。如果客户端发现自己与服务器处于不同的状态,它应该根据服务器所说的游戏状态更新其游戏状态。
- 专用服务器:他们只运行游戏状态并与所有客户端通信。专用服务器进程完全独立于游戏中的任何客户端进程 运行。这意味着专用服务器通常是无头的,实际上不显示任何图形。大多数游戏都是运行独服,这种类型也是权威服的子分类。
- 监听服务器:其中一位玩家可以将他们的机器同时用作服务器和客户端。游戏发行商不需要在云提供商中租用服务器。一个要求是用户的计算机 运行ning 作为监听服务器必须足够强大并且具有足够快的连接来处理这种增加的负载。
如果您想更多地了解一些著名的或 AAA 游戏服务器,请查看一些开源服务器,例如:
- RakNet is a part of Oculus then Facebook now, but they stop development from 2015. One of famous game use RakNet is Minecraft,服务器被分叉然后写入 Java(而不是原来的 C++)。
- Agones is a collaboration project of Google and Ubisoft for Google Cloud Computing and Assassin's Creed Odyssey game. Their demo of server and client is here.