如何同步1v1实时动作在线迷你游戏?

时间:2019-06-05 09:47:30

标签: unity3d networking synchronization game-engine

我要做什么

嗨,这里是游戏开发新手。我要制作的游戏非常简单。它几乎与旧版FC游戏“ Ballon Fight”完全一样,不同之处在于,我正在尝试使其在线游戏,玩家可以通过比赛寻找对手。

气球战斗:

Ballon-Fight

我读到的东西

我阅读了一些文章,发现其中大多数导致两种方法:

  1. 将所有游戏逻辑放在客户端上,并且客户端在每次更​​新帧时将玩家输入发送到服务器。服务器的行为就像一个调度程序,仅确保客户端A和客户端B都接收到了玩家A的输入。我的理解是,如果在这种情况下我们将客户端视为纯函数,并且每个玩家都接收了两个玩家的输入,另外,游戏应该在两个客户端上产生相同的结果。这样就可以实现同步。

  2. 将所有游戏逻辑放在服务器上,然后让服务器进行计算并将结果发送回两个客户端。在这种情况下,客户只担心显示。

我的恐惧

对我来说,解决方案1听起来很简单,但是当我意识到网络问题时,我立刻意识到它变得异常复杂。失去玩家A的连接几秒钟意味着在此期间所有输入都丢失了。我能猜到的是,为了解决这个问题,服务器必须检测玩家A是否滞后并累积来自玩家B的输入,直到玩家A回来,然后将所有累积的输入馈送到玩家A的客户端。然后,玩家A的客户需要快速前进以追赶。听起来客户端和服务器端都有大量的基础架构工作。

另一方面,解决方案2对我来说似乎很艰巨,因为到目前为止,我仅在客户端编写了一些游戏。

我的问题

  1. 为了制作这样的简单在线游戏,同步游戏状态的最适合初学者的方法是什么?
  2. 如果我要使用上述解决方案1,是否有提供此类基础设施的框架,这样我就不必独自处理所有网络问题?

预先,谢谢游戏开发大师。

0 个答案:

没有答案