Explanation

Textures as text

Why TextureScript describes a texture as a character grid and a palette instead of a picture.

A 16×16 Minecraft texture is 256 pixels drawn from a handful of colours. That is small enough to write down. TextureScript treats a texture as text: a grid of 16 rows of 16 characters, where each character names a shade from a palette.

What text buys

Anyone who can write can draw. A language model cannot move a mouse in a paint program, but it can write 16 lines of 16 characters. Grids make an agent a first-class author, not a helper that describes what a person should draw.

Every pixel is addressable. A critique can say "rows 3 to 5, columns 10 to 12, use c instead of d", and the fix is an exact edit. Tools name pixels as (column,row) for the same reason.

Changes are reviewable. A grid diffs line by line in git. Two drafts can be compared by reading them, and diff shows which pixels a fix touched.

Colours stay disciplined. Keys stand for shades of a material, not arbitrary colours. A grid cannot introduce a stray colour by accident; to change a colour you change the palette, and every texture of the family follows.

Rendering is deterministic. The same grid always gives the same PNG, so a texture can be regenerated, checked in CI or compared byte for byte.

What text costs

Text is a poor medium for judging a picture. A grid tells you where pixels are, not whether the plant reads as corn. So TextureScript never stops at the grid: every render writes a ×16 preview to look at, and crops are judged in a 3D scene beside vanilla blocks. The loop is to draw in text and judge by eye, at the scale the game shows.

Copyright © 2026