遙想去年敝人也是在台北某間大樓的52樓裡面的某間公司在進行一個卡牌遊戲改版的動作!
只可惜遊戲做完了,公司也收起來了。C'est la vie~
****************************阿公講古分隔線********************************
今天不說別的,就來談談卡牌遊戲的貼圖怎麼
還記得我寫過TexturePacker的文章嗎?
所謂的Texture Atlas就是把零散的小貼圖集合成一張大貼圖,不僅可以加速貼圖載入的速度,也可以避免OpenGL的texture swap cost。
但是!但是~卡牌角色衣服總是要多露有多露、胸部要多大有多大~
胸部都那麼大了,你卡片解析度不加大也說不過去吧? (都是視網膜螢幕害的)
我們假設卡牌解析度是512x640,以iOS最大貼圖解析度2048x2048來看,最多可以塞個12張。PNG格式大約是4-5MB,PVR格式是2MB,PVR CCZ格式可以壓到1.5MB左右。
看起來還不錯是吧?你忘了卡牌遊戲動輒數百張的卡片數量,光是計算PVR的時間就可以看部藍光DVD了!更別說哪天某張卡片圖樣要更新,又得重算一次。
再來如果說遊戲要同時呈現數張卡片,好死不死,每張卡片都散落在不同的Texture Atlas,那麼貼圖記憶體的使用量也會倍增。
嗯嗯~所以Texture Atlas雖說檔案大小是很
糾竟遊戲工程師該怎麼辦呢?讓我們繼續看下去~
幸好有神人發明了Vector Quantization Algorithms。來~跟我說一遍~
V e c t o r Q u a n t i z a t i on A l g o r i t h m s (英國腔)
中文翻譯是向量量化演算法,雖然我看得懂中文,恩~也看得懂英文。但是我看不懂這是什麼東西 (咳)
好!不懂原理沒關係,我們懂得怎麼用就好!
http://pngquant.org/ 很貼心的蒐集了各作業系統的貼圖轉換工具。
使用V e c t o r Q u a n t i z a t i on A l g o r i t h m s (英國腔)可以幫我們把PNG減肥最多7成以上,而且還支援透明度,我都要痛哭流涕了~
逆看看,偶當場就縮了四分之一!
當然天下沒有白吃的午餐,我們還是得犧牲一些圖像品質來得到這樣的壓縮比。其實它就是把全彩貼圖轉換256色貼圖,失真是一定的唷~
貼圖維持PNG格式的好處就是 iOS 跟 Android 都能夠無痛使用,不再為 PVR、ETC1 等格式煩惱了~呀比~
說了這麼多,你還不趕快去用用看 (丟筆)
沒有留言:
張貼留言