unity-technologies/skillsPrüfung bestanden
SKILL DETAIL
tilemap-ruletile-createempty
unity-technologies/skills/tilemap-ruletile-createempty
Creates an empty RuleTile asset without Sprite or Spritesheet inputs. Use ONLY when the user wants a blank RuleTile, HexagonalRuleTile, or IsometricRuleTile for custom rule configuration AND has not provided or referenced any sprites. If the user mentions existing sprites, terrain art, edge tiles, or a tiles folder, use tilemap-ruletile-createfromsegment instead, never this skill.
Installationen · 114Quelle ansehen
Installation
npx skills add https://github.com/unity-technologies/skills --skill tilemap-ruletile-createempty
Skill-Dateien
SKILL.md
Zuletzt synchronisiert · 12.09.2026
resources/hexagonalruletile.md›
# Skill: Advanced Hexagonal RuleTile Creation
This skill provides a template and logic for creating complex `HexagonalRuleTiles`. Use this to programmatically generate or manually configure new Hexagonal RuleTiles for pointy-top hex grids.
## Hexagonal Tile Rule Pattern (Pointy Top)
A Hexagonal RuleTile uses 6 possible neighbor directions. These neighbors are defined as follows:
### Neighbor Directions and Coordinate Mappings
For a tile at `(x, y, 0)`, the 6 neighbors are at:
1. **North-West (NW)**: `(-1, 1, 0)`
2. **North (N)**: `(0, 1, 0)`
3. **East (E)**: `(1, 0, 0)`
4. **South-West (SW)**: `(-1, -1, 0)`
5. **South (S)**: `(0, -1, 0)`
6. **West (W)**: `(-1, 0, 0)`
### Legend:
- `.`: **This** (Type 1)
- `X`: **Any** (Type 0)
- **Fixed**: Rule is applied exactly as defined.
- **MirrorX**: Rule is applied as defined and mirrored across the X-axis.
## Full Tiling Rules Template
The hexagonal tile set uses **MirrorX** and **Fixed** transforms. **Rotated** is not used in this specific set.
| Rule ID | Neighbor Configurations (Pos: Type) | Transform | Description |
|:--------|:------------------------------------| :--- | :--- |
| 0 | NW:., N:., E:., SW:., S:., W:. | Fixed | Full 6-neighbor surrounded |
| 1 | NW:., W:., SW:., S:., E:. | MirrorX | 5-neighbor surrounded |
| 2 | NW:., W:., E:., SW:., N:. | MirrorX | 5-neighbor surrounded variant |
| 3 | N:., NW:., W:., SW:., S:. | MirrorX | 5-neighbor surrounded variant |
| 4 | W:., SW:., S:., E:. | Fixed | 4-neighbor connectivity |
| 5 | W:., NW:., N:., E:. | Fixed | 4-neighbor connectivity |
| 6 | NW:., W:., SW:., S:. | MirrorX | 4-neighbor corner/edge |
| 7 | NW:., W:., SW:., N:. | MirrorX | 4-neighbor corner/edge |
| 8 | NW:., SW:., W:., E:. | MirrorX | 4-neighbor bridge |
| 9 | NW:., W:., E:., S:. | MirrorX | 4-neighbor connectivity |
| 10 | NW:., SW:., S:., E:. | MirrorX | 4-neighbor connectivity |
| 11 | NW:., N:., S:., SW:. | Fixed | 4-neighbor vertical-ish |
| 12 | N:., NW:., W:., S:. | Fixed | 4-neighbor horizontal-ish |
| 13 | W:., SW:., S:. | MirrorX | 3-neighbor corner |
| 14 | NW:., W:., SW:. | MirrorX | 3-neighbor flat edge |
| 15 | W:., NW:., N:. | MirrorX | 3-neighbor corner |
| 16 | NW:., N:., S:. | MirrorX | 3-neighbor T-junction |
| 17 | W:., SW:., E:. | MirrorX | 3-neighbor T-junction |
| 18 | W:., N:., SW:. | MirrorX | 3-neighbor wide corner |
| 19 | E:., NW:., SW:. | MirrorX | 3-neighbor wide corner |
| 20 | NW:., W:., E:. | MirrorX | 3-neighbor wide corner |
| 21 | SW:., S:., NW:. | MirrorX | 3-neighbor variant |
| 22 | W:., NW:., S:. | MirrorX | 3-neighbor variant |
| 23 | NW:., W:. | Fixed | 2-neighbor edge |
| 24 | W:., SW:. | Fixed | 2-neighbor edge |
| 25 | SW:., S:. | Fixed | 2-neighbor edge |
| 26 | E:., S:. | Fixed | 2-neighbor edge |
| 27 | N:., E:. | Fixed | 2-neighbor edge |
| 28 | NW:., N:. | Fixed | 2-neighbor edge |
| 29 | W:., E:. | MirrorX | 2-neighbor opposite bridge |
| 30 | N:., SW:. | MirrorX | 2-neighbor long bridge |
| 31 | W:., S:. | MirrorX | 2-neighbor acute corner |
| 32 | E:., NW:. | MirrorX | 2-neighbor long bridge variant |
| 33 | N:., S:. | MirrorX | 2-neighbor vertical bridge |
| 34 | N:. | MirrorX | Single neighbor North |
| 35 | E:. | MirrorX | Single neighbor East |
| 36 | S:. | MirrorX | Single neighbor South |
| 37 | all 6 surrounding positions: X | Fixed | Default / No-neighbor |
#### Usage
When applying this skill to a new texture set, first ensure the texture is sliced into sprites matching these 38 logical configurations. Then, run a script using the description to map the sprites to each rule. Ensure that HexagonalRuleTile has all 38 TilingRules listed in the template.resources/ruletile.md›
# Skill: Advanced RuleTile Creation
This skill provides a template and logic for creating complex `RuleTiles`. Use this guide to programmatically generate or manually configure new RuleTiles that follow consistent connectivity patterns.
## Rule Tile Rule Pattern
The following rules define the connectivity for a standard 2D top-down layout. Each rule checks for the presence (.) or absence (X) of a tile in its 3x3 neighborhood. Depending on the Spritesheets used, the Rule Tile can use Fixed Rule Transforms or Rotated Rule Transforms. Use Rotated Rule Transforms to reduce the number of Tiling Rules used.
## Legend
- `.`: **This** (Tile must be present)
- `X`: **Any** (Does not matter)
- `*`: The tile itself (Center)
### Tiling Rules Template for Fixed Rule Tiles
| Rule ID | Neighbors (Top to Bottom, Left to Right) | Rule Transform | Description |
|:--------|:-----------------------------------------|:---------------|:--------------------------------------------------------|
| 0 | `. . .` / `. * .` / `. . .` | Fixed | Fully surrounded (inner tile) |
| 1 | `X . .` / `. * .` / `. . .` | Fixed | Top left corner missing |
| 2 | `. . X` / `. * .` / `. . .` | Fixed | Top right corner missing |
| 3 | `. . .` / `. * .` / `X . .` | Fixed | Bottom left corner missing |
| 4 | `. . .` / `. * .` / `. . X` | Fixed | Bottom right corner missing |
| 5 | `X . X` / `. * .` / `. . .` | Fixed | Top corners missing |
| 6 | `. . .` / `. * .` / `X . X` | Fixed | Bottom corners missing |
| 7 | `X . .` / `. * .` / `X . .` | Fixed | Left corners missing |
| 8 | `. . X` / `. * .` / `. . X` | Fixed | Right corners missing |
| 9 | `X . .` / `. * .` / `. . X` | Fixed | Top Left and Bottom Right diagonal corners missing |
| 10 | `. . X` / `. * .` / `X . .` | Fixed | Top Right and Bottom Left diagonal corners missing |
| 11 | `X . X` / `. * .` / `X . .` | Fixed | Top Left, Top Right and Bottom Left corners missing |
| 12 | `X . X` / `. * .` / `. . X` | Fixed | Top Left, Top Right and Bottom Right corners missing |
| 13 | `X . .` / `. * .` / `X . X` | Fixed | Top Left, Bottom Left and Bottom Right corners missing |
| 14 | `. . X` / `. * .` / `X . X` | Fixed | Top Right, Bottom Left and Bottom Right corners missing |
| 15 | `X . X` / `. * .` / `X . X` | Fixed | Cross Section |
| 16 | `X X X` / `. * .` / `. . .` | Fixed | Flat edge (Bottom) |
| 17 | `. . .` / `. * .` / `X X X` | Fixed | Flat edge (Top) |
| 18 | `. . X` / `. * X` / `. . X` | Fixed | Flat edge (Left) |
| 19 | `X . .` / `X * .` / `X . .` | Fixed | Flat edge (Right) |
| 20 | `X X X` / `. * .` / `. . X` | Fixed | L-Shape, Point Right |
| 21 | `. . X` / `. * X` / `X . X` | Fixed | L-Shape, Point Bottom |
| 22 | `X . .` / `. * .` / `X X X` | Fixed | L-Shape, Point Left |
| 23 | `X . X` / `X * .` / `X . .` | Fixed | L-Shape, Point Top |
| 24 | `X X X` / `. * .` / `X . .` | Fixed | L-Shape Inverse, Point Left |
| 25 | `X . .` / `X * .` / `X . X` | Fixed | L-Shape Inverse, Point Bottom |
| 26 | `. . X` / `. * .` / `X X X` | Fixed | L-Shape Inverse, Point Right |
| 27 | `X . X` / `. * .` / `. . X` | Fixed | L-Shape Inverse, Point Top |
| 28 | `X X X` / `. * .` / `X . X` | Fixed | T-Shape, face down |
| 29 | `X . X` / `. * .` / `X X X` | Fixed | T-Shape, face top |
| 30 | `X . X` / `. * X` / `X . X` | Fixed | T-Shape, face left |
| 31 | `X . X` / `X * .` / `X . X` | Fixed | T-Shape, face right |
| 32 | `X X X` / `. * .` / `X X X` | Fixed | Horizontal bridge |
| 33 | `X . X` / `X * X` / `X . X` | Fixed | Vertical bridge |
| 34 | `X X X` / `X * .` / `X . .` | Fixed | Corner piece, Bottom Right |
| 35 | `X X X` / `. * X` / `. . X` | Fixed | Corner piece, Bottom Left |
| 36 | `. . X` / `. * X` / `X X X` | Fixed | Corner piece, Top Left |
| 37 | `X . .` / `X * .` / `X X X` | Fixed | Corner piece, Top Right |
| 38 | `X X X` / `X * .` / `X . X` | Fixed | Edge end, Bottom Right |
| 39 | `X X X` / `. * X` / `X . X` | Fixed | Edge end, Bottom Left |
| 40 | `X . X` / `. * X` / `X X X` | Fixed | Edge end, Top Left |
| 41 | `X . X` / `X * .` / `X X X` | Fixed | Edge end, Top Right |
| 42 | `X X X` / `. * X` / `X X X` | Fixed | Single isolated tile, Left |
| 43 | `X X X` / `X * .` / `X X X` | Fixed | Single isolated tile, Right |
| 44 | `X . X` / `X * X` / `X X X` | Fixed | Single isolated tile, Top |
| 45 | `X X X` / `X * X` / `X . X` | Fixed | Single isolated tile, Bottom |
| 46 | `X X X` / `X * X` / `X X X` | Fixed | Center |
#### Usage
When applying this skill to a new texture set, first ensure the texture is sliced into sprites matching these 47 logical configurations. Then, run a script using the description to map the sprites to each rule. Ensure that RuleTile has all 47 TilingRules listed in the template.
### Tiling Rules Template for Rotated Rule Tiles
| Rule ID | Neighbors (Top to Bottom, Left to Right) | Rule Transform | Description |
|:--------|:-----------------------------------------|:---------------|:------------------------------|
| 0 | `. . .` / `. * .` / `. . .` | Fixed | Fully surrounded (inner tile) |
| 1 | `X . .` / `. * .` / `. . .` | Rotated | One corner missing |
| 2 | `X . X` / `. * .` / `. . .` | Rotated | Two corners missing |
| 3 | `X . .` / `. * .` / `. . X` | Rotated | Two diagonal corners missing |
| 4 | `X . X` / `. * .` / `. . X` | Rotated | Three corners missing |
| 5 | `X . X` / `. * .` / `X . X` | Fixed | Cross Section |
| 6 | `X X X` / `. * .` / `. . .` | Rotated | Flat edge |
| 7 | `X X X` / `. * .` / `. . X` | Rotated | L-Shape |
| 8 | `X X X` / `. * .` / `X . .` | Rotated | L-Shape Inverse |
| 9 | `X X X` / `. * .` / `X . X` | Rotated | Isolated edge |
| 10 | `X X X` / `. * .` / `X X X` | Rotated | Vertical/Horizontal bridge |
| 11 | `X X X` / `X * .` / `X . .` | Rotated | Corner piece |
| 12 | `X X X` / `X * .` / `X . X` | Rotated | Edge end |
| 13 | `X X X` / `. * X` / `X X X` | Rotated | Single isolated tile |
| 14 | `X X X` / `X * X` / `X X X` | Fixed | Center |
#### Usage
When applying this skill to a new texture set, first ensure the texture is sliced into sprites matching these 15 logical configurations. Then, run a script using the description to map the sprites to each rule. Ensure that RuleTile has all 15 TilingRules listed in the template.
SKILL.md›
---
name: tilemap-ruletile-createempty
description: Creates an empty RuleTile asset without Sprite or Spritesheet inputs. Use ONLY when the user wants a blank RuleTile, HexagonalRuleTile, or IsometricRuleTile for custom rule configuration AND has not provided or referenced any sprites. If the user mentions existing sprites, terrain art, edge tiles, or a tiles folder, use tilemap-ruletile-createfromsegment instead, never this skill.
required_packages:
com.unity.2d.tilemap: ">=1.0.0"
com.unity.2d.tilemap.extras: ">=4.0.0"
---
# Tilemap RuleTile Create Empty
## Workflow
### Step 1: Verify No Sprite Inputs
**WAIT** - Confirm that no Sprites or Spritesheets were specified by the user. This skill is only for empty RuleTiles. If there are Sprites or Spritesheets specified by the user, use the tilemap-ruletile-createfromsegment skill instead.
### Step 2: Determine RuleTile Type
Identify which RuleTile type to create based on user request:
- **RuleTile**: Standard rectangular grid
- **HexagonalRuleTile**: Hexagonal grid layout
- **IsometricRuleTile**: Isometric grid layout
### Step 3: Create Empty TilingRules
For each TilingRule, ensure the Sprite array has one `null` entry.
## Branching Logic (RuleTile Types)
### Path A: RuleTile
- Use template from `resources/ruletile.md`.
### Path B: HexagonalRuleTile
- Use template from `resources/hexagonalruletile.md`.
### Path C: IsometricRuleTile
- Create empty rules with appropriate neighbor positions for isometric layout.
## Important Notes
- **TilingRuleOutput.Neighbor.This**: Use to identify RuleTiles that are the same (matching neighbors).
- **TilingRuleOutput.Neighbor.NotThis**: Do NOT use unless explicitly specified by the user to ignore a Tile at a certain position.