Skip to content

Releases: leobaray/blobsmith-autotile-wirer

Blobsmith Autotile Wirer v1.1.0 — the addon as a one-click zip

Choose a tag to compare

@leobaray leobaray released this 27 Aug 16:29

The addon itself, as a zip you unpack — not a repository you clone.

Unzip it in your Godot project root. It creates addons/blobsmith_wirer/
and nothing else; no file lands anywhere but that folder. Then
Project → Project Settings → Plugins → enable Blobsmith Autotile Wirer,
and the tool is at Project → Tools → "Blobsmith Autotile Wirer…".

An example 47-blob sheet ships inside the addon folder
(addons/blobsmith_wirer/examples/grass_47blob_16px.png), so there is something
to wire before you have drawn your own.

What it does

Point it at a 47-blob (8×6 tiles) or 16-tile (8×2 tiles) autotile sheet and it
writes a fully wired Godot 4 TileSet next to the PNG: atlas source, terrain
set, per-tile peering bits, and optional collision polygons. Add a
TileMapLayer, assign the .tres, paint in the Terrains tab.

What changed since 1.0.0

The dead end is no longer a dead end. When the sheet you picked is not a
Blobsmith layout, the dialog used to say "set tile size manually" — useless
advice, because the file you have does not wire at any tile size. It now names
what the sheet is, from its pixel size alone:

  • 6 base tiles (the input Blobsmith draws from)
  • the Godot 3 3×3-minimal set
  • 16 tiles in a 4×4 Wang square
  • the 47-blob count in the wrong arrangement
  • a plain grid, measured
  • no square tile size divides this file — margins or separation between tiles,
    which this wirer does not read

When a size has more than one honest reading — 256×256 is 4×4 tiles at 64px
and 16×16 tiles at 16px — it says the second one out loud instead of picking
silently. And it offers the free 47-blob starter pack
right there, because a sheet that cannot be wired needs a sheet, not a setting.

BlobsmithWirerCore.classify_sheet(width, height) is the same function, callable
from a script.

Everything else since 1.0.0 (13/07) is documentation and free tools in the
repository, not plugin code: the tile_map_data binary format, why a blob
autotile has 47 tiles, terrain paint prediction, tile seams, y-sort draw order,
the whole-project TileMap → TileMapLayer converter, and the starter pack.

Godot versions

4.3 or newer. 4.2 does not have TileMapLayer, so neither the plugin's
workflow nor its verification exist there.

This exact zip was unpacked into an empty project and run headless against real
4.3 and real 4.7 — 37 checks each, no failures, wiring the example sheet
that ships inside it. That check runs on every build of this repository, so the
archive's shape is asserted, not assumed.

Note on the Asset Library

The Godot Asset Library listing is registered under 4.7 and still serves the
13/07 commit, so the editor's AssetLib tab gives you neither this version nor —
on 4.3, 4.4, 4.5 and 4.6 — any result at all. This zip is the current addon.


MIT. No account, no network, nothing uploaded.
Free browser tools ·
the nine Godot 4 scanners ·
Blobsmith, which draws the sheet

TileMap → TileMapLayer converter v1 — whole project, from the command line

Choose a tag to compare

TileMap is deprecated since Godot 4.3. The editor converts one scene at a
time, by hand, and only scenes it can open
. This is the same job for a whole
project, from the command line.

Two Node scripts, zero dependencies, no install, no network, no engine needed.
Unzip and run — node docs/convert_tilemap_to_tilemaplayer.js /path/to/project.

convert_tilemap_to_tilemaplayer.js — every TileMap becomes a Node2D
with one TileMapLayer child per layer, layer_N/tile_data re-encoded into
tile_map_data, and every block it does not own returned byte for byte. It
writes nothing without --write, keeps a .tscn.bak when it does, and
refuses rather than guesses: a script on the node, an unknown layer_N/
key, a duplicate layer name, an unchecked format.

scan_tilemap_script.js — the scripts it refuses. A script that
extends TileMap cannot extend the Node2D the node becomes, so the scene
converter stops; this ports it call by call. Given the scene, the layer index
becomes the actual layer node: set_cell(0, …) comes back as
$Ground.set_cell(…), and clear_layer(0) as $Ground.clear() — there is no
clear_layer on TileMapLayer. Anything needing a human decision comes back
as a question instead of a silent rewrite.

