第12章 地图编辑器及插件

本章将介绍一下一个很常用的地图编辑器tiled,及love2d的运行时,和插件等的使用和制作。

地图编辑器

love2d的一大诟病就是它缺乏外围工具,所以有时候我们更喜欢把love2d当作是lua的一个库,而非独立的游戏引擎^^。不过,还有很多的第三方工具可以用来制作love2d游戏,下面我们来介绍一下。
地图编辑器可以可视化的观察到物体的摆放位置,添加属性。实际上,如果单纯从摆放对象来讲,一个photoshop就足够了。不过有其他编辑器会让他更加方便一些。

tile是什么

tile字面意思上是瓷砖,实际上是指由一些小的地图块拼接出大的地图来。拼接痕迹比较明显的比如超级马里奥,你可以看到砖头,问号等等图块。拼接不明显的比如魔兽争霸3,你几乎感觉不到是拼接出来的。

tile制作游戏的好处是节省绘图成本,因为只需要画好一副tile图集就行了,剩下是拼接工作。压缩体积,提高渲染效率(记得精灵组么)。同时,一般tile可以直接绑定一些数据,碰撞盒等,方便我们跟游戏直接对接。

tiled

说到tile就不得不说tiled编辑器了。他几乎算是tile界的龙头老大了。首先,它免费(虽然到现在也没能征集到足够的捐款),然后十分简单易用,拓展性还比较好,所以一般独立游戏都很喜欢用它。其实对于一些大厂,以及大游戏,他们都有自己的编辑器。
http://www.mapeditor.org/tiled官方网站。

tiled的特性有:
支持平视(正方形),正交(平行四边形),六边形tile。
可以给tile绑定属性。(每一类tile拥有相同的属性)
tile本身可以绑定帧动画。
拥有地形刷,配置好后,可以自动的将不同地形的过渡地带标记出来。
支持图像层,可以单独放置背景地图,蒙版等。
支持对象层,可以绘制形状(作为碰撞盒或者标记),和特殊tile。
可以导出为lua数据。

下面链接为tiled英文视频教程,很不错:
链接

sti的使用

sti-Simple-Tiled-Implementation 库

STI实际上就是一个tiled的运行时,可以方便的从生成好的tiled数据和spritesheet读入到游戏中,这个库作者一直在更新,所以最新版的tiled应该都是ok的。
STI的使用最好自己下载git上的最新版,里面有运行案例,每个案例读一下源码就没有问题啦。

STI插件

sti允许你对一些绑定了属性的tile自动生成一些特殊的绑定,比如物理碰撞绑定,光照绑定等。
sti插件的制作很简单,编辑一个表,表中含有你想要的功能。然后把这个表作为返回值就可以了。它将与sti的根合并,所以你仅仅使用sti.xxx即可调用他们。目前,sti内部绑定了box2d和bump两种碰撞,笔者自己写了个lightworld的绑定。实际上,它就是通过遍历所有具有特殊属性的块,通过调用他们的位置,多边形顶点来进行绑定的。使用的时候,需要手动的调用你插件的功能才可以。

Overlap2d

overlap2d是另一个场景编辑器,它不同于tiled,它不使用图块拼接,而是使用游戏对象,包括ui,sprite,粒子效果等。它相比tiled在画面表现上更加丰富,而且在对象处理上更加简单方便。它能够导出xml,不过目前尚没有针对overlap2d的运行时。

defold

defold是一个独立的2d引擎,是大名鼎鼎的king公司出品的,同样适用Lua作为脚本工具。它本身自带编辑器,可以对tiled,spine,帧动画,粒子效果,ui层等很多东西进行编辑。当然,我们可以用它的编辑器及编辑器生成的文件来导入到love中使用。甚至未来可以直接使用love作为debug工具。不过,原理上是可行的,只是仍然没有运行时。

个人制作编辑器

如果你自己制作编辑器,实际上也是可行的,只不过需要加上一系列的ui成分,以及给所有的游戏对象一个鼠标互动的方法即可。然后将场景导出为数据。

本章未完待续=、= 实在不知道还要说什么,我不太喜欢手把手的去教一个外部工具和sti的使用,因为很简单,而且利用数据,你可以做一切你想做的事。等回头有时间再去补完这章吧,我要跳过了。