关于 layer-tilesets
layer-tilesets 是 Layer 的图块制作技能,面向需要网格一致的游戏地图美术工作者。它指导固定投影与占格,并将图块导出为多种引擎格式。
主要功能
- 01统一图块投影与占格
- 02支持方形和六边形网格
- 03参考图保持套组风格
- 04设置建筑高度与朝向
- 05导出引擎图块集
适用场景
- 01制作等距村庄地图
- 02创建多格建筑及多朝向版本
- 03导出 Godot 或 Unity 图块集
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ layerai/ skills --skill layer-tilesets安装后在 Claude Code 中输入/layer-tilesets确认已加载。
详细介绍
图层 Tileset
概览
一个图块只有与相邻图块搭配时才有用。两个精美的等距房屋,如果绘制角度或底座略有不同,就无法放在同一张地图上,再怎么措辞提示词也无法解决这个问题。Layer 通过结构而非描述来解决:execute_forge 中的 tile_grid 会先在固定网格的底图上绘制每个图块,再将其裁出并适配到该网格上,因此一组图块中的所有图块都使用相同的投影和占地范围。
本技能适用于放置在网格上的图块(等距菱形、六边形、对齐的俯视单元格)。像草地或石材这样边缘相接并重复铺设的平面表面属于纹理:请按 layer-textures 中的说明使用 tileability。生成机制、消费门槛和轮询请参阅 layer。
如果此处提到的某个相关技能不在你可用的技能中,请让用户安装它(npx skills add layerai/skills --skill <name>);若无人值守,则根据工具架构继续操作并标明这一缺失。
快速参考
| 需求 | 使用 |
|---|---|
| 可在网格上绘制的模型 | 使用 filter.capabilities: {tile_grid: true} 调用 list_base_models,选择第一个结果 |
| 等距菱形图块 | tile_grid.shape: "SQUARE"(默认),方向为 DIAMOND(默认) |
| 俯视方形地图 | shape: "SQUARE",orientation: "ALIGNED" |
| 六边形图块 | shape: "HEXAGON",orientation: "POINTY_TOP"(默认)或 "FLAT_TOP" |
| 经典 2:1 等距视觉效果 | 不设置 elevation:正方形网格为 30(2:1 斜等距),最多设置为 60;六边形网格不设置时为 60 |
| 地面图块与建筑 | 平坦地面设为 height: 0,建筑约为 1 到 2 个单元格边长 |
| 占据多个单元格的建筑 | footprint_width x footprint_depth,每项为 1 到 8 个单元格;六边形不设置,该形状占据一个单元格 |
| 同一建筑的其他朝向 | facing 设为 0、90、180、270(仅限正方形;六边形朝向为 0) |
| 输出的单元格尺寸 | 以像素为单位设置 tile_width;不设置则保留绘制尺寸,并将其取整到 2 的幂 |
| 将现有素材重新绘制为图块 | 将素材作为 init_image 附加:其形状和设计会保留 |
| 延续整组图块的风格或某个朝向 | 将已批准的图块作为 reference_image 附加 |
| 图块使用统一的固定画布 | 使用 output_fit,并设置 canvas: "FIXED" 和 anchor: "BASE" |
| 导入引擎 | 使用 export_tileset,并将 engine 设为 TILED、GODOT、UNITY 或 JSON |
一次性确定网格
网格是整组图块的约定。每个图块共享同一个 tile_grid;图块之间只改变占地范围、高度和朝向。首次运行前,确定 shape、orientation、elevation、light_from 和 tile_width,记录下来,并在后续每次运行中传入完全相同的值。中途更改 elevation 或 tile_width 会导致图块无法对齐;更改 light_from 则会让地图上的阴影朝向不一致。
light_from(从摄像机视角看为 left 或 right)很容易被忘记,因为它有默认值。仍要明确指定,并确保提示词中的光照描述与之保持一致。
提示词包含的内容
网格负责投影和放置,因此提示词应着重描述主体和整套图块的风格规则:材质、调色板、时代、细节程度和轮廓处理。只描述图块上呈现的内容。单元格以外的景物、地平线或邻近建筑都会妨碍抠图。
先审核通过一个图块,再将其作为 reference_image 附加到所有同组图块上,让它们继承其调色板和渲染风格。对于要持续数月扩充的图块集,请训练一个参考集(layer-reference-sets)。
朝向
从四个方向查看一座建筑,就需要执行四次生成,并分别设置 facing 为 0、90、180 和 270。先生成并审核通过朝向 0 的图块。然后将通过审核的图块作为 reference_image 附加到另外三个生成任务中,提示“同一座建筑的另一个朝向”。没有它,你会得到四座占地相同、但彼此不同的建筑。朝向仅适用于正方形单元格。
export_tileset 会在一个主体的名称后标注其朝向(tower_0、tower_90),并将主体和朝向记录为图块属性。
交付
对于地图,export_tileset 是最后一步:它会执行确定性文件操作,不消耗 Creative Units,并根据每个图块在网格中的位置放置图块。按列表顺序传入最多 128 个 file_ids;所有图块必须使用同一网格。
engine | zip 中的内容 |
|---|---|
TILED | 一个 .tsx 图块集、每个图块一张图像,以及一个示例 .tmx 地图 |
GODOT | 一个基于单张图集的 Godot 4 TileSet .tres |
UNITY | 一张图集,以及用于将其切分为带枢轴的精灵的 .meta |
JSON | 一张图集和一个 TexturePacker JSON(hash),适用于 PixiJS、Phaser、Cocos |
zip 中包含一份 README,其中列出了导入步骤和地图所需的网格设置。padding 用于设置图集中的透明间隔;TILED 会忽略此参数。
如果用户想要的是一张图像,而非导入引擎的资源,请使用 pack_sprite_sheet:每一帧都是 tile_grid 图块时,它会按各帧的锚点(图块所在单元格的底部中心)对齐帧,忽略 cell_width 和 cell_height,并返回每帧的矩形区域和 Unity 枢轴。若要将同一尺寸的图块作为独立精灵交付,使用 output_fit 搭配 FIXED 画布和 anchor: "BASE",让所有图块的底部都位于同一点。不带 tile_grid 时,不接受 BASE。
完整示例
“适用于 Godot 的中世纪等距视角村庄图块集:草地、土路和水面地面图块、一座可从四个方向查看的 2x2 房屋,以及一座 1x1 瞭望塔。”
- 使用
filter.use_case: "text_to_image"和filter.capabilities: {tile_grid: true}调用list_base_models;选择第一个结果,然后为任意触发词调用get_base_model。 - 为整套图块固定网格:
{shape: "SQUARE", orientation: "DIAMOND", light_from: "left", tile_width: 128},并将elevation留空,以使用 2:1 菱形投影。 - 先生成草地图块,设置
height: 0、footprint_width: 1、footprint_depth: 1,提示词只描述材质、调色板和轮廓:“草地面图块,手绘风格,柔和的绿色,深色柔和轮廓”。审核通过一个图块;它将作为之后每次生成任务的reference_image。 - 生成道路和水面图块:使用相同的网格,设置
height: 0,并附加通过审核的草地图块。 - 生成朝向 0 的房屋:设置
footprint_width: 2、footprint_depth: 2、height: 1.5。审核通过后,再生成朝向 90、180 和 270 的图块,并分别附加通过审核的房屋作为reference_image。 - 生成瞭望塔:占地 1x1,设置
height: 2,并附加草地图块以保持风格一致。 - 在第 3 步之前估算任务价格:对每种可单独计价的类型(地面图块、房屋、塔楼)各调用一次
estimate_forge_price,再按数量求和;超过 20 CUs 时先询问用户。执行每次生成后,按照返回的poll_interval_seconds轮询get_forge_run。 - 使用
engine: "GODOT"和按列表顺序排列的已审核file_ids调用export_tileset。提供下载链接,并指出 README 中的网格设置。
常见错误
- 在模型运行提示词中写入“等距”,却未使用
tile_grid,并期待图块自动对齐。 - 在一组图块中途更改
elevation、tile_width、orientation或light_from。 - 生成朝向 90 到 270 的图块时,未将已批准的朝向 0 图块作为
reference_image附上。 - 在六边形上设置
facing,而六边形只能朝向 0。 - 提示词要求在图块周围绘制场景:地平线、相邻图块、延伸到网格单元之外的地面。
- 将
tile_grid用于平面重复表面,或将tileability用于放置在网格上的图块。 - 用户要求提供可由引擎作为图块集导入的内容时,却交付拼合图集。