HGE重新架构资源管理
在HGE1.81版本開始修改結構。
為什么不在HGE加強版本上面修復,原因很簡單,這個版本的作者D3D功底一般,封裝方面的技術一般。不但沒有使引擎更符合大型游戲的開發,而且使很多方面搞得相當復雜。不利于引擎的以后強化。
所以最理想的還是從官方的原版開始修改引擎基礎部分。使之更符合大型游戲的開發。
資源管理方面,HGE提供了一個從Zip壓縮文件加載的接口類。其實任何一個商業游戲都是不可能使用Zip壓縮文件作為客戶端圖片資源文件的。因為大家都
是使用了各自的自定義文件格式資源文件。
Zip壓縮文件適用于補丁的更新。但是目前主流的做法好像已經改變。使用了微端技術。其實說白了,就是玩家一邊玩游戲一邊下載客戶端資源文件。不用再像以前那樣需要一次性下載幾個G的客戶端文件。顯然斷點續傳的功能要做好的。比如那些像迅雷一些功能是需要參考的。但是寫入客戶端文件就容易了。當然不是那種采用Zip結構的壓縮文件進行解壓后覆蓋原文件的做法,這種做法本來就不應該提倡,因為每一次更新都需要附帶以前的那些資源一起更新,造成下載和解壓都很耗時,尤其是現在大多數玩家的耐心都是有限的。更不理想的是會造成游戲長期發展的局限性。就好像一些玩家那樣,提起游戲是感覺不錯,想玩,但是想起幾個G的客戶端文件就泄氣了。因為很多人的時間都是很緊的。另外好不容易坐到電腦目前,但是一打開游戲,面對那些長時間的補丁更新,換成誰,都會很不爽的。顯然不利于游戲的發展壯大。
因此多年以來,資源管理一直是游戲界最頭痛的方面。
顯然HGE需要修改以符合目前的主流技術的地方還是相當多的。
因為我直接采用了DirectX9.0 SDK,所以一些特效方面還是可以加強的。
廢棄了HGE原來的D3DX81mo.DLL,包括其聲音類。使用了FMOD——目前商業主流的音源API。
類的封裝不需要過深,提供相應的空間給以后的功能增加。最討厭的是那些封裝太深的類文件,看起來頭痛,修復而不出BUG是不可能的。游戲引擎最好的還是直接加直接。
至于資源文件,采用自己定義的結構化文件,這些是大眾化的做法了,沒有什么新奇的。采用了簡單的加密,其實感覺還是多余的,還沒有看到過不被破解得體無完膚的資源文件。
此資源文件可以導入任何類型的圖片,不會像一些人的做法只可以導入指定格式的圖片文件。因為D3D接口支持各種圖片格式,另外一些圖片格式的使用會帶來很多好處。按照需要使用合適的圖片格式文件是發揮D3D接口的優勢。
另外在這里告訴大家的是:當你導入圖片文件到資源文件里面,最好不要通過任何的GDI對象來操作,否則保存的數據會多出很多未知的數據。造成文件變大。不信,你可以測試一下。
那么如何保存原圖片文件大小的數據呢,很簡單,通過流復制就行了。
一個資源文件最小都幾十MB,大的兩三百MB是很正常,這樣大的文件,加載和讀取顯然是比較困難的,雖然現在的CPU已經很強大了,但是我們還需要想下,是不是每個玩家都是游戲發燒級別的?老牌子機器在國內是非常非常多的。
其實資源文件雖然已經讀入內存,但是通過索引來搜索我們需要的那個圖片文件,顯然根據文件結構樹的深化程度,CPU所需要的時間是不同的。這種情況大家在解壓這些rar壓縮文件的時候就應該深有體會了。就為了這幾張圖片,把這樣大的文件駐留在內存里面顯然不是理想了,但是頻繁地加載顯然更不合理。
所以就需要尋找合適自己的資源加載和管理方式了。我目前的做法是使用流來操作。效率相當高。
轉載于:https://www.cnblogs.com/GameDelphi/archive/2012/03/01/2374929.html
總結
以上是生活随笔為你收集整理的HGE重新架构资源管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 检索 COM 类工厂中 CLSID 为
- 下一篇: 30个让人兴奋的视差滚动(Paralla