守望的實(shí)現(xiàn)思路
大概性總結(jié):客戶(hù)端先行稍微領(lǐng)先服務(wù)器蝗蛙,中間大概差半個(gè)RTT時(shí)間滥玷,對(duì)于用戶(hù)的操作一般都是立即反應(yīng),狀態(tài)進(jìn)行一些預(yù)測(cè)(其實(shí)只是部分預(yù)測(cè)寒屯,如:移動(dòng)狀態(tài)荐捻,彈跳軌跡。攻擊狀態(tài)是不會(huì)預(yù)測(cè)的)先演示寡夹,在收到服務(wù)器的消息后進(jìn)行校對(duì)修正处面。本地別人的狀態(tài)也是同樣的邏輯用收到的最后一幀狀態(tài)模擬,直到新的消息狀態(tài)收到菩掏。在回拉矯正的過(guò)程中用插值魂角。
其中 遵循 攻擊者優(yōu)先 就是說(shuō) 在一定的回滾范圍內(nèi),一旦一方判斷擊中目標(biāo) 服務(wù)器校驗(yàn)真實(shí)就算擊中智绸。
服務(wù)器和客戶(hù)端 緩存 回滾有一個(gè)上限一旦消息間隔超過(guò)這上限值 便不再遵循上述的優(yōu)先級(jí)因?yàn)榫W(wǎng)絡(luò)環(huán)境太差了野揪。
上面說(shuō)到的客戶(hù)端預(yù)測(cè)是有選擇的預(yù)測(cè)访忿。很多關(guān)鍵性的事情還是要等服務(wù)器校驗(yàn)后結(jié)果,就會(huì)產(chǎn)生一種表現(xiàn) 就是擊中某處或某人斯稳,只在上面產(chǎn)生彈痕或者爆炸特效 但是是否減血等數(shù)據(jù)變化都要等到服務(wù)器確定消息后再變化海铆。
能夠保證邏輯狀態(tài)等能夠靈活回滾,變速發(fā)送消息等特殊同步機(jī)制挣惰,就需要把邏輯和顯示強(qiáng)分離卧斟。這可能也是最后守望用了ecs的設(shè)計(jì)模式的原因。
一個(gè)b站的視頻 主要說(shuō)了網(wǎng)絡(luò)同步