对于一些小游戏来说,规则就是它的全部,这类游戏使用的场景几乎都是随机生成的。比如,俄罗斯方块、泡泡龙、斗地主、水果忍者之类的。

稍微上一些规模的游戏,随机场景可能不满足其游戏难度,这时开发商就会选择使用相对固定的场景。比如,横版过关、角色扮演、战棋、解密游戏等等。

游戏越复杂,要涉及的编辑器就越多,地图编辑器,关卡编辑器,精灵编辑器。。。

其中最基本最常用的就是地图编辑器。

知易的第五篇教程开始讲述关于瓦片地图的内容,其中讲到一个叫做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 电子地图开发 java制作地图_java 电子地图开发

Java版截图

java 电子地图开发 java制作地图_java 电子地图开发_02

正如你所看到的,Qt版支持多国语言,默认与当前系统一致。为了便于对照,我将其设置为英文界面。

下面我们一项一项开始对比,尽量只选择有差异的地方讲解。

Qt版File菜单

Java版File菜单

java 电子地图开发 java制作地图_Java_03

java 电子地图开发 java制作地图_Java_04

1.支持的地图类型

从File菜单来看,它们的功能大致是相同的。那它们都支持哪些地图类型呢?选择New菜单来看一下。

Qt版New Map对话框

Java版New Map对话框

java 电子地图开发 java制作地图_java 电子地图开发_05

java 电子地图开发 java制作地图_首选项_06

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菜单

java 电子地图开发 java制作地图_首选项_07

java 电子地图开发 java制作地图_Qt_08

(1)首先两版编辑器都支持撤销与重做操作,但是Qt版支持历史记录,而在Java版中笔者未找到这个功能。

java 电子地图开发 java制作地图_java地图文件的编辑器_09

(2)Qt版仅支持全选和取消选择,Java版多一个反选的功能。反选这个功能,有些人是比较喜欢的,比如我,整理磁盘文件时经常用。

(3)翻转功能,编辑器软件的标配,Qt版不支持真是遗憾,希望作者将来加入这个功能。

(4)Java版支持笔刷设置,在绘制双层墙壁什么的时候,有一个大的笔刷会事半功倍,希望Qt版能加入这个功能。

java 电子地图开发 java制作地图_java 电子地图开发_10

提示:在Qt版中,可以使用矩形选择工具配合复制粘贴来模拟大尺寸的矩形笔刷,对于圆形笔刷,暂时无法模拟。在使用这个方法的时候,注意不要开启笔刷的随机模式。

(5)两版编辑器都支持随机笔刷,但使用方法和功能都不一样。

Qt版:选择工具栏中的图章刷,并按下随机模式按钮。接着在图块窗口内选择希望随机的图块集合,支持框选、Ctrl+鼠标左键点选、Shift+鼠标左键范围选取。然后就可以在绘图区绘制了。Qt版中的随机是指,从选取的图块集合中随机选择图块绘制到地图上。

Java版:在笔刷设置中勾选Random选项,后面的slider bar表示随机的概率。Java版中的随机是指,笔刷是否绘制内容到地图上。滑块越靠右,绘制上的几率就越大。

4.首选项

Qt版首选项

Java版首选项

java 电子地图开发 java制作地图_首选项_11

java 电子地图开发 java制作地图_Qt_12

首选项中最重要的功能就是可以设置导出文件中的编码格式。

注意,到目前为止,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对话框

java 电子地图开发 java制作地图_Java_13

java 电子地图开发 java制作地图_Java_14

可以看到,Qt版的调整地图大小是可视化的,操作很直观,不易出错。

7.地图的剪辑选择(仅Qt版)

当你只想保留地图上的一部分时,剪辑选择是一个不错办法。先选中要保留的地图区域,然后执行"Crop to Selection"(剪辑选择),一切就都搞定了。

8.挪动地图(仅Qt版)

这是一个非常酷的功能。你可以对整张地图或者选区进行操作,在四个方向挪动它们,甚至允许滚动地图。

java 电子地图开发 java制作地图_Java_15

9.物件支持

Qt版Layer菜单

Java版Layer菜单

java 电子地图开发 java制作地图_Qt_16

java 电子地图开发 java制作地图_java 电子地图开发_17

最后要介绍的这个功能,在Qt版里叫做物件层,在Java版里叫做物件组。

实话实说,我还没有尝试过这个功能的用途,所以仅从编辑器的层面上来比较它们。

(1)Qt版支持多边形物件;Java版仅支持矩形物件。

(2)Qt版可以在像素级别摆放物件;Java版的精度仅达到Tile级。

(3)Qt版的物件操作效率很高;不知是Tile级精度的问题,还是JVM效率的问题,Java版添加物件后真的有些卡。

小结

抛开对六边形Tile的支持、翻转操作以及笔刷设置这3点,我认为Qt版基本上算是大获全胜的。你是怎么认为的呢?