我想用谷歌播放服务构建一个实时多人游戏,当一名玩家在屏幕上移动一张卡时,另一名玩家会看到第一名玩家的移动。基本上,我不想在玩家之间只传一个分数,而是让他们在完全相同的屏幕上玩,看看对手的动作。
我遵循了本教程:https://developers.google.com/games/services/android/realtimeMultiplayer
玩家之间似乎会发送字节数组。如何将整个游戏状态作为字节数组传递?
如果这有助于理解:假设我想使用谷歌播放服务构建一个实时赛车游戏,我如何让玩家看到彼此的汽车和汽车的运动?
有没有一个关于它的源代码示例,这样我就可以研究它了?
我遇到了类似的问题,我相信我有一些东西需要您检查:
http://www.tutorialspoint.com/java/java_serialization.htm
不幸的是,我没有正确地实现它,但我认为我已经接近了。
序列化的整个想法是,您将游戏状态作为一个对象(可能会创建另一个类,如Race state或其他类),该对象将您的所有数据作为字段,将其写为字节数组,并在发送可靠/不可靠消息时返回该字节数组(我仍然建议可靠,除非您计划更正丢失/无序的数据包)。
另一方面(读取数据包),您只需接受字节数组(在onMessageReceived()
中),调用getMessage()
(我认为它可以消除任何无关的传输数据),读取字节并将其转换为您的游戏状态对象。然后,您应该能够get()
您的游戏状态的字段数据,并根据需要使用。
同样,这对我来说仍然是一项正在进行的工作(我知道这很令人沮丧),但不要麻烦以字节或编码的形式发送字符串,因为这会混淆数据。我希望文档中能更清楚地实现这一点,尽管它假设大多数人以前都使用过网络数据。
欢迎提问,祝你好运。