王 洋 王元鴻 胡志慧*
(湖北汽車工業學院 電氣與信息工程學院,湖北 十堰 442000)
中國游戲市場持續增長,用戶體量進入存量博弈。中國游戲市場規模在過去的幾年保持高速增長,行業銷售規模逐年有明顯突破。與此同時,游戲在不同平臺中發行的頻率越來越高,從客戶端到網頁端,從網頁端到移動端,越來越多的平臺對游戲行業的支持變得友好。高速高頻的移動處理器,速度快、延遲低的5G 網絡,這些先進的科技催生出越來越多的游戲,在此其中,網絡游戲也得以有更好的游玩體驗。因此游戲行業在中國會成為互聯網產業的重頭,將會帶來持久的經濟發展和良好的就業前景。
游戲開發在各國都有很大的技術和游戲交流圈,每當有游戲發布或預熱宣傳,都會引起一次不小的討論,這會涉及到游戲開發技術的運用和硬件技術突破。游戲開發不僅有計算機專業人才研究,也需要藝術、文學、哲學以及數學工作者的參與,游戲美術描繪了游戲表現、游戲音樂烘托游戲氛圍、心理學哲學洞悉玩家內心、游戲文學闡述玩家游戲情節,數學模型用以提升游玩反饋。諸多行業參與進游戲開發,所以這個行業作為IT 行業是一個融合技術與藝術的熱門行業。
本文開發研究的網絡游戲基于Unity 引擎實現,它具有強大的圖形接口和資源優化方案,豐富的游戲資源和功能性插件。Unity 采用組件模式開發,一般開發模式完全基于代碼實現,與虛幻4 的藍圖比較上手容易、進階難,要實現復雜效果耗時較長[1]。雖然自身也有一些集成開發功能,但也得依賴于現有的插件。其中為了解決高級效果的開發時長問題,一般會采用發布版的插件。
“unity-chan! ”和“RealToon”這兩款資源包中包含了二次元次時代卡通渲染,當前游戲中的主要角色模型都使用其中的著色器進行渲染的。上述的MMD4Mecanim 插件基礎著色器也是基于“unity-chan!”插件實現的[2]。圖1 將模型的顏色進行梯度區分,去掉高光和投影色,通過渲染最主要的關鍵特征,包括不同于真實感渲染的藝術化光影效果以及輪廓描邊,并將物體受光照的顏色從多色階降到低色階,減少顏色的豐富程度。

圖1 卡通著色器效果圖
在“unity-chan!”插件中,實現了頭發隨運動者的物理狀態進行自由擬真擺動,同時實現了毛發體積碰撞,在理想情況下可以防止頭發和身體的碰撞器穿模。該插件組件參數調整起來難度很大,完全模擬毛發物理效果還是比較難的。
系統的一些較為開放的場景采用了“TENKOKU Dynamic Sky”插件,該插件通過豐富的參數設置非常方便的實現了動態天氣系統,會根據時間和時間縮放來隨意控制天氣變化。插件同時實現了天氣變化帶來的環境變化,包括了光照變化、太陽光運動陰影變化、環境音效、隨機天氣效果等技術。其中使用了動態的天空盒來計算光照角度和云霧變化,同時雨水、雪花、風速效果并非是粒子特效,而是真實的物理效果,可以和游戲物體進行交互,圖2 為兩張同時間流逝下的天氣變化圖。

圖2 動態天氣效果對比圖
“Simple RPG Camera”這個插件是專門為RPG 游戲的攝像機設計的,3D 游戲的角色攝像機需要與角色操作進行綁定,使用基礎的攝像機和代碼控制會顯著增加系統耦合,因為攝像機系統受多個模塊操作影響,如技能釋放無法運動,打開UI 鎖定旋轉和鼠標等。該插件將這些操作分離出來,攝像機并非綁定在玩家身上,而是作為一個物品單獨存在,這樣在角色控制器上不必花太多的時間去寫攝像機邏輯,同時減少了控制層級邏輯代碼量和可控參數。
游戲中使用了大量的特效插件,包括卡通特效、魔法特效(帶動作集合)、武器拖尾特效等,增加游戲玩法和畫面表現。特效部分屬于美術模塊,這一塊的執行流程是先獲取大量的特效資源,之后根據需求篩選和調整特效。
Unity 引擎中的動畫狀態機,使用“狀態模式”的設計模式來完整各個動作狀態的轉換,將代碼圖形化、更方便操作。
此外在一定情況下,玩家會同時處于多個狀態的融合,比如玩家會同時向后和左運動,或者向前跳起來,若使用代碼實現融合情況下的狀態模式,是非常復雜的,動畫控制器提供和狀態融合樹,如圖3。融合樹一般會有多個維度,一般提供1、2、3維度,每個維度需要提供相對于個數的參數,這些參數來控制當前狀態在哪些狀態之間。
技能系統作為動作游戲中最為復雜的一部分,由于狀態很復雜,包含了技能動作、技能數值、技能釋放、特效跟隨、攻擊判定等多個流程,結合反射和抽象實現了多個職業的不同技能釋放和判定,并具有一定的拓展性和維護性,核心是反射添加組件和底層抽象。

圖3 狀態融合樹
結合輸入系統和技能快捷欄,系統可以很輕易地知道當前玩家釋放了哪種技能,結合之前的數據表配置,只需要知道玩家釋放的技能ID,就可以知道當前技能的全部信息,包括自定義的類名,通過名字組合(職業+技能類型名)得到當前技能類的名字,通過反射并讓技能類繼承祖MonoBehavior 就可以將技能作為組件添加到玩家預設上。
抽象出來的技能不分職業和數值,針對抽象進行設計,無非就是釋放和銷毀,而在釋放的過程中會有特效,所以將特效也抽象出來,每一個技能釋放時都會包含一個抽象的特效類,其都有派生類實現,在增加新的技能時,只需要繼承技能父類即可,并實現虛函數和抽象方法。
光子服務引擎采用配置形式啟動,將動態鏈接庫代碼寫入Windows 服務中,開發的服務端代碼在服務中運行的好處就是,避免狀態切換被系統進程關閉,運行更安全,可自由分配系統資源[4]。光子服務器自帶了日志系統,可以對不同的服務器進行分離式記錄,并按天對日志文件進行拆分管理,使用特有的日志軟件進行讀取。
游戲開發技術不僅需要計算機相關研究人員,也需要藝術、文學、哲學以及數學工作者的參與,游戲美術描繪了游戲表現,游戲音樂烘托了游戲氛圍,心理學、哲學洞悉了玩家內心,游戲文學闡述了玩家游戲情節,數學模型用以提升游玩反饋。諸多行業參與進游戲開發,所以這個行業作為IT 行業是一個融合技術與藝術的熱門行業。