狀態(tài)同步的錄像系統(tǒng)

一般認(rèn)為幀同步的錄像會更容易實現(xiàn),因為對于每個客戶端,戰(zhàn)斗由用戶操作命令序列驅(qū)動愿棋,只需要記錄命令序列均牢,在播放錄像時再重播這個序列即可。對于狀態(tài)同步甘邀,其實錄像的原理和幀同步比較類似垮庐,因為驅(qū)動服務(wù)器執(zhí)行戰(zhàn)斗邏輯的也是用戶的命令序列,我們同理可以記錄每個服務(wù)器幀用戶的輸入突硝,在播放錄像時回放用戶的輸入解恰,即可復(fù)現(xiàn)戰(zhàn)斗過程浙于。

復(fù)現(xiàn)戰(zhàn)斗過程的本質(zhì)是要做到完全一致的命令序列,在完全一致的時間軸上羞酗,在完全相同的環(huán)境(相同的環(huán)境目前主要是隨機(jī)性一致)下執(zhí)行,即可得到完全一致的結(jié)果胸竞。要注意幾個比較核心的問題:

  1. 要保證錄像和戰(zhàn)斗是完全一致的命令序列参萄,需要按順序記錄處理的命令。這個雖然看起來比較簡單校赤,但是實際上卻比較容易踩坑筒溃,要注意接受到用戶命令的時間點和真正處理用戶命令的時間點之間的差異。

  2. 狀態(tài)同步戰(zhàn)斗服務(wù)器執(zhí)行命令序列最好的做法是定幀處理命令浑测,這樣就可以在播放的錄像的時候?qū)⒚钚蛄袆澐值讲煌膸?zhí)行歪玲,能夠比較容易實現(xiàn)一致的時間軸怎顾。反之漱贱,如果命令是實時處理的,在復(fù)現(xiàn)時對時間精度要求極高幅狮,不易實現(xiàn)復(fù)現(xiàn)。

  3. 所有計時都由唯一的delta_time驅(qū)動擎值,如果服務(wù)器幀是10幀逐抑,delta_time取const 100ms,這里要注意的是delta_time不能獲取真實的幀與幀之間的時間差进每,因為delta_time會有很低的概率出現(xiàn)波動命斧,不是100ms。這一點也是用來保證時間軸一致的贤徒。

  4. 隨機(jī)性可控汇四,要保證錄像和實際戰(zhàn)斗的隨機(jī)序列的一致,一般使用同樣的隨機(jī)種子即可通孽,如果使用了第三方的庫也要注意保證隨機(jī)一致的問題。這個是保障戰(zhàn)斗是在相同的隨機(jī)環(huán)境下執(zhí)行挨厚。

  5. 驅(qū)動狀態(tài)同步計算的不僅僅是用戶輸入糠惫。對于我們的游戲的某個版本,為了提高子彈命中和扣血的匹配巢价,所有子彈的扣血由客戶端命中后向服務(wù)器請求觸發(fā),獲取扣血結(jié)果進(jìn)行顯示城菊。這個子彈命中的命令是實時處理的碉克,這點與我們第一條要求相悖,我們要做到完全同樣的時間點執(zhí)行子彈命中是比較麻煩的一件事漏麦,但是好在我們有第二點原則,所有時間都是由delta_time驅(qū)動更耻,我們只需要在每幀的用戶輸入序列執(zhí)行前執(zhí)行與上一幀之間的子彈命中命令捏膨,即可完成復(fù)現(xiàn)。這里有一個假設(shè)是目胡,服務(wù)器每幀的執(zhí)行期間不會有子彈命中命令到達(dá)诚隙,這個我們通過加鎖來實現(xiàn)。在游戲后面的版本中,子彈的命中改為由服務(wù)器驅(qū)動效五。

  6. 保證所有命令的執(zhí)行不會有并發(fā)

  7. 容器的訪問順序問題脉执。不要使用對象直接做key戒劫,因為對象的內(nèi)存地址是不穩(wěn)定的,這樣訪問順序可能會存在不確定性巫橄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湘换,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子彩倚,更是在濱河造成了極大的恐慌,老刑警劉巖蔬蕊,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哥谷,死亡現(xiàn)場離奇詭異,居然都是意外死亡囱修,警方通過查閱死者的電腦和手機(jī)王悍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門压储,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人集惋,你說我怎么就攤上這事刮刑。” “怎么了雷绢?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵翘紊,是天一觀的道長。 經(jīng)常有香客問我鹉究,道長踪宠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任匿级,我火速辦了婚禮,結(jié)果婚禮上津函,老公的妹妹穿的比我還像新娘孤页。我一直安慰自己,他們只是感情好行施,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布蛾号。 她就那樣靜靜地躺著,像睡著了一般展运。 火紅的嫁衣襯著肌膚如雪精刷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天埂软,我揣著相機(jī)與錄音纫事,去河邊找鬼。 笑死咖杂,一個胖子當(dāng)著我的面吹牛蚊夫,可吹牛的內(nèi)容都是我干的懦尝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼琅轧,長吁一口氣:“原來是場噩夢啊……” “哼踊挠!你這毒婦竟也來了冲杀?” 一聲冷哼從身側(cè)響起睹酌,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤憋沿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辐啄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年抵怎,在試婚紗的時候發(fā)現(xiàn)自己被綠了阱洪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡承璃,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蚌本,到底是詐尸還是另有隱情盔粹,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布程癌,位于F島的核電站舷嗡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嵌莉。R本人自食惡果不足惜进萄,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锐峭。 院中可真熱鬧中鼠,春花似錦、人聲如沸沿癞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惫搏。三九已至具温,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筐赔,已是汗流浹背铣猩。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留川陆,地道東北人剂习。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像较沪,于是被迫代替她去往敵國和親鳞绕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理尸曼,服務(wù)發(fā)現(xiàn)们何,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,967評論 6 13
  • 幀同步在網(wǎng)上可以搜的資料比較少控轿,關(guān)于游戲的更是沒有冤竹,不過,實現(xiàn)的原理也比較簡單茬射,最近幾天就寫了份關(guān)于幀同步的文檔鹦蠕,...
    某人在閱讀 5,041評論 2 12
  • 今天見了好多人钟病,喝了一點酒,胃里滿滿的刚梭,和你說了很多關(guān)于戒酒的事肠阱,估計這些年都不能把酒給戒了。好吧朴读,我答應(yīng)你屹徘,下次...
    一捧狗尾巴草閱讀 337評論 0 1
  • 2017年1月27日 星期五 臘月三十 登封 1——7度 陰 早起:5:24 學(xué)習(xí):個人誦讀《易經(jīng)》系辭上1-4章...
    三寶媽肖雪強(qiáng)閱讀 355評論 7 5