这个一个联机对战游戏,一方操作后会将消息发送给MGBOE,MGBOE再发送给房间内的其他玩家,每个玩家根据消息运行逻辑,经过测试,接收消息正常,逻辑也都在执行。
因为在浏览器测试,有后台堆积消息,一起处理的问题,发现如果操作一步,切下页面,逻辑正常,但如果操作多次,消息堆积后则会出现画面不一致的问题。
以下为正常的gif
以下为堆积的gif
问题就是,逻辑代码没有报错,也是按照顺序执行的,可是场景少走了一步。
哪位大佬看看是什么问题。
需要代码我也可以发出来,反正以后是准备开源的。
这个一个联机对战游戏,一方操作后会将消息发送给MGBOE,MGBOE再发送给房间内的其他玩家,每个玩家根据消息运行逻辑,经过测试,接收消息正常,逻辑也都在执行。
因为在浏览器测试,有后台堆积消息,一起处理的问题,发现如果操作一步,切下页面,逻辑正常,但如果操作多次,消息堆积后则会出现画面不一致的问题。
以下为正常的gif
忽略掉积累的消息,只处理,最后一条消息。如果消息数据不足 ,没办法同步,就在切回来的时候,重新请求一下游戏的状态,整体刷新一下。可以 加一个loading动画,遮挡一下。
因为浏览器出于后台时,是不做渲染的
你把消息多添加一个index字段,永远自增,客户端按这个值的大小依次处理
数据和渲染解耦,另外处理数据的定时器不要用cocos,正如楼上所说,渲染停止时,数据处理不应停止
接收数据的时候并没有用到定时器啊
提问发出就不管了,一周后才回来看,真溜!
不是啊,我早就看到你这个回答了,没回复你是我的问题,我道歉。
不回复是因为,你说的index我之前就已经加上了,逻辑代码也是按照消息队列执行的,像是画面渲染有错位
那我怎么知道用户把游戏切换到后台了,怎么监听到他又切回来了呢
cc.game里有两个事件可以监听游戏暂停和恢复
好的,我去看看
该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。