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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 掌握時間與空間:深入探討Golang中的時間戳與時區轉換Golang時間戳
- [技術分析]探討大世界遊戲的製作流程及技術——前期流程篇遊戲
- 12306 技術難點大探討
- 如何使Xcode佔用更少的空間 Xcode佔用空間太大解決方法XCode
- 唯品會 JIT模式 應用探討模式
- 探討大世界遊戲的製作流程及技術——大場景製作技術概況篇遊戲
- Android技術棧(三)依賴注入技術的探討與實現Android依賴注入
- 檢視佔用磁碟空間的程式
- 熱更新技術探討,該如何選型
- Linux挖礦木馬的技術演進探討Linux
- 快手VS抖音:深度覆盤、增長空間與商業模式探討(附下載)模式
- Docker篇之Overlay2磁碟空間佔用過大清理Docker
- 深入探討單例模式單例模式
- Web 框架的架構模式探討Web框架架構模式
- AWR佔用sysaux表空間太大UX
- MacPro系統佔用空間太大Mac
- oracle 雙機部署模式探討Oracle模式
- linux檢視mysql佔用磁碟空間LinuxMySql
- 深入探討控制反轉(IOC)與依賴注入(DI)模式原理與應用實踐依賴注入模式
- 檢視資料庫佔用磁碟空間的方法資料庫
- 螞蟻集團T空間啟用,超3000人入駐 技術人才佔比近8成
- 探討計算機視覺前沿技術,加速智慧城市落地應用 | CNCC 2019計算機視覺
- SQL Server 檢視錶佔用空間大小SQLServer
- [20230206]整理awr佔用空間3.txt
- PostgreSQL DBA(190) - 行大小和空間佔用SQL
- 共同探討資料庫技術與行業數字化轉型過程的融合創新資料庫行業
- win7系統空間佔用大是怎麼回事?win7系統空間佔用大的清理步驟Win7
- 探討AIGC的崛起歷程,淺析其背後技術發展AIGC
- 非技術探討:文章定時釋出功能如何實現
- 建築師解構遊戲關卡——以平面圖探討空間訊息遊戲
- MYSQL造資料佔用臨時表空間MySql
- 解決Ubuntu虛擬機器佔用空間與實際空間不符問題Ubuntu虛擬機
- 技術應用丨DWS 空間釋放(vacuum full) 最佳實踐
- 簡單探討JavaScript 與 TypeScript之間的聯絡JavaScriptTypeScript
- Centos Linux 清理磁碟佔用空間:/dev/xvda1CentOSLinuxdev
- 一文探討可解釋深度學習技術在醫療影像診斷中的應用深度學習
- 由IDC餘熱回收創新技術實踐引出的跨界合作探討
- “技術沙龍”來襲,邀您一同探討 Serverless 資料庫技術最佳實踐Server資料庫
- Promise探討Promise