首先,在客户端和服务端连接方面,选用UDP连接,因为每秒要同步15/20帧,与TCP相比UDP比较快,所以用UDP来。
这个15/20帧,不是说游戏运行只有20帧,而是说状态同步二十次。
且每次要完成“索取帧、发送帧、记录帧”的操作,这要在十五分之一秒内完成,你信嘛。
其流程如下所示:
服务端从零开始记录每帧ID并每次自增加一,向客户端发送和索取当前帧ID数据包。
客户端通过网络发送当前操作的数据包。
服务端收到客户端数据包后,转发给其它客户端,并记录当前帧ID操作。
进入采集下一帧,并帧ID自增加一。
客户端通过网络收到数据包,如果帧ID已经同步,则直接丢弃。