地圖編輯器的選擇1


尊重作者勞動,轉載時請標明文章出處。
作者: Bugs Bunny
地址: http://www.cnblogs.com/cocos2d-x/archive/2012/05/03/2479469.html

對於一些小遊戲來說,規則就是它的全部,這類遊戲使用的場景幾乎都是隨機生成的。比如,俄羅斯方塊、泡泡龍、鬥地主、水果忍者之類的。
稍微上一些規模的遊戲,隨機場景可能不滿足其遊戲難度,這時開發商就會選擇使用相對固定的場景。比如,橫版過關、角色扮演、戰棋、解密遊戲等等。

遊戲越複雜,要涉及的編輯器就越多,地圖編輯器,關卡編輯器,精靈編輯器。。。
其中最基本最常用的就是地圖編輯器。

知易的第五篇教程開始講述關於瓦片地圖的內容,其中講到一個叫做Tiled Map Editor的開源工具。這個工具包括Java/Qt兩個版本,因爲「Qt版運行起來缺少重要的功能」,所以知易說「至少到目前爲止,建議大家使用Java版」。知易的說法是十分嚴謹的,因爲在他發佈這份教程的時候,Java版的Tiled Map Editor的版本號是0.7.2,而Qt版只有0.4.0。

然而,兩年過去了,Qt版已經更新至0.8.0,而Java版卻不再維護了。

The Java version is no longer maintained (unless somebody steps up to do it), but it is still available here since it has a few features that do not exist in the Qt version yet.

根據大家的共識,使用不再維護的工具是不明智的,除非有特殊需要。

正因爲Java版包含一些Qt版沒有的特性,所以它會被保留到xxxx的那一天。抱歉,我也不確定。

筆者撰寫本文的目的是說明Qt版與Java版Tiled Map Editor的主要差別。

這裏比較的版本爲Qt版0.8.0和Java版0.7.2。你可以從Tiled Map Editor的官網上下載到它們。
http://www.mapeditor.org/

先來整體的看一下這兩個版本:

Qt版截圖

Java版截圖

正如你所看到的,Qt版支持多國語言,默認與當前系統一致。爲了便於對照,我將其設置爲英文界面。

下面我們一項一項開始對比,儘量只選擇有差異的地方講解。

Qt版File菜單 Java版File菜單

1.支持的地圖類型

從File菜單來看,它們的功能大致是相同的。那它們都支持哪些地圖類型呢?選擇New菜單來看一下。

Qt版New Map對話框 Java版New Map對話框

Java版支持Orthogonal(正交,90度)、Isometric(等距,45度)、Hexagonal(六邊形),比Qt版多一個Hexagonal,但是要注意這個Hexagonal後面還跟着一個experimental,即實驗的。至於實驗到了什麼程度,我沒有用過不做評價,但是可以告訴你,在cocos2d-x中,這個Hexagonal地圖是支持的。

2.支持的文件格式

這兩版工具分別支持哪些文件格式也是我們需要知道的。

文件格式(導入) Qt版 Java版
Tiled map files (*.tmx)
Droidcraft map files (*.dat)  
Json files (*.json)  
Tiled Maps files (*.tmx.gz)  
Mappy Reader (*.fmp)  
文件格式(導出) Qt版 Java版 備註
Tiled map files (*.tmx)  
Droidcraft map files (*.dat)    
Flare map files (*.txt)    
Json files (*.json) Java版裏叫JSON map writer (*.js, *.js.gz)
Lua files (*.lua)  
T-Engine4 map files (*.lua)    
TMW-eAthena collision files (*.wlk) Java版裏叫The Mana World exporter (*.wlk)
Tiled Maps files (*.tmx.gz)    
Mappy Writer (*.map)   奇怪,導入與導出的後綴名不一樣!

除了.tmx文件外,這兩個版本都支持其他格式,但支持的內容不盡相同。這是爲什麼呢?

原來Tiled Map Editor是支持插件的,表格中.tmx/.tmx.gz以外的格式都是由插件導入的。這大概是爲了做MOD什麼的吧,反正我們用不上。

需要指出的是,在Qt版中,要使用插件進行導出時,要使用File菜單下的Export As命令,在Java版裏是Save As命令。

