2011-11-13 66 views
1

我的cocos2d-iphone遊戲有平鋪地圖。瓷磚紋理相當大。我有5個tilesets,每個都是2048x2048(視網膜)。在cocos2d-iphone中優化平鋪地圖

我的地圖大約是80x80。他們有8層左右,每一個顯然使用一個瓷磚。幀速率下降(有時會達到30左右,我知道30比較厲害,但我仍然想要50+)。

所以考慮到紋理是巨大的我不能做許多層(因爲每一個加載這些紋理)。

那麼我如何將我的tileset紋理分成更小的tilesets(比如1024x1024每個)呢?這將允許我爲我的地圖使用更多圖層,對吧?

是否有任何其他提示巨大視網膜顯示瓷磚地圖?

回答

3

2048x2048和32位顏色的紋理等於16 MB(!)內存。僅僅是紋理的80倍內存的五倍。哎喲!對於相對較小(80x80)的地圖,這是一個巨大的紋理內存。

如果您確實無法減少其中的tileset或圖像的數量,則優化的第一順序是使用PVR紋理。你失去了一些圖像質量,但內存消耗將大幅下降,並且PVR紋理的渲染性能要好很多。當然,在使用Tiled時,您必須使用(假定)PNG紋理,然後將其轉換爲PVR以用於該項目,例如使用TexturePacker

8個圖塊圖層可能相當大,但取決於您如何使用它們以及每個圖層實際繪製的圖塊數量。試試這個:將除了一層以外的所有圖層設置爲可見=否。然後逐層重新打開圖層,看看它是如何影響幀速率的。

最後,您應該知道Cocos2D的tilemap實現在經過一定數量的tile之後是完全沒有效率的。已經嘗試改進瓷磚地圖渲染器,例如this one (HKTMXTiledMap)可能值得一試。

+0

我的tilesets就像3.6 MB。除非你的意思是...... RAM? 我會嘗試PVR的事情,稍後再回來。謝謝。 – Voldemort

+0

RAM =(隨機存取)內存... 3.6 MB是我假設的文件大小?這隻與App的整體下載大小有關,但與運行時內存使用量無關。 – LearnCocos2D

+0

一個問題:使用8位顏色的2048x2048紋理消耗多少RAM? – Voldemort

0

我有同樣的問題。我的解決方案是簡單地將.png文件轉換爲.pvr.ccz,並且文件大小和內存佔用大大減少。以下是我的步驟:

  1. 使用TexturePacker將tileset文件(png文件)轉換爲pvr.ccz。確保它是1:1的映射(相同的大小,沒有旋轉,沒有邊框填充,沒有修剪...),並且它們應該是相同的大小(例如2048 x 2048)

  2. 打開您的.tmx文件並將png文件路徑更改爲您的pvr.ccz文件。

就是這樣!它適用於我的情況下的cocos2d-x。在改變之前,我的遊戲在內存中需要106 MB,更改後只有〜90 MB,並且這僅適用於1個tileset紋理。