Is the output really deterministic?
Yes, bit for bit. Generation is a pure function of the inputs: the seed, the requested size and the uniform values. The seeded primitives (the hash, the stream, noise and the distribution kernels) are specification-pinned algorithms, and a committed golden corpus guards the pipeline: any change to a golden pixel is a breaking change.
Seeds and declared inputs
The seed initializes the root random stream. Authors declare any controls they need with
input, including colors, dimensions or selection indices. Hosts can override these
values by name; omitted inputs keep their defaults. There are no implicit variant/archetype
controls. v and a are ordinary names.
Why a bytecode VM instead of shipping code?
Bytecode is small, self-contained, portable and safe. Hosts validate a file before running it, the instruction set pins every operation and a fuel budget guarantees termination, so the same file runs in the browser, the tools and native engines with identical pixels, and an untrusted file cannot harm its host.
How do composed assets work?
An asset imports other assets as parts (import hilt from "hilt.ips"). The
compiler links them into one self-contained binary. The parent calls
hilt.draw(seed, v, a, at = {x, y}, …) (call order is paint order) and reads the part's
outputs through hilt.outputs.name, already mapped into its own coordinates. Parts can
nest: hilt.grip is a part of a part.
What are structured outputs for?
They carry the data a game needs next to the pixels: point, rect and
circle slots, single or as lists. A sword reports its tip and grip,
a portrait its eyes, mouth and the colours it picked, a rock its
collider. The names are the contract between an asset and its host.
How do I contribute?
The repository is organised by layer: the current format and VM specification (spec/), the
runtime, the language and the compiler, the backends, the editor and this website. Every change runs
the test suites and the golden corpus, and a semantic change needs a specification update first. See
Source for the layout and the build.