彭偉國 劉玉坤



摘要:隨著人們的生活節奏加快,工作壓力不斷增大,越來越多的玩家通過RPG游戲釋放壓力;《地獄天使》RPG游戲開發框架包含功能視圖層、功能模塊層、功能底層,是一款支持多人在線的角色扮演類游戲。
關鍵詞:Unity3D;RPG;對象池;事件分發
中圖分類號:TP37 文獻標識碼:A
文章編號:1009-3044(2019)35-0070-02
1 背景
角色扮演游戲(Role-playing Game,PRG)是網絡游戲類型之一,用戶在游戲中負責扮演特定角色在一個寫實或虛構世界中活動[1]。根據第一手游網10月17日開服情況來看,手游開服193組,其中PRG游戲就有112組,可見PRG游戲的受歡迎程度。游戲的開發過程一般都經過游戲策劃、游戲美工設計、游戲功能實現、游戲測試等重要環節。
2 游戲策劃
2.1游戲故事背景
突然有一天,來自地獄的怪物統治了虛擬角色所在的小鎮,危機前所未有,小鎮里的人們向游戲主角發起了求助,期望出現一個戰斗天使,帶領小鎮的人們走出地獄,回歸正常生活。
2.2游戲規則
首先,玩家只有注冊賬號并且登錄游戲才能繼續進行游戲,游戲中的兩大模塊為闖關模式和網絡對戰模式。玩家想要變強,要通過闖關模式,擊殺關卡里的所有怪物,來獲得關卡獎勵,獎勵會有裝備獎勵,玩家裝備更高等級的裝備使自己變得更強大。玩家強大之后,可以參加網絡對戰模式,和其他玩家戰斗,誰的血量先變為0,則另外一方獲得勝利,獲得勝利的一方,會增加相應的競技分數。
2.3游戲功能需求
經過對游戲玩法的分析,該游戲中需要有以下功能:注冊與登錄功能、角色選擇功能、游戲關卡功能、資源管理功能、角色控制功能、技能管理功能、任務管理功能、裝備管理功能和網絡對戰功能。
3 RPG游戲開發架構
本游戲遵循“高內聚低耦合”的開發思想,借鑒王異帆[2]手機游戲框架分層,提出RPG游戲開發框架應包含功能視圖層、功能模塊層、功能底層,如圖1所示。該三層架構的業務流程如下:
1)功能視圖層根據用戶的操作發送指令給功能模塊層;
2)功能模塊層收到功能視圖層發出的指令,對操作的合法性的信息進行驗證,然后向功能底層發出對數據訪問的操作;
3)功能底層收到功能模塊層發出的指令后對數據做驗證,并且將結果返回給功能模塊層;
4)功能模塊層對收到的數據進行驗證,驗證完成后將結果發送給功能視圖層。
功能視圖層主要是展現給用戶的游戲交互界面,也就是客戶端的顯示,該層主要包含UI事件分發管理、輸入管理、場景管理、界面管理、角色管理等。
功能模塊層主要是游戲中一些業務邏輯,是功能視圖層和功能底層之間的橋梁。針對功能視圖層的請求,對數據進行處理然后返回給功能視圖層顯示。
功能底層是對數據的操作,主要與數據庫打交道。將存儲在數據庫中的數據提交給功能模塊層,同時將功能模塊層處理的數據保存到數據庫。
4 游戲美工設計
游戲美工設計主要包含游戲UI設計、角色設計和游戲場景設計,對應于三層開發框架的功能視圖層。4.1游戲UI設計
UI設計是通過NGUI插件在Unity游戲引擎中實現的,包含資源加載界面、注冊登錄界面、選擇服務界面、選擇角色界面、游戲主界面、游戲關卡界面、競技界面、任務界面、裝備界面、戰斗界面。
首先需要先創建UI管理類,對游戲中的所有UI進行統一的管理,創建UIManager類,首先在該類中創建LoadAllWindows方法,該方法加載Resources/UI路徑下的所有UI面板預制體,然后在該類中創建ShowWindows方法,該方法根據傳遞的面板名字,顯示相對應的UI面板;最后創建HideWindowsByName方法,該方法根據傳遞面板名字,隱藏對應的UI面板。
各個UI界面寬高比統一設置為1280*720像素。每一個UI界面的實現,其Unity層級面板中包含的控件元素不同,按照UI設計實現效果組合并設置控件的屬性和參數。比如,裝備UI界面就包含有UIPanel、UISprite、UILabel、UISprite、UIButton等控件,最終UI實現效果如圖2所示。
4.2游戲場景設計
本游戲中有四個場景,每個場景關卡中都擁有樹木、房屋、花草等物品,樹木與花草等模型使用外置資源包,房屋模型建筑使用Maya軟件制作。先通過Unity自帶的Terrain地形工具先搭建地形輪廓,然后對地形做一些細節的調整,然后種植一些樹木,并將房屋等裝飾擺放到場景中。
各個場景之間會進行相互的跳轉,為了方便統一的管理使用了場景管理類,創建SceneManager類,首先在該類中創建LoadScene方法,在該方法中,根據傳遞的場景名字找到Scenes路徑下對應場景文件,然后顯示加載界面UI,再使用LoadAsync方法,異步加載場景,并且在加載界面中顯示出加載進度。
5 功能模塊設計
本游戲采用模塊化的設計思想對功能進行拆分,用戶可以通過控制角色進行闖關和網絡對戰;用對象池技術,降低游戲性能的消耗;開發過程中采用單例設計模式和觀察者設計模式,使其滿足“高內聚、低耦合”的需求。實現的游戲功能包括注冊與登錄、游戲關卡、資源管理、角色選擇、角色控制、技能管理、任務管理、裝備管理、網絡對戰等。下面僅以技能管理功能的設計與實現為例進行介紹。
技能管理作為基礎功能,將與戰斗、裝備三大系統為角色戰斗提供全部邏輯功能。技能管理本質上是,提取“技能配置數據”,執行“技能執行邏輯”,得到“技能效果”,循環“技能效果”,修改目標角色屬性或調用相應API。游戲技能以配置表的方式將技能抽象出來,在實際的戰斗過程中,根據配置表進行一些數值的計算、界面的顯示和動畫的播放。
技能管理功能的實現上,編寫SkillBar腳本,并且注冊On-ButtonPress和OnButtonClick事件到普攻和技能按鈕上。OnBut-tonPress用于實現普攻消息分發,OnButtonClick用于玩家點擊釋放技能。SkillBar腳本中的Update方法內實現技能冷卻。在滿足釋放條件之后,調用GfxSkillSystem類的StartSkill方法,施放技能,并將角色的狀態發送給服務器。服務器通過網絡協議收到客戶端的發來的數據時,判斷此時玩家是否可以釋放技能。
6 功能底層設計
6.1服務器管理設計
服務器管理設計主要是對服務器邏輯的管理,采用不同的進程進行邏輯的處理,分為網關服務器、數據存儲服務器、邏輯服務器、房間管理服務器和登錄服務器,不同的服務器通過進程間的通訊進行訪問,客戶端直接與網關服務器和登錄服務器交互,客戶端的其他操作由網關服務器進行轉發,從而使服務器之間的各個模塊獨立化,客戶端與各個服務器之間的交互如下圖4所示:
6.2日志管理設計
在開發的過程中會出現各種未知的錯誤或者警告;隨著項目開發的越來越大,后期修BUG是非常困難的,所以在正常的開發中要經常打印一些關鍵的日志,為以后查找問題提供便捷。在設計日志管理的時候,將打印的日志進行分類,有不同的等級,方便后期進行篩選,而且在打印日志時,要詳細說明做了什么操作,這對監控我們整個項目的運行起著非常重要的作用。
6.3數據庫設計
本游戲采用Mysql數據庫進行開發。經過對此游戲中數據的分析和對角色信息進行抽象,本游戲需要四張數據表才能實現相應的功能,分別為:賬號數據表、角色數據表、裝備數據表和技能數據表,然后根據具體的功能需求,設計數據表中相應的字段。
7 游戲測試
界面是游戲的“臉面”,玩家的所有交互行為幾乎都與界面有關,界面好壞是玩家對游戲評價最重要的標準之一。另外,還要檢測游戲中各個UI界面是否正常適配。功能測試通常也叫作黑盒測試或數據驅動測試,對各個功能模塊進行測試。表1列舉了網絡對戰功能測試信息。
8 結束語
本游戲具有網絡實時交互的特點,玩家之間可以進行實時戰斗,是一款支持多人在線的角色扮演類游戲。在游戲制作過程中,對服務器模塊進行拆分,提高服務器的運行效率;采用事件分發機制降低代碼的耦合性等。
參考文獻:
[1]袁科,高啟文,閆永航.基于Unidy3D的角色扮演游戲設計與實現[J].軟件導刊,2019,8(8):75-78.
[2]王異帆.基于Cocos2d_x游戲引擎的塔防類手機游戲框架設計與實現[D].武漢:華中師范大學,2015.
【通聯編輯:謝媛媛】
收稿日期:2019-10-19
作者簡介:彭偉國(1983-),男,河南宜陽人,講師,碩士,研究方向為數字媒體技術應用;劉玉坤(1978-),男,河南通許人,講師,碩士研究生,研究方向為信息安全、計算機應用。