gpt4 book ai didi

iphone - 游戏套件点对点

转载 作者:可可西里 更新时间:2023-11-01 04:42:40 25 4
gpt4 key购买 nike

我编写了一个使用 gamekit 点对点连接的炸弹人应用程序。问题是一段时间后游戏不再同步。

我查看了 GKTanks 的示例代码并使用了他们的模型。对等点之间没有客户端/服务器关系,所以我没有在我的游戏中使用它们。两个对等方都维护一个游戏状态,他们根据接收到的数据更新游戏状态。

我有一个 NSTimer,用于在每一帧运行游戏循环。 NSTimers 不同步,因此有时游戏状态会变得不同,例如:玩家几乎同时获得能量,他们都获得能量,因为发送数据需要一段时间。

如果有任何关于使该应用程序正常运行的想法,我将不胜感激。我正在考虑重写代码以使用客户端-服务器,但我不确定这是否是个好主意......但是

谢谢!

编辑:我更改了代码,随机选择一名玩家作为主持人。每次玩家放置炸弹时,他都会询问服务器放置炸弹的位置。服务器返回玩家位置(如在服务器上看到的那样),然后告诉玩家放置炸弹的位置。

对于加电,服务器会检查玩家是否拿起了加电,如果他这样做了,它会发送一个数据包通知他。

现在又出现了一个问题。设备之间的延迟很高(我使用的是蓝牙连接)。在客户端点击按钮放置炸弹后,放置炸弹大约需要 0.2 秒。

我正在可靠地发送所有数据。我这样做对吗?

最佳答案

最好是你想要一个只有主机可以操纵游戏状态的主机-客户端关系,所以在你的情况下它会是:

两个玩家都冲向通电。宿主先捡起来。
它被注册并且主机收到电源。
同时player#2也拿起power-up,将action发送给host。
主持人通知玩家#2 Prop 已经消失。

根据您的情况,您一定会因数据包丢失而失去同步。
对于不可能发生的主机-客户端关系,唯一的问题是主机始终具有优势,当设备之间的延迟增加时,尤其是在智能手机上,主机的优势会变得更大。

在像炸弹人这样的游戏中,每次发生变化时发送整个游戏状态而不是执行的 Action 是完全合理的,这是为了确保两个设备同步。

总结一下:两个用户都有自己的游戏状态,但只有主机可以操纵两者。

关于iphone - 游戏套件点对点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com