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