游戲運行和顯示的速度固然重要,不過我認為,在游戲中另外一個速度:游戲裝入的速度也同樣不可輕視。試想一個游戲,動不動就要裝入數據,而且每次裝入的時間都令人等到“心越來越慌”的地步,我想恐怕也沒有什么人愿意玩下去的。
選擇一個好的打包數據格式,對于編程人員來說,是一件很重要的事情。一般來說,一個游戲的文件個數太多,并不是一件好事情,不光占用的硬盤空間大,而且嚴重的影響裝入速度。不過這樣做的優點也很明顯:可以很詳細的分類,可以大大的減小編程人員的工作量。另外一種做法是,把所有的數據全部放在一個文件里面,這樣的做法和上面一種做法的優缺點正好相反,裝入速度比較快(因為只要做一次文件打開的操作),但是由于所有數據都放在一起,文件數據的組織比較復雜,要求編程人員花費大量的精力去定位數據的格式和存放位置。因此,選擇一個合適的數據打包格式,實際上就是在這兩種情況之間選擇一個平衡點,使它既不會對游戲的裝入速度造成明顯的影響,也不會給編程人員帶來額外的負擔。
那么,對于一個游戲來說,數據應該怎么組織呢?其實現在有很多好的游戲,參考一下他們的數據文件就會發現這個平衡點其實很好找。現在大多數的游戲,基本上把游戲需要用到的數據分門別類的存放,每一類數據放在一個文件里面。比如說音樂放在一個文件里面,地形圖素放在一個文件里面,精靈造型、動畫放在一個文件里面,游戲需要用到的圖片放在一個文件里面,人物的對話、事件說明放在一個文件里面……那么這些數據在文件里面怎么組織呢?
還是一句話:分門別類。下面以游戲最基本的地形圖素為例,說明數據的組織形式。一般說來,游戲的地圖由很多大大小小的“圖素”組成的,這些圖素分為幾層,每一層的圖素基本上可以算作一類:比如說地面層可以算作一類,地上層可以算作一類,然后天空層(背景層)可以算作一類,部隊、物品可以算作一類。而在地面層里面,又可以進一步的分類,比如說地形有山地,沙漠,草原,森林,河流,海洋……在游戲中,是可以分為場景的,一般的情況下,每個場景所涉及到的地形不會很多,總是以某一類典型地行為主,然后加入少量其他的地形作為點綴。針對這種情況,我們可以把同一類的地形連續的放在文件的某一個位置,這樣我們在裝入場景的時候,只要在這個位置一次讀取這種地形的數據就可以了。一般游戲在制作的過程中都有一個場景生成器,或者叫作拚圖器,它的作用就是生成地圖——或者說生成場景。這個拚圖器在初期的時候讀人的數據肯定不是已經打包了的,因為美術還要對地形的基本圖素進行某些修改。
所以我認為,好的數據打包格式應該是基于拚圖器的,他把每一種數據分門別類的連續存放在某一個文件之中或者文件的某一個位置,這樣能夠大大的加快程序讀取數據的速度。這樣幾能夠使游戲文件看起來很簡潔,也會大大的有利于程序的開發。