GodotMaker v1.0.0¶
GodotMaker 1.0 establishes the first stable contract for turning a game design into a tested Godot project through coding-agent Skills. This release centers the pipeline on first-class 2D Asset Skills, deterministic Godot-native resources, and evidence-backed handoff between Asset, Build, Verify, Evaluate, and FixGap stages.
Existing
0.xworkspaces cannot be upgraded incrementally. Back up the project, then runpython tools/publish.py --agent <current-agent> --force <target>to cleanly re-initialize the framework forv1.0.0.<current-agent>must match the workspace's existingclaude-code,codex,opencode, orpiselection. This skips old migrations and re-baselines the migration tracker after re-deploy. It does not convert project documents such asGDD.md,PLAN.md, orASSETS.md; review or regenerate incompatible documents before continuing the pipeline.
Added¶
-
Added Pi as a supported coding-agent runtime alongside Claude Code, Codex, and OpenCode (#171).
-
Added whole-sheet 8-connected-component recovery and fixed-grid warning fallback for animated asset sheets (#169).
-
Added
tools/asset_family_registry.pyso every public Asset Skill request resolves to one authoritative output contract. -
/gm-assetcan now plan, dispatch, and register thetilesetproduction unit, so a validatedTileSetreaches a worker as a tile library instead of stopping at the Skill. -
Added deterministic marching-squares-15 and blob-47 TileSet profile templates with fixed atlas guides, strict image validation, and native resource compilation.
-
Added fail-closed standalone L0-L4 execution for the remaining first-class Asset Skills, with published runners and native Godot resource verification.
-
Added a standalone TileSet Asset Skill with an explicit atlas and recipe contract, shared compiler and validation reuse, and an orthogonal-square fixture.
- Added standalone ui-kit and card-kit Asset Skills with closed request contracts and executable L0-L4 validation for Theme, StyleBoxTexture, and AtlasTexture resources.
- Added a recipe-only native TileSet atlas compiler with declared tile semantics and L4 source, tile, alternative, layer, and tile-size verification.
- Added standalone atlas-backed compact-prop-pack and scene-prop-set Skills with deterministic independent AtlasTexture outputs for each declared prop.
- Added a deterministic SpriteFrames compiler that aggregates explicitly timed normalized action PNGs, rejects missing required actions, and serializes independent frame texture bindings for character bundles and animated FX.
- Added standalone character-bundle and fx-bundle skills with fail-closed family validation for explicit animation timing, loop, frame order, and native Godot runtime-output contracts.
- Added fixed 15-cell and 47-cell TileSet profiles with typed requests, deterministic material composition, and optional terrain metadata hand-off.
- Added a deterministic StyleBoxTexture compiler for reusable UI borders, with explicit texture regions, nine-slice borders, expand margins, and stretch axes verified through headless Godot.
- Published first-class Asset Skills for Claude Code, Codex, and OpenCode together with their project-local shared compiler, validator, and schema runtime under
.godotmaker/asset-runtime/. - Added
tools/asset_atlas_assemble.pyfor reproducible fixed-slot physical PNG atlases and region metadata; it rejects implicit packing, trimming, heuristic discovery, invalid bounds, overlap, size mismatches, and missing source PNGs. - Direct generated-output path contract: deterministic
assets/generated/<asset_type>/<asset_id>/paths and a reusableassert_within_output_dirwrite guard. - Added a standalone asset-skill invocation and result contract under
skills/assets/_shared/with declarative JSON schemas, valid samples, a dependency-free checker, and fail-closed tests (#98). - Added standalone background-map, platform-strip, and screen-reference Asset Skills with typed runtime and reference-only result contracts.
- Added a shared Godot artifact compiler interface and registry under
skills/assets/_shared/that routes on the frozen source-layout to artifact-type compatibility set, keeps compiler receipts out of the worker-facing artifact, requires each compiler to actually rebuild an artifact distinct from its source image, servesTexture2Dthrough Godot's default import, and fails closed on unregistered or mismatched combinations (#107). - Added shared direct-output validation under
skills/assets/_shared/for processed sources, compiled artifacts, a real headless Godot import andResourceLoader.loadtype match, and type-specific structure checks (#108). - Added a deterministic
theme_recipecompiler with a closed JSON schema for Theme colors, font sizes, constants, fonts, icons, StyleBoxes, and type variations; invalid class types, properties, resources, and StyleBox references fail closed before a loadable Theme is written. - FixGap can hand evaluator-owned E2E evidence back to Evaluate without claiming a normal repair completion.
- Added a Phantom Camera supporting skill for optional Godot camera addon guidance.
Changed¶
-
MAJOR upgrades now fail closed unless
--forceis present, and an authorized clean re-initialization resets incompatible current-pipeline gates and reports while preserving game content plus evaluation, gap, and asset-provenance history. -
Generated assets now use
ASSETS.mdas the single runtime catalog: each logical asset row records its final Godot type and loadable path directly. Multi-output asset production registers all declared outputs atomically, and workers receive a minimal snapshot derived from those rows instead of a separate stable-entry or manifest layer. -
Every public asset route now proves its whole direct-registration chain in ordinary CI, so an advertised route cannot enter main without a validated
ASSETS.mdoutput. -
A Skill that accepts more than one request shape now declares one registration chain per shape, so a variant whose adapter is missing can no longer hide behind a sibling variant that works.
-
Both
platform-stripstrip kinds now have complete registration contracts that turn validated segment deliveries into worker-consumableASSETS.mdrows. -
A ui-kit or card-kit now registers every declared runtime output atomically, so its
Theme, everyStyleBoxTexture, and everyAtlasTextureare separately resolvable. -
Multi-output ui-kit, card-kit, and compact-prop-pack deliveries now declare every worker-consumable logical output in their request and register all matching
ASSETS.mdrows atomically. -
fx-bundle now registers its validated static
Texture2Dor animatedSpriteFramesoutput directly from the request-selected result variant. -
Workers now own TileMap layout, layers, cell and gameplay object placement, triggers, camera limits, and scene structure, binding a ready
TileSetas a tile library and repairing what running the map actually shows. -
Reworked
ui-kitaround a flat-first Godot Theme: one fixed eight-patch surface atlas expands into reusable button, panel, popup, tooltip, and tab StyleBoxTextures, while native StyleBoxFlat/StyleBoxEmpty resources own form, progress, slider, scrollbar, focus, and separator treatment. A second sheet provides 24 unique icons mapped to 31 stable AtlasTexture runtime names. - Normalized UI kit nine-slice patches and Theme-bound semantic icons to compact runtime sizes while retaining high-resolution reusable action icons.
- Added deterministic StyleBoxTexture modulation and L4 verification so shared button-state source patches can produce base, Primary, Secondary, and Danger Theme resources without duplicate provider art.
- Added deterministic fixed-slot
AtlasTexturecompilation from atlas metadata, with exact region and zero-margin validation through headless Godot. -
Fixed fixed-slot
AtlasTexturecompilation so multiple stable runtime output names can reuse one declared atlas region, and standalone UI validation now compiles icon resources before the Theme that binds them. -
/gm-buildand/gm-fixgapnow hand workersASSETS.mdruntime snapshots, and workers bind the compiled Godot resource rather than rebuilding it from the source layout. - A worker may now edit or replace the bound runtime artifact and the project-local scene or script that binds it to fix a concrete integration failure, as a narrow file-ownership exception that outranks the generic "no files outside Deliverables" restriction.
/gm-assetregisters each validated request/result output set directly inASSETS.md.- Generated runtime handoff for gm-build, gm-fixgap, and worker dispatch reads the matching
ASSETS.mdruntime rows. - An
ASSETS.mdruntime row reachesgeneratedonly after direct validation and registration, while a finalized screen reference completes atsource_readywithout becoming a worker runtime artifact. - Asset families without a native compiler and L0-L4 validation path stop at
source_ready, while a fully validated scene-prop set registers its generated AtlasTexture runtime resources asgenerated. - Direct registration validates final declared runtime output types and loadability before a row can reach a worker.
Fixed¶
-
Screen references now claim successful Codex images before final validation and use proportional cover cropping to avoid transparent canvas edges (#180) — @RandallLiuXin.
-
Accepting a user-provided asset now fills the row's
Runtime Typeandres://Runtime Pathin the same edit, so aprovidedrow is always resolvable into a worker runtime snapshot instead of failing with incomplete runtime columns. -
Ensure
/gm-assetrecords an asset-stage completion event when its resume check finds no current-tag work. -
A validated background-map registers its
single -> Texture2Dresult directly inASSETS.md; registration binds to the image bytes its validation run recorded, so regenerating onto the same output path fails closed. -
An asset production unit now ends the asset stage with one consistent status, so a retried report no longer reads as a failure and a partial result keeps its blockers instead of being recorded as unknown.
-
Replaced legacy magenta edge cleanup with PyMatting using a fixed validated trimap.
-
Compact prop packs now generate one provider-authored source sheet, normalize each curated prop into its declared atlas slot, and publish independently addressable AtlasTexture resources with repaired L0-L4 validation.
-
FX bundle production now separates static autoslice and animated grid paths, preserves provider reference claims, and promotes runtime entries only after L0-L4 validation.
-
Card-kit Asset Skills now compile only the Theme, scalable frames, and fixed AtlasTexture regions requested by each asset request, preserving reusable Godot resources without requiring a fixed card layout.
-
Character-bundle registers its validated SpriteFrames output directly in the matching
ASSETS.mdrow; canonical and action sources remain reference provenance rather than extra runtime assets. - Character-bundle validation binds the resolved request, action reports, frames, and compiled artifact so a stale result cannot register a later regeneration that reused the same output paths.
- Character-bundle assets now resolve animation cadence internally, preserve optional canonical references and 256px runtime frames, and regenerate retryable source-image failures before stopping.
- Character-bundle assembly now binds resolved intent, canvas, frame order, timing, loop state, and scale references through SpriteFrames compilation and GIF previews.
- Fixed blob-47 TileSet masks, edge signatures, and isolated-terrain semantics to match Godot's eight peering points.
- Fixed TileSet profile validation to diagnose terrain-corner seam mismatches against the deterministic matching template before compilation.
-
Fixed TileSet seam repairs to deterministically compose profile transitions from provider-authored terrain materials instead of accepting flat color patches.
-
Fixed deterministic TileSet profiles to compile from published standalone runtimes and emit fixed atlas assembly declarations without agent-authored layout scripts.
-
Pre-push checks now isolate temporary Git repositories from the invoking worktree's hook environment.
- Platform-strip assets now retain controlled provider-source claims and validator-produced readiness evidence.
- Platform-strip now requires a fixed cap/repeat/cap grid, slices source cells before per-cell finalization, and validates stable AtlasTexture regions against the real source sheet.
- Background-map now preserves optional reference-image provenance, uses the declared provider without fallback, and deterministically finalizes non-pixel-art Texture2D backgrounds.
- Theme L4 validation now rejects recipe paths outside the declaring asset's stable output directory.
- Published asset validation runners now work after installing GodotMaker into Claude Code, Codex, or OpenCode projects.
- Restored real Godot validation for Theme and TileSet assets, including safe Theme resource paths and imported TileSet atlases.
- Reference-only rows are
source_ready; they never enter a runtime worker snapshot. - Compiler staging now preserves Godot resource extensions.
- Compiler receipts are now issued only after atomic artifact commits.
- Direct registration requires successful compiler and validation evidence for
each runtime output before any
ASSETS.mdrow changes. - Theme recipes now accept only fully decoded raster textures and FreeType-loadable TTF/OTF fonts, rejecting truncated or unsupported resource content before a Theme is written.
- Failed native Godot artifact compilation now retains the previous stable artifact and atomically commits a validated replacement only after success.
- Restored
asset_sheet_process.py --snap-mode autosliceto independent Godot-style region extraction without grid bucketing or cross-region unions; fixed-grid extraction continues to require--grid. - Point generated-asset runtime handoff (gm-build, gm-fixgap, worker dispatch,
worker agent) at
ASSETS.mdand its deterministic--snapshotoutput (#97).
Removed¶
- Removed the last two
gm-assetproduction-unit documents, so every asset family now has exactly one authoritative execution contract in its first-class Asset Skill. - Retired the old
runtime_artifactgenerated-asset manifest update, check, and entry-builder tools with no migration, dual-write, or compatibility read.
Known limitations¶
- MAJOR clean re-initialization does not migrate project documents from
0.x; incompatible GDD, plan, and asset contracts must be reviewed or regenerated. - Real-provider image quality and private evaluator evidence are not implied by the source-tree L0-L4 validation suite; provider availability, credentials, and model behavior remain external dependencies.
- OpenCode image generation remains subject to the capabilities exposed by the selected OpenCode provider and runtime.