Lgame之RPG之地圖1

       好了,現在馬上解決RPG中的第一個問題:地圖。這個破爛東西糾結了我很長的時間,因爲我一直都想擁有一個地圖編輯器,這樣遊戲可以手動或者自動的定製出來,拯救我這種美工白癡。
       仔細看了下SRPG的地圖實現,分爲底圖和活動域兩塊。底圖就是將一幅圖片作爲地圖背景;活動域將底圖按照切分成正方形瓦片後,定義每個瓦片上角色是否能活動的一個二維數組。角色在活動域中游走,相應的計算背景地圖的移動,這樣完成了最簡單的地圖實現。
       明顯我對這樣的效果不會滿意,首先一幅地圖的圖片並且沒有改變的可能;地圖中沒有掩蓋關係,只能是一個純的2D地圖,無法實現主流的2.5D效果;地圖不能過大,否則內存溢出。
       於是我盯上了一個現成的開源地圖編輯器————tiled map editor。這個使用xml表示tile圖層的圖像界面定義工具解決了我很多的問題,首先是一個圖形用戶界面拖拽完成地圖定義;可以通過不同圖層實現佈景乃至角色的掩蓋關係;而且他擁有一套生成和解析的開源代碼。雖然Lgame已經對TMX地圖有了支持,但是在行動域定義、地圖背景和掩蓋關係上並沒有給出了一個解決方案。於是乎要使用自定義地圖就需要自己費些事了。
首先,我們在SPRG原有地圖域上增加TMX地圖的支持,修改代碼如下:
成功運行結果:
       但是由於在每一幀中都需要按遍歷所有瓦片定義合成地圖,所以效率低得可憐。於是乎開始考慮優化方案,首先像到的就是將圖像合成地圖的過程用單獨的線程運行,顯示已合成完畢的紋理。當然由於地圖過大必然引起內存泄漏,於是想到的是使用逐步加載的辦法。如圖所示,當屏幕邊緣觸及重構檢查線(虛線),地圖重構線程啓動,將新的地圖紋理替代老的,檢查先以爲的區域爲重構提供了運行時間,用戶不會感知重構的過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章