對於一些小遊戲來說,規則就是它的全部,這類遊戲使用的場景幾乎都是隨機生成的。比如,俄羅斯方塊、泡泡龍、鬥地主、水果忍者之類的。
稍微上一些規模的遊戲,隨機場景可能不滿足其遊戲難度,這時開發商就會選擇使用相對固定的場景。比如,橫版過關、角色扮演、戰棋、解密遊戲等等。
遊戲越複雜,要涉及的編輯器就越多,地圖編輯器,關卡編輯器,精靈編輯器。。。
其中最基本最常用的就是地圖編輯器。
知易的第五篇教程開始講述關於瓦片地圖的內容,其中講到一個叫做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版基本上算是大獲全勝的。你是怎麼認爲的呢?