3.地圖的輔助編輯

Qt版Edit菜單 Java版Edit及Select菜單

(1)首先兩版編輯器都支持撤銷與重做操作,但是Qt版支持歷史記錄,而在Java版中筆者未找到這個功能。

(2)Qt版僅支持全選和取消選擇,Java版多一個反選的功能。反選這個功能,有些人是比較喜歡的,比如我,整理磁盤文件時經常用。

(3)翻轉功能,編輯器軟件的標配,Qt版不支持真是遺憾,希望作者將來加入這個功能。

(4)Java版支持筆刷設置,在繪製雙層牆壁什麼的時候,有一個大的筆刷會事半功倍,希望Qt版能加入這個功能。

提示:在Qt版中,可以使用矩形選擇工具配合複製粘貼來模擬大尺寸的矩形筆刷,對於圓形筆刷,暫時無法模擬。在使用這個方法的時候,注意不要開啓筆刷的隨機模式。

(5)兩版編輯器都支持隨機筆刷,但使用方法和功能都不一樣。

Qt版:選擇工具欄中的圖章刷,並按下隨機模式按鈕。接着在圖塊窗口內選擇希望隨機的圖塊集合,支持框選、Ctrl+鼠標左鍵點選、Shift+鼠標左鍵範圍選取。然後就可以在繪圖區繪製了。Qt版中的隨機是指,從選取的圖塊集合中隨機選擇圖塊繪製到地圖上。

Java版:在筆刷設置中勾選Random選項,後面的slider bar表示隨機的概率。Java版中的隨機是指,筆刷是否繪製內容到地圖上。滑塊越靠右,繪製上的機率就越大。

4.首選項

Qt版首選項 Java版首選項

首選項中最重要的功能就是可以設置導出文件中的編碼格式。

注意,到目前爲止,cocos2d-1.0.1-x-0.13.0-beta中的TMX tile map: Only base64 and/or gzip/zlib maps are supported.

所以,在Qt版中,請確保"Store tile layer data as:"的選項是"Base64"開頭的那三個之一,在Java版中,至少要保證"Layer Options"下的"Use binary encoding"是選中的。

否則,編輯器保存的地圖文件,cocos2d-x不認。

一般來說,爲了節省空間,壓縮選項也是要選上的。

5.嵌入的圖片

你可能已經注意到,在Java版的首選項中,"Tileset Options"下有一個"Embed images (png)"選項。

是的,Tiled Map Editor可以把圖塊嵌入到地圖文件中。但是,cocos2d-x不支持這種內嵌了圖塊的地圖文件。

這個選項僅對通過"Tileset Manager"手工創建的圖塊集起作用。

不論是製作效率還是運行效率,你都不會需要這種地圖的,讓我們無視它吧。

6.調整地圖大小

Qt版Resize對話框 Java版Resize Map對話框

可以看到,Qt版的調整地圖大小是可視化的,操作很直觀,不易出錯。

7.地圖的剪輯選擇(僅Qt版)

當你只想保留地圖上的一部分時,剪輯選擇是一個不錯辦法。先選中要保留的地圖區域,然後執行"Crop to Selection"(剪輯選擇),一切就都搞定了。

8.挪動地圖(僅Qt版)

這是一個非常酷的功能。你可以對整張地圖或者選區進行操作,在四個方向挪動它們,甚至允許滾動地圖。

9.物件支持

Qt版Layer菜單 Java版Layer菜單

 

最後要介紹的這個功能,在Qt版裏叫做物件層,在Java版裏叫做物件組。

實話實說,我還沒有嘗試過這個功能的用途,所以僅從編輯器的層面上來比較它們。

(1)Qt版支持多邊形物件;Java版僅支持矩形物件。

(2)Qt版可以在像素級別擺放物件;Java版的精度僅達到Tile級。

(3)Qt版的物件操作效率很高;不知是Tile級精度的問題,還是JVM效率的問題,Java版添加物件後真的有些卡。

小結

拋開對六邊形Tile的支持、翻轉操作以及筆刷設置這3點,我認爲Qt版基本上算是大獲全勝的。你是怎麼認爲的呢?