地图编辑器的选择1
对于一些小游戏来说,规则就是它的全部,这类游戏使用的场景几乎都是随机生成的。比如,俄罗斯方块、泡泡龙、斗地主、水果忍者之类的。
稍微上一些规模的游戏,随机场景可能不满足其游戏难度,这时开发商就会选择使用相对固定的场景。比如,横版过关、角色扮演、战棋、解密游戏等等。
游戏越复杂,要涉及的编辑器就越多,地图编辑器,关卡编辑器,精灵编辑器。。。
其中最基本最常用的就是地图编辑器。
知易的第五篇教程开始讲述关于瓦片地图的内容,其中讲到一个叫做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版基本上算是大获全胜的。你是怎么认为的呢?