Android Firebase滞后于数据更新-多人游戏

Android Firebase滞后于数据更新-多人游戏,android,firebase,libgdx,Android,Firebase,Libgdx,我使用Firebase作为多人开放世界游戏的后端数据库。 我需要高达100毫秒的写入速度来实时更新所有播放器。 我的游戏图形在LibGdx引擎中保持平滑,但Firebase在写入数据时出现延迟,显示对手玩家的延迟位置。 我使用接口与核心LibGdx游戏类进行通信,以实现Android功能(因为LibGdx中没有Firebase) 请建议我实现平滑机制来更新数据,并使用Firebase实现平滑的多人方法。(包括LibGdx) 以下代码显示了我的Firebase代码段: //For writing

我使用Firebase作为多人开放世界游戏的后端数据库。 我需要高达100毫秒的写入速度来实时更新所有播放器。 我的游戏图形在LibGdx引擎中保持平滑,但Firebase在写入数据时出现延迟,显示对手玩家的延迟位置。 我使用接口与核心LibGdx游戏类进行通信,以实现Android功能(因为LibGdx中没有Firebase)

请建议我实现平滑机制来更新数据,并使用Firebase实现平滑的多人方法。(包括LibGdx)

以下代码显示了我的Firebase代码段:

//For writing owners location update
taskMap.clear();
taskMap.put("x", Connect.carX);
taskMap.put("y", carY);
taskMap.put("angle", angle);
taskMap.put("rx", rx);
taskMap.put("ry", ry);
taskMap.put("fx", fx);
taskMap.put("fy", fy);
taskMap.put("wheelAngle", wheelAngle);
db.child("public").child(firebaseAuth.getUid()).updateChildren(taskMap);
taskMap.clear();
taskMap.put("damage", damage);
taskMap.put("gear", gear);
taskMap.put("fuel", fuel);
db.child(firebaseAuth.getUid()).updateChildren(taskMap);


//For reading opponent locations update
LibGdx.core.class.dummyCarUpdate(postSnapshot.getKey(),
Float.parseFloat(postSnapshot.child("x").getValue().toString()),
Float.parseFloat(postSnapshot.child("y").getValue().toString()),
Float.parseFloat(postSnapshot.child("angle").getValue().toString()),
Float.parseFloat(postSnapshot.child("rx").getValue().toString()),
Float.parseFloat(postSnapshot.child("ry").getValue().toString()),
Float.parseFloat(postSnapshot.child("fx").getValue().toString()),
Float.parseFloat(postSnapshot.child("fy").getValue().toString()),
Float.parseFloat(postSnapshot.child("wheelAngle").getValue().toString()));

您正在寻找的技术称为插值。此技术允许您平滑连接到数据库的客户端上的移动。


您将需要存储以前的数据以使用新数据进行插值。此外,您还将决定插值在状态之间的速度。

谢谢,我使用了相同的方法来解决我的问题。现在以300毫秒的间隔将数据更新到Firebase,并使用插值进行平滑处理。相信我,一切都很顺利。