最近比较喜欢的一种画地图的方式,我个人不是很习惯ulds的使用方式,还是更喜欢拿着tileset在引擎中一点点拼,但引擎的画地图体验还是差一点。这种方式比较折中,通过插件支持,可以在TileD这个外部软件中使用TileSet绘制地图,并在RMMZ游戏中使用,且支持各种feature,甚至能直接替代ulds了。

包含如下feature:

  • 支持TileD的地图和图块组文件格式
  • 适用rmmz支持的三种图块尺寸
  • 支持几乎不限数量的图层
  • 使用系统图块来整体设置地图的通行性、地形标志、梯子、草木繁茂等等设置
  • 通过图层等级来实现多层立交桥和地图遮罩效果
  • 支持镜面、反射效果
  • 支持导入外部图像
  • 支持混合模式
  • ……等等

由于稍微有点复杂,所以还是建议去参考范例工程来使用,这里仅进行快速入门的介绍,以及个人使用上排雷。对于TileD的使用,其实我也不太熟悉(操作逻辑也有些不同),所以也是多看参考文档

工具下载

TileD

Tiled | Flexible level editor

用于绘制地图。安装方法应该是运行安装程序就行了,自带中文

插件

Tiled Plugin for RPG Maker MZ by VisuStella, VisuStellaMZ, Archeia(需要科学上网)

需要使用的插件,Public_0_PixiJsFilters.jsVisuMZ_5_TiledMZ.js这两个都需要

另外这个工程里包含了很详细的范例,忘了一些地方该怎么做可以去查看对应的地图和文件

文件夹结构

  1. 在项目的文件夹中创建一个名为maps的文件夹,这里用于放置TileD保存的地图json文件
  2. (可选)在maps文件夹里创建一个名为tilesets的文件夹,放置图块集json文件,这一步也可以不做,不过最好还是把地图文件和图块集文件分开
  3. 图块集用到的图片放置在通常的路径,就是img/tilesets

现在的文件夹结构大概就是这样:

1
2
3
4
5
Project
- img
- tilesets <-这里放置图块集的图片文件
- maps <-放置地图的json文件
- tilesets <-放置图块集的json文件

确保上一部分的东西安装好后,打开TileD,我们使用的图块集文件和地图文件都是由TileD创建的

图块集创建

把准备好的图块集图片放在img/tilesets文件夹中,具体的图块集格式见下面

左上角文件 -> 新建 -> 新图块集,选择你刚放好的图像文件,设置好tile大小

image-20260214112606378

然后弹出文件保存窗口,将文件保存到maps/tilesets或maps文件夹中

image-20260214112750464

注意:图块集和地图文件的格式必须为json,否则无法读取!这里可能默认的扩展名为tsj,直接改成json就行

图块集图片格式

这个插件对图块集的素材规格没有具体要求,理论上可以放入无限张图块,每张图块集尺寸最大为1024x1024,超过这个尺寸就无法正常读取图片

但个人建议所有图块集统一使用1024x1024的大小,如果大小不同,或者后面临时改图片尺寸,就很有可能会出现读取不了图块的问题(我也不知道为什么会这样,很神秘)

然后新建的图块集就会在软件里弹出来

image-20260214113500205

地图创建

可以在文件 -> 新建 -> 新地图创建一个新的地图,不过个人建议可以直接复制范例工程附带的地图模板,在maps文件夹里

image-20260214113805404

将这两个文件都复制到自己的文件夹中就可以随时使用了,建议使用上面的(slim)模板就行,已经包含了最常用的功能和属性,如果需要进阶的功能再用下面那个也行

复制模板,然后改名成map[id],id是对应的地图的id,在引擎里能看到。比如我在引擎里的地图id是2,那这个文件名就是map2(不用补零)

image-20260214114116885

打开刚才copy的这个tmx,就可以开始愉快的画地图了

