嗨,这里是游戏开发新手。我要制作的游戏非常简单。它几乎与旧版FC游戏“ Ballon Fight”完全一样,不同之处在于,我正在尝试使其在线游戏,玩家可以通过比赛寻找对手。
气球战斗:
我阅读了一些文章,发现其中大多数导致两种方法:
将所有游戏逻辑放在客户端上,并且客户端在每次更新帧时将玩家输入发送到服务器。服务器的行为就像一个调度程序,仅确保客户端A和客户端B都接收到了玩家A的输入。我的理解是,如果在这种情况下我们将客户端视为纯函数,并且每个玩家都接收了两个玩家的输入,另外,游戏应该在两个客户端上产生相同的结果。这样就可以实现同步。
将所有游戏逻辑放在服务器上,然后让服务器进行计算并将结果发送回两个客户端。在这种情况下,客户只担心显示。
对我来说,解决方案1听起来很简单,但是当我意识到网络问题时,我立刻意识到它变得异常复杂。失去玩家A的连接几秒钟意味着在此期间所有输入都丢失了。我能猜到的是,为了解决这个问题,服务器必须检测玩家A是否滞后并累积来自玩家B的输入,直到玩家A回来,然后将所有累积的输入馈送到玩家A的客户端。然后,玩家A的客户需要快速前进以追赶。听起来客户端和服务器端都有大量的基础架构工作。
另一方面,解决方案2对我来说似乎很艰巨,因为到目前为止,我仅在客户端编写了一些游戏。
预先,谢谢游戏开发大师。