【发布时间】:2016-09-10 11:31:01
【问题描述】:
我正在使用 Google Api 创建一个实时多人游戏 - 使用 libGDX 的自上而下的射击游戏。
每次调用“render()”方法时,都会通过“sendUnreliableMessage”发送玩家位置:
- 调用了render()。
- “设备 A”通过“sendUnreliableMessage”发送本地 Player 位置 (x, y) 和移动方向。
- “设备 B”收到消息。在最后一个位置 (x,y) 和新位置 (x,y) 之间进行插值。
- “设备 B”将本地敌方玩家移动到新位置。 (插值和最终位置)
玩家射出的子弹通过“sendReliableMessage”发送,如下所示:
- 玩家按下“开火”按钮。
- Bullet 对象在本地“设备 A”上创建并开始飞行。
- 子弹创建位置 (x, y) 和方向由“sendReliableMessage”发送给其他玩家。
- “设备 B”接收到消息后,还在接收到的起始 x 和 y 上本地创建一个 Bullet 对象,并使其向接收到的方向飞行。
移动消息在每次“render()”调用时发送。 - 取决于每秒大约 30-60 次的 FPS。
仅当按下“开火”按钮时才会发送项目符号消息。只有一次。而且只有子弹的“创造位置”。两个设备都从该位置计算本地移动更新。
我的问题和疑问是:
- 像这样更新播放器位置是不是很常见?
- 镜头丢失。 1-3 of 4. 大约 50-80% 的包裹损失。
我测试了仅在移动时发送玩家位置的更新。然后在静止不动的情况下射击 4 次(没有发送“玩家位置 'unreliableMessages') 并且所有 4 个镜头都出现在“设备 B”上
这让我觉得当我在每次帧更新时发送“不可靠消息”时“可靠消息”会丢失(再次大约每秒 30-60 次)。
【问题讨论】:
标签: android libgdx google-play-services multiplayer real-time-updates