xingshuo / frame_sync_model

A small game based on frame synchronization
MIT License
17 stars 2 forks source link

rtt #1

Open ayongbc opened 6 years ago

ayongbc commented 6 years ago

在看这块代码 有几个疑问, 1、c2gs_rtt_data这个消息没有看到使用啊,是应该在那里使用的, 2、这套结构会出现丢包的情况吗 3、怎么才能保证每一个客户端的一致性,比如有的客户端造假数据,或者有的客户端卡的情况下

xingshuo commented 6 years ago

1.c2gs_rtt_data 这个是预留统计延迟的 2.tcp 不会 3.1客户端假造数据是不会影响他人的,因为帧同步只同步操作,假设A同步了一个不合法的操作给后台,后台广播给B的时候,B没有作弊的情况下会判断A的操作无效而丢弃,假设A作弊使得本地该操作生效,最坏的结果是整场对局的结果和其他人不一致,后台在收到所有人上报的结果后,如果判断到出现不一致的情况,可以根据本场战斗所有的操作包,回放整场战斗,从而计算出结果,再与所有客户端上报的结果逐一校验 3.2假设某个客户端在时间t0 ~ t1网络条件很差,导致本地操作延后很久才到后台,这时后台可以根据客户端发出操作时收到的最新后台同步帧号比如100,而假设实际上后台收到该操作时已经同步到第200帧,则判断丢弃,在网络恢复正常后,客户端会陆续收到t0~t1时间内后台的同步帧,这时客户端应该根据缓存包数量做加速播放逻辑直至与其他人保持同步