原文出處:
網路的硬體也有限,而人的創造也無限,在公網平均130ms的latency下,是不存在「完全的」的同步情況。如何通過消除/隱藏延時,將使用者帶入快速的互動式實時遊戲中,體驗完美的互動娛樂呢?
以下六點,將助你分清楚哪些我們可以努力,哪些我們不值得努力,弄明白實時遊戲中同步問題關鍵之所在,巧妙的化解與規避遊戲,最終在適合普遍使用者網路環境中(200ms),實現實時快速互動遊戲:
1. 基本情況:
(a) 網路效能指標一:頻寬,限制了實時遊戲的人數容量
(b) 網路效能指標二:延時,決定了實時遊戲的最低反應時間
2. 兩個基本原則:
(a) 讓所有的使用者螢幕上面表現出完全不同的表象是完全沒有問題的。
(b) 把這些完全不同表象完全柔和在乙個統一的邏輯中也是完全沒有問題的。
3. 同步的十二條應對策略:
(a) 最大可能減少遊戲中的資料傳輸
(b) 將阻塞通訊放到執行緒池中實現
(c) 永遠不要為了等待某個資料而不讓遊戲進行下去
(d) 利用**和插值改進遊戲的效果
(e) 當使用**插值的時候傳送的資料不僅包括座標,還需要速度和加速度
(f) 將輸入資料枷鎖或者佇列化(例如鍵盤訊息佇列),直到下次傳送資料的時刻,傳統的方法是在固定的時間(傳送資料前)檢測鍵盤,在遊戲的原理上隱藏延時
(g) 使用事件排程表,將需要在所有使用者客戶端同時發生的事件,提前廣播到所有使用者
(h) 使用多次攻擊來殺死乙個精靈,儘量減少一次性的、確定性的、延時敏感的事件
(i) 延長子彈或者火箭在空中飛行的時間(在其飛行的同時,在所有客戶端進行**插值)
(j) 所有物體從乙個地方移動到另外乙個地方都需要時間,避免諸如「瞬間移動」的設計
(k) 盡量使遊戲中所有精靈,飛船或者其他物體,都按照可**的軌跡執行,比如在移動中增加慣性
(l) 充分發揮創造力,盡最大可能的合併遊戲中前後相關的事件,合併遊戲中存在的延時此問題,需要在技術上改進的同時也需要策劃有所重視,規避一些影響較大的設計,巧妙的隱藏」延時」
4. 同步問題現狀:
(a) 重視程度不夠:很多人尚未意識到此問題的存在,曾有公司花半年時間打算做一款「松鼠大戰」的網路版。
(b) 技術上無徹底解決方案:對於多數程式設計師,單機遊戲技術善未成熟就匆匆步入網路時代。
(c) 研究這個技術需要條件:需要有實力的公司才能提供,無此條件,即便有能力的程式設計師也無法成功。
5. 目前網遊的三大技術難題:
(a) 伺服器的響應問題:如何使伺服器在支援越來越多的人數的情況下提供最高的響應。
(b) 同步問題:如何在有限的網路響應情況下,實現快速實時類遊戲,提供最完美的互動。
(c) 伺服器分布式問題:如何在統一使用者資料的情況下,利用分部式將各個分散的「世界」統一到乙個「世界」中。
誰能真正解決好以上三個問題,配合策劃在設計上的突破,將使其他人在至少兩年內無法超越。
6. 相關補充:
(a) 網格技術現在還是抄作,真正用到遊戲中,還有很多技術難點需要突破(比如:目前網格的單位計算時間是以秒計算).
(b) 其實與很多人想法相反的是現在3d技術早已不是主要的矛盾。而現在國內外對於以上三個問題可以說處於同乙個起跑線上,完全有機會取得先機。
(c) 現在解決同步問題已經很緊迫,而同時所需要的環境也已經成熟,只要有所關注,半年之內可以得出較成熟的結論
那麼具體怎麼解決呢?再下一步怎麼辦?
這就得自己去實踐了,我只說這麼多了,哈哈,不然又教懶了那些成天再網上搜方案的人。
網路遊戲同步法則
網路的硬體也有限,而人的創造也無限,在公網平均130ms的latency下,是不存在 完全的 的同步情況。如何通過消除 隱藏延時,將使用者帶入快速的互動式實時遊戲中,體驗完美的互動娛樂呢?以下六點,將助你分清楚哪些我們可以努力,哪些我們不值得努力,弄明白實時遊戲中同步問題關鍵之所在,巧妙的化解與規避...
網路遊戲同步法則
from 網路的硬體也有限,而人的創造也無限,在公網平均130ms的latency下,是不存在 完全的 的同步情況。如何通過消除 隱藏延時,將使用者帶入快速的互動式實時遊戲中,體驗完美的互動娛樂呢?以下六點,將助你分清楚哪些我們可以努力,哪些我們不值得努力,弄明白實時遊戲中同步問題關鍵之所在,巧妙的...
網路遊戲同步法則
網路的硬體也有限,而人的創造也無限,在公網平均130ms的latency下,是不存在 完全的 的同步情況。如何通過消除 隱藏延時,將使用者帶入快速的互動式實時遊戲中,體驗完美的互動娛樂呢?以下六點,將助你分清楚哪些我們可以努力,哪些我們不值得努力,弄明白實時遊戲中同步問題關鍵之所在,巧妙的化解與規避...