It started with hands, not code. The first asset packs were made entirely by hand: prompting in Stable Diffusion, editing and map generation in Photoshop, assembly and verification in Unity Hub, manual submission to the stores. Those assets exist and went into distribution.
Production Runtime & Architecture: Fully automated PBR texture generation and validation pipeline designed for Google Cloud Platform (Vertex AI custom worker nodes, Compute Engine GPU clusters, and high-throughput Cloud Storage CAS). Certified for automated asset compilation and procedural 3D material synthesis.
Asset Factory came out of the pain of that process. It is not a generator dreamed up at a whiteboard -- it automates a procedure clicked through by hand hundreds of times, by the same person who then wrote the code for it. Every stage of the pipeline maps to a step that previously had to be done manually.
What the automation does today: synthesises textures, computes PBR maps, checks tiling, packages into .unitypackage. What it does not do: it does not push packs to the stores. Publishing remains a manual step and is described as such in the publish queue in the repository. The direction of work is shortening the path from idea to finished pack -- not replacing the decision to publish.
Four mechanisms everything else stands on. Not a demo β working code, running today against a real task queue.
π Distributed task leasing (SQLite WAL)
Tasks are claimed atomically (UPDATE β¦ RETURNING in a single transaction) and stamped with a time-boxed lease β multiple workers, local and cloud, can safely pull from the same queue without race conditions or double-executing the same task.
π Self-correction loop (Reflexion)
Code that fails its own test gets one disciplined self-correction pass from an independent reasoning model β not an unbounded loop. If the fix doesn't fully resolve the problem, the system rolls back to the last safe version instead of leaving something worse in place.
π§ββοΈ Human-in-the-loop gates
Changes to production files never land silently. Every result passes through an independent model review and/or an explicit approval gate before it's considered ready to ship β patches, not silent overwrites.
π Lightweight tracing
Every model call leaves a JSONL trace (time, model, tokens, cost) in a format compatible with a subset of the OpenTelemetry convention β cost and performance observability without a heavy monitoring stack.