Skip to content

Drawing Outlines

messire edited this page Sep 26, 2026 · 3 revisions

A blueprint appears in the drawing table only when it has an outline with the same ID.

Files

For blueprint example:machine:

data/example/blueprint_outlines/machine.json
assets/example/textures/blueprint/machine.png

Subdirectories are supported and must match between the blueprint and outline IDs.

Outline JSON

{
  "texture": "example:textures/blueprint/machine.png",
  "resolution": 128,
  "cells": 2200,
  "mask": "<base64 bit mask>"
}
Field Meaning
texture Client-side 256×256 transparent guide texture
resolution Square mask resolution; positive multiple of 8
cells Number of set bits expected in the mask
mask Base64 bytes, one bit per cell in row-major order

The decoded mask length must be resolution × resolution ÷ 8 bytes. An empty mask is rejected. A wrong cells value logs a warning but the counted mask value is used.

Generating the pair

Do not write the base64 mask by hand. Axiomata includes a generator:

tools/build_blueprint_outlines.py

It converts black ink on white paper into:

  • a transparent 256×256 guide texture;
  • a 128×128 server mask;
  • the outline JSON with the correct cell count and namespace.

It requires Pillow and takes the source directory, texture output directory, data output directory and namespace:

python tools/build_blueprint_outlines.py <source> <textures> <data> <namespace>

Subdirectories under <source> are preserved in both outputs.

The texture and mask must come from the same source image or the visible guide and server scoring will disagree.

Clone this wiki locally