GBA的Tile模式技術探討--空間佔用篇(轉)
GBA的Tile模式技術探討--空間佔用篇(轉)[@more@] 幾乎我們所知的所有2D遊戲主機都採用tile模式,GBA也是如此,GBA的6種背景模式中,其中三種是tile模式,另三種是點陣圖模式。而在任天堂的官方手冊上面,很明確地說明三種點陣圖模式是用來顯示靜止圖片或者動畫的,並不建議用來進行遊戲設計。 對長期進行PC軟體開發的我們tile模式看起來就像一個怪物,和點陣圖模式相比就好象是Dos那個字元終端和Windows的圖形介面那樣對比鮮明。我的一個好朋友,一個資深的程式設計師,就跟我說tile太不直觀了,沒有任何意義。事實上,我們知道即使很多PC機遊戲也在利用類似tile模式一樣的機制。比如C&C等等,一般來說,在PC機上這種機制叫做地圖機制。 這裡我們打算用量化的方法來比較tile模式和點陣圖模式,當然指標就是做掌機遊戲的開發者最關心空間和速度。 首先,我們來看空間的問題: 這裡我們用來比較的是GBA的模式0(tile)和模式4(點陣圖),這兩種模式都是用得相當廣泛的。另外我們拿它們做比較,也是因為它們的顏色模式是一致的。他們的顏色模式都是同屏256色,一個調色盤,模式0的圖塊大小是8*8。 現在我們假設我們要製作的遊戲裡面有100個獨立場景都是240*160大小的,那麼我們可以計算出來模式4需要的圖片資料空間為: 100(張)*240*160*1(位元組)≈3.66m 這時候我們發現模式0的圖片資料空間計算並不是一個簡單的事情,因為需要的圖塊數量是不確定的,這和遊戲本身有大的關係。我們首先計算如果所有的圖塊都是不重複的,那麼一個240*160的場景需要: 240*160/8/8=600個 也就是說,一個場景需要的圖塊數目假設為,那麼0<n≤600。我們知道一個圖塊佔用64位元組。那麼,n個圖塊佔用的空間就是64n。 另外,我們知道tile模式下,還需要儲存地圖資訊。在模式0下這個部分的空間佔用是(一個圖塊的索引佔2個位元組): 240*160/8/8*2=1200位元組 所以模式0下,圖片資料空間大小應該為: (1200+64n)*100=120000+6400n=120k+6.4k*n 現在我們來比較模式4和模式0佔用的圖片資料空間: 3.66兆/120k+6.4k*n 我們可以簡單的算出在某個極端情況下,即n=600的情況下,模式0比模式4多佔用120k空間。然而當另一個極端的時候,即n=1的情況下,模式0只佔用120k+64位元組的空間,這時模式4佔用的空間是模式0的30倍。我不能給出一個一般的遊戲中圖塊重複率的大小,所以我們只好假設一般來說重複率為z,z=n/600。我們可以得出當z=1的時候,模式4和模式0在空間佔用上,沒有顯著差異。當重複率為z的時候,模式0的空間佔用是: 120k+6.4k*600*z≈3.66兆*z 也就是說,重複律是多少我們模式0相對於模式4的空間節省就是多少。當重複率z=50%的時候,模式0的空間佔用為1.88兆。 直觀上,我們可以對一個遊戲的圖塊重複率z有一個認識,比如下面是著名的Gba遊戲口袋怪獸手中的一個場景,我們直觀的估計z肯定小於50%。 在這類的遊戲,RPG,戰旗等等z都是很小的,也就是說能夠很節省空間。而如果遊戲大量採用沒有重複圖塊的背景那麼tile並不會節省空間,但是也不會浪費多少空間。 明天,我們繼續討論tile模式在速度中的意義,我們將結合對硬體如何實現tile模式進行討論。歡迎大家對這個問題發表意見,也請支援這個討論
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951709/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲技術應用探討
- Oracle 技術探討3Oracle
- Oracle 技術探討2Oracle
- Oracle 技術探討1Oracle
- [技術分析]探討大世界遊戲的製作流程及技術——前期流程篇遊戲
- 掌握時間與空間:深入探討Golang中的時間戳與時區轉換Golang時間戳
- 資料庫設計中的反規範技術探討(轉)資料庫
- B/S模式安全性探討 (轉)模式
- 探討大世界遊戲的製作流程及技術——大場景製作技術概況篇遊戲
- Oracle 資料庫分散式技術的探討Oracle資料庫分散式
- 唯品會 JIT模式 應用探討模式
- 如何使Xcode佔用更少的空間 Xcode佔用空間太大解決方法XCode
- [技術討論]科學基礎的分析和探討對話
- 熱更新技術探討,該如何選型
- 快手VS抖音:深度覆盤、增長空間與商業模式探討(附下載)模式
- 檢視佔用磁碟空間的程式
- linux 列出一個目錄佔用的空間 du (轉)Linux
- Android技術棧(三)依賴注入技術的探討與實現Android依賴注入
- 探討代理模式與Java反射機制的應用模式Java反射
- Docker篇之Overlay2磁碟空間佔用過大清理Docker
- undo表空間佔用磁碟空間滿案例處理
- 【表壓縮】使用表壓縮技術將表所佔用空間降低到最小
- 深入探討單例模式單例模式
- 責任鏈模式探討模式
- HTTP服務七層架構技術探討HTTP架構
- Web 框架的架構模式探討Web框架架構模式
- 探討工廠模式的物件建立模式物件
- MacPro系統佔用空間太大Mac
- AWR佔用sysaux表空間太大UX
- Oracle檢視物件佔用空間Oracle物件
- 關於如何防止重複簽到的技術探討
- 關於多型實現Singleton模式的探討 (轉)多型模式
- 追捕oicq探測技術 (轉)
- 12306 技術難點大探討
- Linux挖礦木馬的技術演進探討Linux
- 加殼技術探討-加殼時處理IAT
- Android設計模式探討--Builder模式Android設計模式UI
- Android設計模式探討 Builder模式Android設計模式UI