C:\GRIFFIN\PROJECTS\TOOLS\PIXELATA>

[@] MAP
###C############
#...........$..#
#.^_^......|.|.P
#......@.......#
#.|.|......^_^.#
#..............#
######H#########
TOOLS/PIXELATA  

Doors are hotkeys. Or click the screen and walk with the arrow keys.

Pixelata

Status
In development
Stack
Desktop App · Rust · Tauri · Pixel Art · AI Agents
  1. #1 Griffin Hale

    A desktop app for planning a game's art and building it as editable pixel models, where AI agents propose changes that a person adopts.

    At a glance

    • Outcome: A desktop app for planning a game’s art and building it. Plan holds boards, references and the list of assets a game needs; Make is a pixel editor whose sprites stay editable as shapes. AI agents can propose plans and models, and a person adopts them.
    • Status: In development. Runs as a Linux development build, adopted for internal use on October 15, 2026. Installers for Windows, macOS and Linux come before the first release.
  2. #2 Griffin Hale

    • Dates: July 2026 to present. The current Rust app dates from September 2026.
    • History: Began in July 2026 as a Python command-line tool and local web workspace that planned asset packs, checked art against a palette and exported atlases for Godot. Rebuilt from September 2026 as a Rust desktop app with its own editor. The Python version is retired and serves as the reference its replacement is tested against.
    • Role: Solo. Product scope, workspace and module boundaries, geometry choices and the speed budget.
    • Contribution: I write the product scope, the decision records and the dependency-graph plans. AI agents implement each piece, an independent reviewer checks it, and I approve every merge.
  3. #3 Griffin Hale

    • Stack & libraries: Rust, Tauri 2, React 19, TypeScript, Vite, PixiJS (WebGL canvas), SQLite via rusqlite, an MCP server for AI agents, Nix. Python for reference checks.
    • Source: Private.
  4. #4 Griffin Hale

    • Validation: Reference tests compare the Rust drawing code with expected pixels and bytes from the Python version and from independently worked cases. Workflow tests fork a model and check that the original stays byte-identical; a launch test drives the real app on a virtual display with real mouse and keyboard input.
    • Limitations: Edit timings passed on one busy Linux machine with small samples; a rerun on a quiet machine is pending. A hands-on session on October 15, 2026 found hand editing hard to use, because shapes are typed as numbers.
  5. #5 Griffin Hale

    Pixelata is a desktop app for planning a game’s art and then building it. Plan holds moodboards, reference images, art directions and a list of every asset the game needs, from a floor tile to a character’s walk. Make is a pixel editor. Each side works on its own, with no account and no AI.

    Plan mode showing a board titled Manor kitchen · asset study with three reference cards: a wooden worktable at 192 × 160, a terracotta floor tile at 128 × 64 and a green wall panel at 72 × 132, each labeled adopted generated art, with Earlier, Later and Remove buttons.
    A planning board for the Manor kitchen. The board was set up for this screenshot; the art is the adopted AI-generated kitchen set.
  6. #6 Griffin Hale

    In Make you build a sprite from boxes, cut shapes out of them and paint flat details onto the parts. You pose the model, view it from fixed angles and string poses into an animation. Export, run from the command line for now, writes PNG sprite sheets and a data file for the game engine. An asset in Plan links to the exact model version that fills it. Later edits to the model leave that link alone.

    Animate mode with a small blocky character in a green coat. The View menu is open, listing front, quarter and eight diagonal angles from 0 to 315 degrees. Below, a timeline reads 880 / 2880 ms on pose step-a.
    The test character in Animate mode, with its eight diagonal facings in the View menu. Geometric test art, not final art.
  7. #7 Griffin Hale

    The editable asset is the model, and the pixels are drawn from it. Editing a part shared by several poses redraws every pose that uses it. A fork copies a model so you can try a change while the original stays exactly as it was. Every position is stored as an exact fraction, which keeps a model’s pixels the same on any computer.

    A blue and navy test robot drawn six times on a gray sheet, in three poses (arms down, arms raised, arms crossed) and two views (front and three-quarter). Its left forearm has a notch and a yellow stripe in every pose.
    One test model, three poses and two views. The forearm, its notch and its stripe are defined once and appear in every drawing. Shown at 8× with no smoothing.
  8. #8 Griffin Hale

    AI is optional. An agent works through the same commands as the editor’s buttons. Everything it does arrives as a proposal. You review a proposal change by change and adopt what you want. A generated picture stays a reference until an agent breaks it into parts and a person adopts the result.

  9. #9 Griffin Hale

    On October 16, 2026, an image model drew a kitchen worktable for Marjorie’s Manor, a game in development. Pixelata fitted it to a 192 × 160 pixel grid in a fixed kitchen palette. It found the table’s regions and turned them into parts and boxes. Pixels the boxes missed became single painted details. The result was 101 proposed editor steps. Their drawing matched the target on all but 269 of its 30,720 pixels.

    An AI-generated pixel-art wooden worktable in a 2:1 diagonal view on a black background, with a drawer and brass knob, a stretcher between the legs and a warm glow around its edges.
    AI-generated input image, made with an image model on October 16, 2026. The glow falls below the cut-off and is dropped when the image is fitted to the grid.
  10. #10 Griffin Hale

    All 101 steps were adopted in the app. The table opens in the editor as named parts such as top, wood, stretcher and shadow. Each part can be selected and moved. The floor tile from the same run took 29 steps and matched its target on every pixel.

    Pixelata's Model mode with the wooden worktable on the canvas. The left pane lists slots end-grain, remainder1, shadow, stretcher, terracotta, top and wood, above Box fields for minimum and maximum x, y and z.
    The adopted worktable in Model mode. Each slot is a named part that can be selected and moved.
  11. #11 Griffin Hale

    The adopted floor, wall and worktable, plus a test character with an eight-direction walk, were exported and loaded unchanged into a test scene in the game’s Godot project. Twenty-five floor tiles joined with no gaps. The character drew correctly both behind and in front of the table. Repeated exports were identical to the byte.

    A Godot test scene: a checkered terracotta floor of diamond tiles, a row of five green wall panels, the wooden worktable, and a small blocky character standing in front of it. Overlay text reads PIXELATA / MANOR, pinned native export proof, 128 × 64 TileMapLayer, facing 45°, in front of worktable.
    Exported floor, wall and worktable in a Marjorie's Manor test scene. The character is geometric test art, not final art.
  12. #12 Griffin Hale

    The app is a Rust program in a Tauri desktop window, with a React interface. Its code is split into four parts: model drawing, planning, the shared commands, and storage with import, export and optional AI. Planning builds and runs without the drawing code or any AI code. The buttons, the command line and AI agents all call the same commands.

  13. #13 Griffin Hale

    I set the speed target in September 2026: an edit shows on screen within 100 ms, or 300 ms when a shared part redraws three poses. The first Linux build took about two seconds per edit. Timing showed the window, the Rust host and the display together used under 10 ms. Nearly all the rest went to the exact fraction math.

  14. #14 Griffin Hale

    The fix does the common cases with ordinary whole numbers and falls back to full fractions whenever a value would not fit. It also skips the detailed checks for a part when a pixel cannot touch any of its boxes. Single-pose edits dropped to a 78 ms median and shared-part edits to 177 ms. Every saved drawing job, plus randomly altered ones, drew identical pixels before and after. I then adopted the Rust core for internal use.

  15. #15 Griffin Hale

    Today the Linux build covers planning boards, references and the asset list, modeling, command-line export, proposals, and history with undo, branches and forks. Coming next: click-and-drag editing on the canvas, an export screen, side-by-side comparison of versions, chat for drafting plans, and installers for Windows, macOS and Linux.

    Model mode with the worktable on the canvas and a Branch pointers table beside it. The branches kitchen-worktable and kitchen-worktable-study list the same content address, a long sha256 string, under a Fork selected version button.
    A fresh fork of the worktable. Both branches point at the same saved version until one of them is edited.
  16. #16 Griffin Hale

    Started in Python as a tool that checks a game's sprites for grid, transparency and palette problems.

  17. #17 Griffin Hale

    Four workshop sprites for Multiplicity loaded straight into Godot; the tool was nearly submitted to Build Week.

  18. #18 Griffin Hale

    Rebuilt versioning on ideas from ageomaps: every model version is saved by its fingerprint and can branch. The same ideas were tried in a CAD program, a DAW, a robotics mission planner and a BIM tool.

  19. #19 Griffin Hale

    The first Linux build: a test robot you can pose and edit beside a reference board.

  20. #20 Griffin Hale

    Moved from Python to Rust, keeping the Python app as the answer key for the new code.

  21. #21 Griffin Hale

    An AI agent turned generated kitchen art into editable models that loaded unchanged into a Marjorie's Manor test scene.

  22. #22 Griffin Hale

    Undo, branches and forks in the editor, so poses and animations can point at exact versions.