Companion implementation to the design discussion at
sporel-meta/docs/design/2026-05-28-autotile-blob-styles-design.md §9.
Ships the S-V2E2-RM-Blob 14-slot schema in four canonical style
profiles, generated procedurally so the asset lib can be rebuilt
from scratch on any platform with Python 3 + Pillow:
Styles (14 base slots each, sub-cell-grid layout):
rectilinear — crisp 90-degree corners (dungeon walls, retro)
diagonal_cut — 45-degree chamfered convex corners (iso-feel)
organic — rounded quarter-arc convex corners (water/moss)
concave — concave-bite convex corners (frost/web)
Material variants (single-material atlases, one tinted set each):
blob_rect_stone — dark blue-gray (#282C38)
blob_rect_grass — mid green (#4A7838)
blob_rect_wood — light brown (#8B6B3F)
Multi-material testbench atlas:
blob_testbench — 3 materials x 14 slots = 42 tiles in one
atlas, for the vagrant-skeleton showcase
Per-style collision.json (axis-aligned rect-list, row+column merged
to minimum form: slot 13 collapses to a single 64x64 rect, slot 4
to a single 32x64 vertical bar, cross variants max 3 rects).
Phase-1: same rectilinear collision shared across all 4 styles,
max 5 px deviation at corners; per-style polygons deferred to
atlas-baker E2.
Reference sheets at docs/reference_sheet_<style>.png show all 14
slots per style in a 7x2 grid with slot index + bitmask + 3x3
neighbour mini-diagram. Color showcase at docs/color_showcase.png
demonstrates that one atlas serves N visual materials via runtime
tint (5 sample colours).
Atlas packer (scripts/atlas_pack.py) is a pure-Python substitute
for sporel-tool-atlas-baker. It produces the Sporel-conformant
4-file atlas set (tiles.atlas.json + tiles.atlas.lock.json +
tiles.diffuse.atlas.png + 1x1 placeholder tiles.height.atlas.png)
with 2 px edge-replicated padding around every tile to prevent
bilinear sampler bleed (sister-tile colours leaking at UV
boundaries — the artefact that caused the green-flicker bug
caught during 0.5.0c integration with vagrant).
Generation pipeline (scripts/bake.sh):
generate.py -> 56 base sprites + 4 collision.json
reference_sheet.py -> 4 reference_sheet PNGs
color_showcase.py -> color_showcase.png
bake_testbench.py -> 42-tile mixed-material atlas
bake_singles.py -> 3 x 14-tile single-material atlases
All output deterministic from the seed scripts (no random state).
.gitignore excludes the baked atlases (assets/atlases/) — those
are reproducible from sources via the bake scripts.
License: CC0 (procedural output, no third-party authorship claim).
Safe for any public-facing build.
Used in production by sporel-module-vagrant-skeleton via the
asset_aliases blob_testbench + blob_rect_stone — see the matching
commit there for the consumer-side integration.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9 lines
338 B
Plaintext
9 lines
338 B
Plaintext
{
|
|
"id": "lib-asset.prototype-blob-geom",
|
|
"version": "0.1.0",
|
|
"role": "asset",
|
|
"api_min": "0.1",
|
|
"deps": [],
|
|
"_note": "Procedurally-generated geometric blob-schema reference assets. Public-domain, safe for any context. Intended as authoring-reference for human artists creating real blob-material sprite sheets."
|
|
}
|