魔獸爭霸3技術分析資源匯總
原文 http://jjyy.guru/war3-tech/
玩了多年的魔獸、Dota,帶來了很多快樂,想八卦一下實現。本來打算自己分析的,由于網上已經有很多資料了,這里把相關的資料做個匯總。
歡迎同學補充,可以在聯系中給我留言,或者在評論中回復,我會陸續加上。
項目開發
講的是第一代,也很有參考價值。
中文版:
資源打包技術
MPQ是暴雪公司用于游戲數據打包的工具,能夠把資源放在一個包里,然后對其進行壓縮和加密。網上已經有很多的詳解:
-
MPQ Wiki
MPQ介紹
-
MPQ Archives
MPQ格式手冊
-
游戲資源的壓縮、打包與補丁更新
網易的打包系統設計
-
MPQ Storm
暴雪MPQ庫的開源實現
-
MPQ Storm庫 源碼分析
圖文并茂的源碼分析
網絡同步
Warcraft 3使用的是 lock-step 技術,就是多個玩家的計算結果必須一樣的,誰落后了就要大家等他同步上來。
lock-step的特點,這里有個 回答 講得很清楚。lock-step是不關心游戲邏輯的,只關心用戶輸入。 核心思想就是如果大家每幀計算結果一樣,那么只要保證大家的輸入和初始條件一樣,那么就能夠完成同步。 在手游中經常用偽隨機數做同步,比如《捕魚達人》。lock-step最麻煩的事情是容易產生蝴蝶效應,中間某個步驟計算結果不一樣,那么后面很容易放大,得到完全不同的結果。lock-step中,延遲的處理主要通過時間戳。
網絡同步常見的技術還有 狀態同步 ,這種技術在MMORPG中很常見。具體來講就是同步與玩家同一個區域的所有角色,這些角色身上的所有狀態都有自己同步的邏輯。比如角色行走,那么就會廣 播到同一個區域的玩家上,那么大家都會播放行走的動畫。而行走還有另一個結果,那就是發生位移,為了不影響玩家的手感,玩家的機器先執行,等服務器驗證后 再拉到“正確”的位置。由于網絡存在延遲,位移的同步都要做位置預測,常見的位置同步算法是 “Dead Reckoning - 航位推測法” ,充分考慮了延遲的情況。
更多的網絡同步知識可以看這篇 《每個程序員都該知道的網絡同步知識》 。
編輯器
在Warcraft
3中還誕生了現在大火的Dota,這是因為隨游戲附帶的編輯器有強大的編輯功能。暴雪開發了多款戰略游戲,才有對這種類型游戲的深刻理解。在我看來,最核
心的機制為Event-Condition-Action這個邏輯。暴雪程序員為這套觸發器開發了大量預定義功能。比如Dota里面的發兵:定義定時器
Event,然后就觸發創建某某Unit的Action。