《王者榮耀》Moba類游戲要學哪些技術
王者榮耀》屬于典型的Moba類游戲,和《英雄聯(lián)盟》屬于同一種游戲類型,那么《王者榮耀》這種游戲是如何制作的?又需要學習哪些技術點呢?今天我們一起來分析一下。
?
Moba是什么
《王者榮耀》屬于Moba類型游戲,Moba英文全稱(Multiplayer Online Battle Arena)
縮寫為Moba, 中文翻譯為多人在線戰(zhàn)術競技游戲, 又稱動作即時戰(zhàn)略游戲, 這種游戲最重要的是玩家的手感,為了獲得更好的玩家手感, 一般Moba類的游戲同步方式和傳統(tǒng)MMORPG的狀態(tài)同步方式不一樣,采用的是幀同步,《王者榮耀》就是采用幀同步,也有使用狀態(tài)同步的Moba游戲。
?
幀同步是什么
游戲服務器每隔一段時間(邏輯幀)采集各個客戶端的玩家操作,然后把采集到的玩家操作,發(fā)往每個客戶端,客戶端自己來計算游戲邏輯,根據(jù)同樣的玩家輸入+同樣的代碼邏輯,得到同樣的運行結果,這樣每個客戶端就同步了。
服務器每隔一段時間,這個一段時間是多長合適呢?原則上來說時間越短越好,時間越短,玩家操作響應反饋就越及時,但是隨之而來的網(wǎng)絡帶寬和計算成本也增加了,于是就有了一個原則,在不影響玩家手感的情況下,越少越好,根據(jù)研究,玩家的反應時間約為50~100毫秒,所以幀同步設計為10~20幀,不會影響玩家手感, 據(jù)小道消息,暴雪的《守望先鋒》每秒20幀。幀同步主要的業(yè)務邏輯全部都放客戶端計算,所以服務器基本沒有什么運算量, 性能好。由于所有的計算都放客戶端,幀同步也有容易作弊的缺點。
?
幀同步比狀態(tài)同步獲得更好的手感
在網(wǎng)速正常的情況下,其實狀態(tài)同步也能獲得很好的手感,同時狀態(tài)同步又是放服務器計算的更安全,為何我們不用狀態(tài)同步做Moba而是用幀同步呢?狀態(tài)同步和幀同步最大的區(qū)別在于網(wǎng)絡波動的時候,網(wǎng)絡經(jīng)常會有波動,狀態(tài)同步,如果服務器由于網(wǎng)絡波動沒有及時的發(fā)送狀態(tài)數(shù)據(jù)包到客戶端,這樣客戶端就會卡住(雖然時間很短,但影響手感),而幀同步就不一樣,如果由于網(wǎng)絡波動,幀同步客戶端沒有及時的收到玩家的操作,客戶端還可以基于上一幀來做預測,因為玩家1秒能有3個不同操作就很不錯了(一秒你能點幾次按鈕,自己可以測試一下),所以當網(wǎng)絡波動的時候,通常基于上一幀的預測是非常準確的,所以幀同步應對網(wǎng)絡波動的時候獲得更好的手感。同時配合UDP的傳送,能讓手感更好。
?
《王者榮耀》采用了哪些技術?
《王者榮耀》整個分為:程序開發(fā),美術設計,游戲策劃。程序開發(fā)分為客戶端與服務端兩個部分,客戶端采用的是現(xiàn)在應用比較廣泛的3D游戲引擎Unity來開發(fā),服務端采用的是C++來開發(fā)。一般像騰訊這些大公司都會獲得Unity引擎的源碼授權,每個項目開始的時候,都會自己定制渲染管線來獲得最佳的游戲畫面效果與性能,同時也會有自己的項目引擎框架。C++做服務器,性能非常的好,同時技術也非常的成熟,《王者榮耀》項目組也是之前做的一個項目轉(zhuǎn)變而來,技術也積累了很久,服務端也有自己的一套框架。游戲美術分為游戲原畫,角色建模,場景建模,動作粒子特效,游戲UI幾個部分組成,原畫負責設計每個英雄的美術風格,外形, 平面地圖等,角色建模根據(jù)原畫,把每個角色模型都建好,模型建好后,動作美術調(diào)好動畫特效,游戲場景也類似,原畫設計后,場景建模人員建3D場景模型,打上光照,最后烘培場景出來給程序使用。王者榮耀的策劃做的很好,各職業(yè)的平衡也設計的非常好,這也是它受廣大玩家喜歡的原因之一。
?
好今天的分享就到這里,喜歡王者榮耀,對王者榮耀技術感興趣的同學,你們準備好自己開始做了么?