Both take --json. Exit code is 1 while anything still needs a human, so they
drop into a build script.

What was measured

  • Over Godot's own demo projects at branch 4.2 (298 scenes): 14 nodes and
    3 427 cells converted, 3 refused — all three carrying scripts.
    1 real
    TileMap in 6 has no automatic conversion; that is what the second script is
    for.
  • The engine reads the scene back cell by cell before and after:
    640 checks green across 4.3, 4.4, 4.7 and a 4.2 → 4.7 cross-version pass
    (docs/verify_tilemap_convert.sh).
  • The replacement table is dumped from ClassDB on 4.2, 4.3, 4.4 and 4.7
    rather than typed from the docs: 31 checks green on each engine that has
    TileMapLayer, plus a round trip where a scripted scene is ported end to end
    — 22 rewrites, 0 left for a human — and the engine confirms the ported script
    reads the converted scene exactly as the original read the original
    (docs/verify_tilemap_script_api.sh, which re-runs it against your build).

None of that is a promise about your project. It is why --write keeps a
.tscn.bak and why the refusals exist.

No terminal?

The same files run in the browser, nothing uploaded:
scenes ·
scripts

MIT. Every byte in the zip is already in docs/ in this repository — the
release is a shortcut and a stable link, not a different build.

Free 47-blob tileset starter pack v1 — 8 wired Godot 4 TileSets

Choose a tag to compare

@leobaray leobaray released this 24 Aug 00:15

Eight ready-to-paint Godot 4 TileSets, MIT, no e-mail and no account needed. Download the zip below, drop two files into your project, and paint — nothing to install, no plugin required for the pack itself.

What's inside — 4 terrains × 2 tile sizes:

terrain 16px sheet 32px sheet terrain name in the editor
Grass grass_47blob_16px (128×96) grass_47blob_32px (256×192) Grass
Stone stone_47blob_16px (128×96) stone_47blob_32px (256×192) Stone
Sand sand_47blob_16px (128×96) sand_47blob_32px (256×192) Sand
Water water_47blob_16px (128×96) water_47blob_32px (256×192) Water

Each .tres is already wired: 47 tiles in ascending canonical-mask order, terrain set 0 in Match Corners and Sides, peering bits set on all 47 tiles (this is the part that makes Connect mode pick the right tile instead of leaving holes), and a full-square collision polygon on every tile, physics layer 0.

Use it (3 steps, ~20 seconds)

  1. Copy both files of one row — the .png and the .tres — into your project, any folder, as long as the pair lands in the same folder. The .tres points at the PNG by filename on purpose, so the pair works wherever you put it.
  2. Let the editor import the PNG (it does that by itself when the Godot window regains focus). Don't copy an .import file — Godot writes its own.
  3. Add a TileMapLayer, set its TileSet to the .tres, open the TileMap panel → Terrains tab, pick Connect mode, and paint.

Verified, not asserted. Each of the eight was loaded in a real engine, headless, painted onto a real TileMapLayer with set_cells_terrain_connect and read back — 13 checks per tileset, 104 total, on three stable builds on 2026-08-23:

Godot starter pack
4.3.stable 104 pass / 0 fail
4.4.stable 104 pass / 0 fail
4.7.stable 104 pass / 0 fail

4.2 is not covered: TileMapLayer does not exist there, so step 3 has nothing to paint on.

Honest description of the art. This is procedural placeholder art, not a hand-drawn asset pack — for prototyping, for learning how Godot 4 terrains behave, and as a correct reference sheet when your own tileset paints the wrong tile. The layout is the real thing: if your own 47-tile sheet matches this ordering, it wires up exactly the same way.

Already have your own 47-blob sheet? The addon in this repo (MIT, also on the Godot Asset Library) turns it into a wired .tres in one click: Project > Tools > Blobsmith Autotile Wirer…. Why 47 and not 256, and what "Match Corners and Sides" actually matches: docs/why-47-tiles-not-256.md.

Where the art comes from: composed from a 6-tile base block by Blobsmith, which exports this exact .png + .tres pair — free in-browser version: https://blobsmith.itch.io/blobsmith-lite · full version: https://blobsmith.itch.io/blobsmith.

Zip: 18 files, 157.692 bytes, sha256 ff92d33438916eef31765b278024c2d42dcd6c35534efdfcf47b1e8eea4a6b5c. Per-file notes: examples/starter-pack/README.md.