《轩辕传奇手游》主程序带你拆解MMORPG游戏客户端
講師簡(jiǎn)介:王春賀,騰訊互動(dòng)娛樂(lè)北極光工作室群客戶端組主程序。擁有10年程序開(kāi)發(fā)經(jīng)驗(yàn),參與過(guò)端游、頁(yè)游、手游等類型游戲的開(kāi)發(fā),現(xiàn)擔(dān)任《軒轅傳奇手游》項(xiàng)目組客戶端主程序。
下文為《〈軒轅傳奇手游〉客戶端分享》內(nèi)容節(jié)選
01、客戶端框架
《軒轅傳奇手游》的客戶端框架可以用一張圖來(lái)描述:左邊的基礎(chǔ)框架相當(dāng)于游戲運(yùn)行的核心庫(kù),建立在Unity引擎的基礎(chǔ)上,集成第三方插件,包括阿波羅組件、NGUI、LUA、VAS,其中基礎(chǔ)模塊包含場(chǎng)景模塊、UI模塊、腳本模塊、特效模塊、網(wǎng)絡(luò)模塊、資源模塊等等;右邊是Game Play,包括引導(dǎo)系統(tǒng)、經(jīng)濟(jì)系統(tǒng)、副本系統(tǒng)、成長(zhǎng)系統(tǒng)等邏輯模塊以及場(chǎng)景、角色、技能、體驗(yàn)等。
?
玩家在登錄游戲時(shí),首先通過(guò)微信和手機(jī)QQ接入,再和游戲服務(wù)器進(jìn)行通信?;旧?#xff0c;所有的數(shù)據(jù)計(jì)算都是在服務(wù)器進(jìn)行,這樣就可以保證游戲不會(huì)因?yàn)閯e人利用外掛,而產(chǎn)生一些經(jīng)濟(jì)上的損失。
02、開(kāi)發(fā)工具
用于支撐游戲的工具包括場(chǎng)景、技能、模型等,做好這些工具能夠大大地提高游戲的開(kāi)發(fā)效率。
1、場(chǎng)景地圖
相對(duì)其他較為早期的手游,《軒轅傳奇手游》的二手QQ賣號(hào)平臺(tái)非常大,這對(duì)于手機(jī)性能來(lái)說(shuō),是個(gè)瓶頸。當(dāng)時(shí),市面上其他游戲的做法,是在游戲進(jìn)入一個(gè)新的場(chǎng)景的時(shí)候,把所有場(chǎng)景的資源都加載進(jìn)來(lái)。這種做法,使得游戲在低端手機(jī)上加載地圖場(chǎng)景時(shí),內(nèi)存、CPU、GPU都難以負(fù)荷。因此,《軒轅傳奇手游》針對(duì)這個(gè)問(wèn)題做了一個(gè)Streaming加載,就是流式加載,可以理解為動(dòng)態(tài)的按需加載。這個(gè)方法使得游戲在加載大場(chǎng)景時(shí)也可以流暢地運(yùn)行。
但完全的流式加載,可能會(huì)無(wú)法兼顧遠(yuǎn)景,并非最好的選擇。因此,《軒轅傳奇》手游采用的是混合式加載,即先加載基礎(chǔ)場(chǎng)景,比如天空盒、標(biāo)志性建筑等,等玩家進(jìn)去后,再使用流式加載,如此效果會(huì)更好。
在地圖場(chǎng)景里,還有非常重要的一點(diǎn),就是尋路。傳統(tǒng)的尋路是采用A*算法,但對(duì)于大場(chǎng)景來(lái)說(shuō),A*算法的效率很低。所以,需要對(duì)場(chǎng)景進(jìn)行分層,即HPA,把場(chǎng)景進(jìn)行劃分,進(jìn)行預(yù)計(jì)算,再用A*算法,可以大大縮減尋路時(shí)間。
2、技能
游戲中每一個(gè)效果是一個(gè)TimeLine(時(shí)間軸)序列,由一組軌道組成:動(dòng)畫、特效、聲音或其他事件。技能擴(kuò)展性強(qiáng),所見(jiàn)即所得。比如我想加一個(gè)變身,只要在這個(gè)時(shí)間軸上再擴(kuò)展一下,增加一個(gè)變身的事件,就可以實(shí)現(xiàn)變身效果。
?
3、客戶端框架更新方案
游戲經(jīng)常會(huì)有內(nèi)容更新和bug的緊急修復(fù),更新分為兩種:一種是大版本的更新,比如說(shuō)兩個(gè)月更新一個(gè)大版本,整個(gè)安裝包全更新;還有一種是熱更新,就是資源更新。
在iOS上有一個(gè)政策,游戲的可執(zhí)行文件是不能直接更新的,必須通過(guò)App Store審核,但它的審核時(shí)間很長(zhǎng),每一次大概需要兩三天左右。一旦游戲需要緊急修復(fù)bug,《軒轅傳奇手游》就會(huì)采用一個(gè)熱更新的方案。游戲大部分的代碼都是通過(guò)LUA來(lái)做的,LUA是一個(gè)宿主型語(yǔ)言,它可以嵌入在游戲的原生語(yǔ)言當(dāng)中,把LUA作為一種資源,打包之后,有問(wèn)題就可以直接把LUA的代碼更新。這樣就可以保證,游戲每個(gè)版本都不用去進(jìn)行原始包更新,只要做一個(gè)LUA的增量更新就可以。
?
03、性能優(yōu)化
多人大規(guī)模PK的高頻率出現(xiàn),會(huì)導(dǎo)致手機(jī)的性能、發(fā)熱、耗電等問(wèn)題,這讓《軒轅傳奇手游》的開(kāi)發(fā)者必須重視游戲的開(kāi)發(fā)效率和性能效率。作為開(kāi)發(fā)者,要從代碼做起,保持代碼清晰規(guī)范、簡(jiǎn)潔高效,并且定期地、持續(xù)地去優(yōu)化代碼,進(jìn)行代碼的Review。
在客戶端代碼本身沒(méi)有問(wèn)題的情況下,需要具體分析,找出瓶頸在哪里,然后指定一個(gè)策略進(jìn)行全局的優(yōu)化。策劃、美術(shù)、程序、測(cè)試都要一起去解決問(wèn)題,才能給玩家很好的游戲體驗(yàn)。
總結(jié)
以上是生活随笔為你收集整理的《轩辕传奇手游》主程序带你拆解MMORPG游戏客户端的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 利用AI技术自动测试游戏
- 下一篇: 《炉石传说》架构设计赏析(4):Asse