自动地图 Automapper
DDNet 自动映射工具使用指南,包含规则文件语法和配置方法
Automapper 是一个让地图制作者更轻松制作地图的工具。你可以创建一个简单的自动映射规则,将一些规则应用到整个瓷砖层,而不需要手动放置冻结区域的圆角边缘。
每个自动映射器都是为特定的瓷砖集制作的,每个瓷砖集可以有多个自动映射器。
所有自动映射器规则都位于你的 teeworlds 路径下的 data/editor/automap/ 目录中。
规则文件
每个有自动映射器的瓷砖集都有一个 tileset.rules 文本文件。每个 tileset.rules 文件可以包含多个自动映射器。
规则文件大致遵循 INI 文件格式。
自动映射器命名
在文件中,每个自动映射器以 [automapper_name] 行开始。
示例:在 grass_main.rules 文件中,有一个叫做 Grass 的自动映射器,它在文件中以 [Grass] 行开始。
使用自动映射器
- 在地图编辑器中创建一个使用
grass_main瓷砖集的瓷砖层 - 右键点击图层,然后点击 Auto map
- 要开始自动映射,点击 Grass
注意:自动映射器的文件名必须与瓷砖集的文件名一致。
Grass 自动映射器示例:
[Grass]
Index 1
#top
Index 16
Pos 0 -1 EMPTY
...处理流程
自动映射器会读取规则文件并扫描图层的每个位置。如果所选瓷砖的每条规则都适用,该瓷砖就会被放置在自动映射器扫描的位置。
- 如果多个瓷砖及其规则都匹配,只有最后的规则会生效(因为它会覆盖前面的)
- 除非停用,否则自动映射器会先将其更改放入缓冲区,然后再应用它们
瓷砖索引

每个瓷砖集有 16 行和 16 列,每个瓷砖都可以通过其索引来寻址。
瓷砖的索引是其位置的直接结果,可以通过以下公式计算:
index = 16 * row + column其中行和列在 0 到 15 之间。
特殊索引:
索引用于自动映射器的 INDEX 关键字。
语法
命名你的自动映射器规则
类似于 ini 文件,你可以为你的自动映射器规则创建自己的节:
[your-automapper-rule]多个索引选择后跟规则可以是一个节的一部分。
编写注释
# this is a comment选择你想要放置的瓷砖
INDEX 42这会选择瓷砖 42(意味着第 3 行第 11 列)。
可以通过在每个索引之间添加 OR 来选择多个索引:
INDEX 42 OR 43修改瓷砖
Index 42 XFLIP YFLIP ROTATE旋转组合:
- 180°:设置
XFLIP和YFLIP,但不要设置ROTATE - 270°:设置
XFLIP、YFLIP和ROTATE
瓷砖修改总是与选择在同一行。
放置瓷砖的规则
如果所有以下规则都适用,所选瓷砖就会被放置。放置瓷砖的规则总是以坐标开始,后跟一个规则:
Pos 0 -1 FULL这条规则选择相对于自动映射器扫描位置 X 坐标为 0、Y 坐标为 -1 的瓷砖。如果扫描位置上方的瓷砖是 FULL,所选瓷砖就会被放置(如果所有后续规则都适用)。如果是 EMPTY,就不会被放置。
使用 INDEX 关键字
除了使用 FULL 或 EMPTY,你还可以使用 INDEX 关键字选择另一个瓷砖:
Pos 0 -1 INDEX 12如果扫描位置上方的瓷砖索引为 12,它就会被放置。
可以通过在每个索引之间添加 OR 来选择多个索引:
Pos 0 -1 INDEX 12 OR 13同样可以使用 NOTINDEX 来排除一个瓷砖。
随机规则
你可以通过添加随机规则使所选瓷砖随机应用规则:
Random 20%随机规则期望一个 0% 到 100% 之间的值。这个值代表瓷砖被放置的概率。
高级概率:
如果你输入一个没有 % 符号的值,概率将不会按百分比解析,而是使用以下公式:
percentage = 1.0 / value这允许概率在 0% 到 1% 之间且值 > 100 的更稀有的瓷砖放置。
示例:Random 150 将有 1.0 / 150 ≈ 0.67% 的概率。
取模运算
使用 Modulo x_pattern y_pattern x_offset y_offset 运算符,你可以根据瓷砖的 X 和 Y 坐标创建重复图案。
示例:Modulo 2 3 0 -1
使用模运算来设置:
- X 轴上每隔一个瓷砖(
x_pattern) - Y 轴上每隔两个瓷砖(
y_pattern)
第三个和第四个参数可用于偏移 X(此处为 0)和 Y(此处为 -1)坐标并移动图案。
只有当以下两个规则都为真时,瓷砖才会被放置:
(x + x_offset) % x_pattern == 0
(y + y_offset) % y_pattern == 0这里 % 是取模运算符。
默认条件规则
默认情况下,游戏假设你想将每条规则应用于一个满瓷砖,这意味着以下规则总是隐含的:
Pos 0 0 FULL你可以通过在瓷砖选择下方添加以下行来停用这个默认规则:
NoDefaultRuleNewRun
在节中添加 NewRun 会使该节每次添加此关键字时额外运行一次。这可用于在第一次运行中设置一些基本瓷砖,在第二次运行中设置更复杂的瓷砖。
NoLayerCopy
在节中添加 NoLayerCopy 会导致它原地运行。这可以大幅提高性能,因为自动映射器不会在应用更改之前将其复制到缓冲内存中。
警告:但它可能会导致意外的副作用!
工具
一些用于创建自动映射器规则的工具:
资源
- Automapper tutorial
- Automapper files
- Grass automapper
- Random rule implementation
- Teeworlds web editor unique features
- rules++ about
小提示
- 自动映射器规则文件位于
data/editor/automap/目录下 - 规则文件使用类似 INI 的格式,每个自动映射器以
[名称]开始 - 文件名必须与瓷砖集文件名一致
- 索引 0 表示空瓷砖,其他索引表示满瓷砖
- 使用
XFLIP、YFLIP、ROTATE可以变换瓷砖 Random可以添加随机性,Modulo可以创建重复图案NoLayerCopy可以提高性能,但可能有副作用- 多个匹配规则时,最后一条规则会生效