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