HGE 是一個硬件加速(Hardware accelerated)的 2D 遊戲引擎(Game Engine),HGE 是一個富有特性的中間件,能夠用於開發任何類型的 2D 遊戲。HGE 封裝性良好,以致於你僅僅須要關心遊戲邏輯(Game Logic),而不須要在乎 DirectX,Windows 消息循環等。
HGE 架構在 DirectX 8.0 之上,可以跑在大多數的 Windows 系統上。
選用 HGE 的理由
1)專業化 --- 專一於 2D 領域
2)簡單化 --- 很是容易使用
3)技術優點 --- 基於 Direct3D API 有較好的性能和特性
4)免費 --- 對於我的或者商業用戶都免費,遵循 zlib/libpng license
5)代碼高度的一致性 --- 代碼是否具備一致性,是衡量代碼質量的標準之一(《 Code Reading: The Open Source Perspective》)
體系結構
HGE 有3個抽象層(layers of abstraction):
HGE體系結構 html
1)核心函數(Core Functions)
處於核心的函數和例程(routines),被整個系統所依賴。
2)輔助類(Helper Classes)
遊戲對象相關的類,架構於 HGE Core Functions 層之上,輔助用戶進行遊戲開發。
3)創做工具(Authoring Tools)
用於遊戲開發的一組工具。
體系結構概述
1)Core Functions 層
<1> 圖形格式支持:支持 BMP, JPG, PNG, TGA, DDS, DIB 文件格式
<2> 支持窗口模式和全屏模式
<3> 音頻支持和音樂回放(music playback):支持 WAV, MP3, MP2, MP1 and OGG 音頻文件格式(audio file formats),支持 MO3, IT, XM, S3M, MTM, MOD and UMX 音樂文件格式(music file formats),支持壓縮流的回放。聲音大小和聲道的控制
<4> 輸入設備支持:鼠標和鍵盤
<5> 資源:讀取硬盤上的資源,支持 ZIP 打包的文件格式
<6> 日誌支持
2)Helper Classes 層
<1> 精靈(Sprites)和動畫(Animations)
對於全部硬件設備特性的直接支持:錨點(anchor)支持,伸展、縮放、旋轉的支持,不一樣的回放模式的支持
<2> 字體
讀取和渲染(render)位圖字體,多種字體排列方式,旋轉和縮放字體,字符串寬度計算等
<3> 粒子系統(particle systems)和網格變形(distortion mesh)
高效的粒子系統,可用於建立煙霧、爆炸、魔法效果等,提供粒子系統的管理,支持定界盒(bounding box)計算和衝突檢測(collision detection)
<4> 資源管理:經過簡單的函數調用,來建立複雜的對象,自動的內存管理。對於資源組(resource groups)採用預先緩存和特殊的清除處理(這是一種經過控制對象分配和釋放來提升效率的方法)
<5> GUI:強大而靈活的 GUI 管理,支持動畫式的 GUI
<6> 矢量(Vectors),對於 2D 矢量的徹底支持
3)Authoring Tools 層
<1> 資源的打包(pack):HGE 使用 ZIP 格式的資源包,你可使用任何的打包工具,甚至還能夠給資源包加密
<2> 紋理(Texture)工具
<3> 粒子系統編輯器:可以設定粒子的速度,方向,生命週期,軌跡,顏色,透明等
<4> 位圖字體編輯器:運行經過系統中已經安裝的字體來建立位圖字體,你可使用圖形編輯器來爲位圖字體添加額外的效果
2一些優缺點
1. 使用DX8,不少DX9特性不能徹底支持,例如不少DX9的API,HLSL等,雖然這些看似在2D裏用處不大
2.低效的zip讀取機制。zip的文件讀取以及查找竟然採用字符串比較,也就是attach的zip越多,查找速度越慢
3. 粒子系統帶有編輯器,這點很不錯,並且效果也還能夠
4. 字體要提出批評,這點作的太差了,不支持中文。
5. 原始版不支持unicode,使用hge社區裏某大俠提供的unicode版本後,作國際化方便多了
6. 純粹簡單遊戲引擎,作下簡單的的差很少,作複雜的格鬥的話,很費力