ala*_*i95 8 xcode multiplayer ios multipeer-connectivity
我正在开发一款平台游戏,尝试使用IOS Multipeer连接来制作多人游戏.我陷入困境/困惑/不知道在同伴之间发送消息的最佳方式是什么(大多数是游戏中的4个同伴).游戏风格就像有趣的跑步,我有4个英雄跑步和互相射击和类似的东西.问题在于保持其他球员的位置让我疯狂!有时其他玩家处于错误的位置(请记住所有设备都具有相同的屏幕尺寸).这是因为连接滞后.我每秒可以发送多少信息以及管理数据传输的最佳方式是什么?
任何想法/想法都表示赞赏.
MPC 的吞吐量主要取决于连接。我认为最大的性能问题是当其中一个对等点禁用 WiFi 时。这迫使 MPC 通过蓝牙进行通信,速度非常慢。我发现它在 Wifi 上的运行速度比 MPC 慢 20 倍。
您不需要连接到 WiFi 网络。只需在所有设备上启用 WiFi,iOS 就会利用共享 WiFi 网络或创建自己的临时网络。
您要确保的第二件事是您的同事不会互相邀请。您的网络中只能有一名邀请者。当多个对等方邀请并接受连接时,MPC 网络会变得不稳定。
第三件事是sendData:(NSData *)data toPeers:(NSArray *)peerIDs withMode:(MCSessionSendDataMode)mode error:(NSError **)error
。如果您将数据包广播到 toPeers: 数组中的所有对等点,且模式为 MCSessionSendDataReliable,则 MPC 会等待,直到所有连接的对等点均确认该消息,然后再继续处理下一个数据包。
更新:我用自己的应用程序通过 WiFi 和两台设备进行了一些测试,我可以将其设置为大约 100kbps。我使用的是 iPhone 6 Plus 和 iPhone 5S。
更新 2:更多地考虑您的问题,MPC 通信需要记住以下几点:
在后台线程上执行所有 sendData 和 didReceiveData 调用,并让该线程更新模型中的位置数据。通过委托方法或通知告诉您的 viewController 可以进行更新。
保持数据包较小,但对其进行设计,以便收到的更新代表播放器的当前状态。这允许您错过更新并且不会完全不同步 - “将玩家 1 移动到 (10, 10)”而不是“将玩家 1 移动到 (1, -1)”
对数据包进行编号并使用 MCSessionSendDataUnreliable。如果您收到的数据包的编号早于您上次处理的编号,请将其丢弃。如果您遵循上面的第二条准则,则不需要此数据包。
归档时间: |
|
查看次数: |
1184 次 |
最近记录: |