一種應(yīng)用于游戲的3d引擎系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于3D引擎系統(tǒng),具體講涉及一種應(yīng)用于游戲的3D引擎系統(tǒng)。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)硬件圖形加速器,圖形學(xué),三維渲染技術(shù)的發(fā)展,三維立體視覺游戲已經(jīng)逐步走入我們的生活。3D游戲可隨意轉(zhuǎn)換視角,具有夢幻般的場景,并且極強(qiáng)的視覺沖擊力,正在被越來越多的人關(guān)注。黨的十七屆六中全會提出將加速推動文化產(chǎn)業(yè)成為國民經(jīng)濟(jì)支柱產(chǎn)業(yè),而游戲業(yè)的核心作用日益明顯。三維游戲目前仍然是市場開發(fā)的重點(diǎn)領(lǐng)域也是占整個游戲產(chǎn)業(yè)收入最大的一塊。三維游戲引擎系統(tǒng)是3D游戲開發(fā)中最核心的技術(shù),弓丨擎系統(tǒng)的好壞直接決定一款3D游戲的成敗。
[0003]雖然目前市面上已經(jīng)有很多成熟且優(yōu)秀的3D游戲引擎系統(tǒng),比如EPIC的虛幻引擎系統(tǒng),Crytek的CryEngine,EA的Frostbite,Unity3D引擎系統(tǒng)等,但是采用這些引擎系統(tǒng)進(jìn)行游戲開發(fā)不僅需要繳納高昂的授權(quán)費(fèi)用,而且由于對引擎系統(tǒng)底層實(shí)現(xiàn)的不熟悉,開發(fā)過程中可能會遇到瓶頸和后期性能優(yōu)化的問題。
【發(fā)明內(nèi)容】
[0004]為了解決現(xiàn)有技術(shù)存在的上述問題,本發(fā)明提供了一種應(yīng)用于游戲的3D引擎系統(tǒng),該系統(tǒng)具有良好的封裝和組織架構(gòu),模塊化設(shè)計(jì),DLL插件式功能擴(kuò)展,高效的場景管理和渲染模塊。同時配套有完善的游戲開發(fā)必需的各種工具。
[0005]本發(fā)明游戲引擎系統(tǒng)主要包括游戲應(yīng)用上層,中間引擎系統(tǒng)層,操作系統(tǒng)底層三部分。游戲應(yīng)用通過調(diào)用引擎系統(tǒng)的渲染接口間接調(diào)用操作系統(tǒng)底層渲染接口實(shí)現(xiàn)高效的三維圖形渲染。
[0006]本發(fā)明所采用的技術(shù)方案為:
[0007]一種應(yīng)用于游戲的3D引擎系統(tǒng),其改進(jìn)之處在于:所述引擎系統(tǒng)包括游戲應(yīng)用上層,中間引擎系統(tǒng)層,操作系統(tǒng)底層;
[0008]所述中間引擎系統(tǒng)層包括引擎系統(tǒng)核心模塊、資源加載模塊、資源管理模塊、核心渲染模塊、場景管理模塊、多線程模塊、事件系統(tǒng)模塊、日志系統(tǒng)模塊、聲音模塊、數(shù)學(xué)模塊、渲染單元、地形模塊、天空模塊、特效模塊、相機(jī)模塊、動畫模塊、模型模塊、shader模塊、角色模塊、后效模塊和燈光模塊;
[0009]所述游戲應(yīng)用上層、中間引擎系統(tǒng)層、操作系統(tǒng)底層依次連接;
[0010]所述引擎系統(tǒng)通過資源加載模塊并配合多線程模塊對資源進(jìn)行加載。
[0011]優(yōu)選的,所述資源管理模塊包括資源管理器,資源組管理器,磁盤10,用于對引擎系統(tǒng)進(jìn)行統(tǒng)一管理,所述資源管理模塊進(jìn)行資源的查詢,插入和刪除機(jī)制,避免資源的重復(fù)加載和資源內(nèi)存泄露。
[0012]進(jìn)一步的,所述引擎系統(tǒng)向資源管理器請求資源,該資源在資源管理器中Cache命中,則直接返回該資源,否則資源管理器向資源組管理器發(fā)出請求,并將返回的資源指針Cache到資源管理器內(nèi)部的一個Map容器中。
[0013]優(yōu)選的,所述日志系統(tǒng)模塊用于為引擎系統(tǒng)的其他模塊提供服務(wù)和幫助,其包括資源加載模塊記錄各個資源的加載狀態(tài);資源管理模塊的資源加入,刪除操作和內(nèi)存泄漏進(jìn)行記錄;渲染模塊記錄渲染設(shè)備的狀態(tài)切換。
[0014]優(yōu)選的,所述數(shù)學(xué)模塊用于為引擎系統(tǒng)提供向量,矩陣,四元數(shù)類和各種高效數(shù)學(xué)算法;數(shù)學(xué)模塊還用于對使用頻率高的算法混合使用匯編語言和SSE進(jìn)行編寫。
[0015]優(yōu)選的,所述聲音模塊采用開源中間件FM0D,可支持wav,mp3,acc大多數(shù)格式音樂音效的播放;所述場景管理模塊將每一幀需渲染的單元挑選出來提供給渲染模塊,由渲染模塊完成最終的圖像輸出。
[0016]優(yōu)選的,所述渲染模塊將渲染單元最終渲染到電腦屏幕上變成可視的畫面;所述渲染模塊提供高度抽象的上層渲染接口,將渲染接口與平臺渲染相關(guān)API進(jìn)行分離,便于跨平臺支持和擴(kuò)展。
[0017]優(yōu)選的,所述渲染模塊每幀按照各個渲染隊(duì)列的優(yōu)先級從各個渲染隊(duì)列依次取出各個渲染單元進(jìn)行渲染;渲染模塊采取資源預(yù)加載,渲染狀態(tài)切換最小化,按照材質(zhì)進(jìn)行分批次渲染,渲染批次最小化一系列渲染技巧。
[0018]優(yōu)選的,所述引擎系統(tǒng)渲染應(yīng)用方法為
[0019](1)每幀渲染需更新場景圖,更新各個相機(jī),設(shè)置shader參數(shù),分別渲染靜態(tài)陰影和動態(tài)陰影;
[0020](2)場景管理器根據(jù)當(dāng)前場景主攝像機(jī),視距,主角坐標(biāo)參數(shù)對場景對象進(jìn)行裁剪;
[0021](3)對幀時間更新完成后的場景對象,提取其包含的渲染對象并給渲染對象設(shè)置頂點(diǎn)著色器參數(shù),片段著色器參數(shù),渲染狀態(tài),變換矩陣,燈光,材質(zhì)參數(shù)一系列參數(shù);
[0022](4)提交至渲染隊(duì)列;
[0023](5)將每個渲染隊(duì)列的數(shù)據(jù)交由渲染模塊進(jìn)行渲染處理。
[0024]進(jìn)一步的,所述步驟(5)包括
[0025](5.1)渲染模塊設(shè)置該隊(duì)列的渲染狀態(tài),遍歷渲染隊(duì)列中的各個渲染對象;
[0026](5.2)渲染模塊設(shè)置渲染對象的渲染狀態(tài),頂點(diǎn)數(shù)據(jù),索引數(shù)據(jù),頂點(diǎn)聲明;
[0027](5.3)渲染模塊調(diào)用DriectX底層API完成對每個渲染隊(duì)列中的各個渲染對象的渲染。
[0028]本發(fā)明的有益效果為:
[0029]本發(fā)明簡單易用的面向?qū)ο蠼涌谠O(shè)計(jì),不僅更容易的實(shí)現(xiàn)渲染,進(jìn)行擴(kuò)展也非常方便;
[0030]本發(fā)明高效且高度可配置的資源管理系統(tǒng),支持多種格式的文件加載,并支持多線程加載引擎系統(tǒng)渲染需要的各種資源;
[0031]本發(fā)明支持讀取MPQ格式的資源包進(jìn)行渲染,不僅實(shí)現(xiàn)了資源壓縮,加密,還提高了加載速度;
[0032]本發(fā)明優(yōu)秀的場景管理系統(tǒng)通過將渲染實(shí)體附屬到場景結(jié)點(diǎn)的方式進(jìn)行組織場景,實(shí)現(xiàn)了渲染實(shí)體與場景樹的分離,具有高度的靈活性;
[0033]本發(fā)明充分利用GPU編程技術(shù)進(jìn)行各種渲染,支持匯編,Cg,HLSL,GLSL等語言編寫的shader,不僅提高了渲染效率而且可以實(shí)現(xiàn)各種絢爛多彩的效果;
[0034]本發(fā)明支持多種動畫,包括數(shù)字動畫,結(jié)點(diǎn)動畫,姿態(tài)動畫,骨骼蒙皮動畫及多個動畫混合技術(shù);
[0035]本發(fā)明支持靜態(tài)陰影技術(shù)和實(shí)時動態(tài)陰影技術(shù);
[0036]本發(fā)明高效的材質(zhì)管理系統(tǒng)將渲染狀態(tài)切換最小化,提高了渲染效率;
[0037]本發(fā)明支持無限大地形渲染,按照地形塊進(jìn)行渲染,支持多線程地形加載和地形L0D技術(shù);
[0038]本發(fā)明全面支持渲染到紋理技術(shù)和投影貼花技術(shù);
[0039]本發(fā)明豐富高效的粒子系統(tǒng)可以實(shí)現(xiàn)各種絢麗奪目的特效;
[0040]本發(fā)明全面支持各種天空渲染技術(shù),例如天空盒,天空面,穹頂;
[0041]本發(fā)明優(yōu)化的二進(jìn)制模型文件格式,加載效率非常高;
[0042]本發(fā)明支持多種圖片格式,包括jpg,png, dds,tga等,同時支持特殊格式紋理包括一維紋理,volume texture, cube texture 等;
[0043]本發(fā)明支持游戲中的各種絢麗的過場動畫,增強(qiáng)了玩家代入感,豐富了游戲體驗(yàn);
[0044]本發(fā)明全面高效的日志系統(tǒng)和內(nèi)存泄露檢測系統(tǒng),便于游戲引擎系統(tǒng)出現(xiàn)問題后進(jìn)行問題的排查。
[0045]本發(fā)明靈活高效的攝像機(jī)系統(tǒng),可以實(shí)現(xiàn)各種視角。
【附圖說明】
[0046]圖1為本發(fā)明提供的一種應(yīng)用于游戲的3D引擎系統(tǒng)結(jié)構(gòu)示意圖;
[0047]圖2為本發(fā)明提供的一種應(yīng)用于游戲的3D引擎系統(tǒng)中間引擎系統(tǒng)層結(jié)構(gòu)示意圖;
[0048]圖3為本發(fā)明提供的一種應(yīng)用于游戲的3D引擎系統(tǒng)資源加載流程示意圖;
[0049]圖4為本發(fā)明提供的一種應(yīng)用于游戲的3D引擎系統(tǒng)渲染模塊渲染流程示意圖。
【具體實(shí)施方式】
[0050]如圖1所示,本發(fā)明提供了一種應(yīng)用于游戲的3D引擎系統(tǒng)。本發(fā)明的游戲引擎系統(tǒng)將引擎系統(tǒng)的所有核心功能導(dǎo)出到DLL動態(tài)鏈接庫插件中,并提供C++頭文件供游戲邏輯開發(fā)人員使用,具有極強(qiáng)的靈活性和擴(kuò)展性。
[0051]美術(shù)人員將做好的美術(shù)資源(場景,模型,特效等)通過引擎系統(tǒng)提供的各種工具轉(zhuǎn)換成引擎系統(tǒng)專用的數(shù)據(jù)格式提供給游戲引擎系統(tǒng)。引擎系統(tǒng)通過資源加載模塊并配合多線程模塊對各種資源進(jìn)行加載,在這個多核普及的年代,多線程資源加載具有很高的加載效率。
[0052]本發(fā)明引擎系統(tǒng)的資源加載過程如圖3所示,加載到游戲中的資源由資源管理模塊進(jìn)行統(tǒng)一管理,資源管理模塊不僅為資源提供高效的查詢,插入,刪除機(jī)制,還能避免資源的重復(fù)加載和資源內(nèi)存泄露。按照資源類型引擎系統(tǒng)定義了多個資源管理器,例如TextureManager,SkeletonManager,MeshManager,EffectManager 等。
[0053]本發(fā)明引擎系統(tǒng)資源加載模塊具體應(yīng)用流程為:
[0054]引擎系統(tǒng)請求某資源時直接向相應(yīng)的資源管理器請求,若該資源在資源管理器中Cache命中,則直接返回該資源,否則資源管理器再去向ResourceGroupManager (資源組管理器)發(fā)出請求,并將返回的資源指針Cache到資源管理器內(nèi)部的一個Map容器中去。引擎系統(tǒng)將資源按照類型分成幾個group進(jìn)行管理,并寫入一個.cfg文件中。引擎系統(tǒng)啟動時解析.cfg文件,對所有的資源路徑解析并cache生成多個以group為單位的資源組,這些資源組又由ResourceGroup