如果需要改地图尺寸,就在地图 -> 调整地图大小 进行设置,改完后记得在引擎里也要把地图尺寸对应好

image-20260214135521157

绘制地图

图层

打开可以看到,地图图层栏里已经预置了一些图层和图层组

image-20260214135645589

地图大部分时候是画在UNDER PLAYER这个组里,SAME AS PLAYER是和玩家同层,但它似乎会随着玩家的位置来改变自己的图层,我有点搞不明白所以一般不用,我看范例似乎是用来画一些小物件,ABOVE PLAYER是在玩家之上,就是会遮挡玩家的物体

UNDER PLAYER

ABOVE PLAYER

地图画好后,保存地图,记得要进行另存为,保存为json文件!否则是无法读取的

image-20260214142449852

然后把初始位置设置为对应的地图,就可以开始测试地图是否正常了

地形集

TileD里没法像RM里那样绘制自动图块。不过,搭配范例工程附带的MZ Autotile Converter和TileD的地形集功能,也能用与自动图块类似的方式来绘制地图

不过,我觉得还不如直接手画算了。。所以这里不展开讲,MZ Autotile Converter里也附带了说明pdf,可以自行参考

属性

可以看到这些图层和图层组大多有一些自己的属性,例如ABOVE PLAYER这个图层组就设置了zIndex=4的自定义属性,以及图层组里的图层都会有priority的属性

image-20260214140039076

这些属性就是来告诉引擎如何读取这些图层,比如图层的排序、优先级、是否应用反射效果之类的。这里支持的属性比较繁杂,这里不展开说了,只介绍较为重要的优先级有关的:

  • zIndex:类型为INT,1和3和4分别为在玩家之下、与玩家同层和在玩家之上,这一属性可以附加到图层组,为组内的图层批量使用这一属性
  • priority:类型为INT,图层的显示顺序,每一个图层组内从1开始,每个图层往上逐个加1。如果没有这个属性,就默认按照TileD里的图层顺序读取,不过建议还是加上这个属性

要自己增加属性,就按下下面的+号,输入正确的名称和正确的类型,然后输入需要的值,每个属性的用途自行参考范例

image-20260214141531619

系统图层

TileD还需要一个系统图层,用来给地图设置碰撞、地形标志等等属性,我们也是直接拿范例里的过来用就行,复制对应图块尺寸的系统图块到自己的项目中

别忘记把图块集图像也复制过来

用TileD打开这个图块,点击单个图块,会发现图块都已经给我们设置好属性了,所以不用动

碰撞,地形标志,区域等等,都通过这个图块来设置

image-20260214141854449

在SYSTEM内的图层,用Collision左上角的那个红色图块来设置碰撞

image-20260214142245775

在游戏里是看不到这些红图块的,因为SYSTEM图层组设置了hiddeningame这个属性,在游戏里是看不到的

可能会有的问题

在TileD里显示正常,但是实际运行无法显示某些图层

这种情况有两种可能

Priority设置

如果一个图层组内有一个图层设置了priority属性,那组内其他图层也必须设置priority,否则无法显示

或者直接全都不设置priority,不过不推荐

图块组尺寸问题

插件支持的图块集最大尺寸为1024x1024,可能图片尺寸超过了这个限制

不过,要是多张图块组尺寸不一样,也有可能出现读取不正常的情况,我也不知道为什么。所以建议所有图块组全部设置为同一尺寸,比如我这里全部使用1024x1024的尺寸

扩展阅读

Beginner’s Guide on How To Use Tiled in RPG Maker MZ

油管,科学上网注意。这个频道里出了三个视频来讲解这一插件的许多用法,和一些便捷的绘制地图的方法

Tiled Plugin F.A.Q - Tiled Plugin for RPG Maker MZ by VisuStella, VisuStellaMZ, Archeia

一些官方的常见问题解答

VisuMZ_Tiled_properties.xlsx - Google 表格

所有可用属性的列表

image-20260214143454497