cocos creator如何实现逻辑帧和渲染帧的分离

最近准备基于小游戏联机对战引擎做一款帧同步游戏

在查阅了大量关于帧同步的内容后,总结出帧同步的基本概念是:相同操作,相同输出

其中相同的是逻辑帧,而不是渲染帧

那么,问题来了,creator生命周期中的update是渲染帧

我怎么分离渲染帧和逻辑帧,实现通过逻辑帧驱动渲染帧的效果,从而实现逻辑帧的一致性,进而实现游戏的同步?

先拜谢回复本贴的大佬们

其实大致是生产者消费者那样:
服务器定时发过来逻辑帧的数据,客户端这边不停的去消耗逻辑帧,同时渲染帧不停的做补间动画
(大致原理是这样,但实际情况处理起来可能并没有这么简单)

1赞

请问服务端发送过来逻辑帧数据之后这一段的处理过程,能否给出部分伪代码加以说明,谢谢

真的处理过程挺麻烦的:逻辑帧积压太多怎么加速、渲染帧怎么预判、渲染帧回退,想想都脑壳疼,在这只能说个大概

const 逻辑帧 = [];

// 接受并存储服务器数据
socket模块.on('接受帧数据', (data) => {
    逻辑帧.push(data)
})
....
// 用定时器去消耗,还是推荐用cocos的定时器吧
// 消耗这块要多考虑下帧太多应该怎么办
消耗逻辑帧update(){
    if(逻辑帧.length){
        const data = 逻辑帧.unshift();
        //哔哩吧啦妈咪妈咪哄
        得到渲染帧需要用的数据
    }
}
....
// 这里可能就是各个组件上的update了,即渲染帧
update(dt){
    // 根据消耗逻辑帧update里面得到渲染帧需要用的数据做补间动画
    this.node.x += speed * dt;// dt这种东西一般只能在渲染帧使用
}

你可以 适当 的参考一下这个例子(大佬看不见)creator2.0实现的帧同步Demo

也期待一下其它大佬们的看法吧