Skip to content

Add guarded Creature authoring, skinned imports and Unicode definition editing - #2

Draft
BuffJesus wants to merge 75 commits into
mainfrom
feat/definition-clone-gui-20261010
Draft

BuffJesus wants to merge 75 commits into
mainfrom
feat/definition-clone-gui-20261010

Conversation

@BuffJesus

@BuffJesus BuffJesus commented Oct 10, 2026 •

Copy link
Copy Markdown
Owner

Adds guarded definition and Creature authoring in Assets: donor cloning, private root/body/appearance graphs, body-model references, Unicode text with system-font fallback, and confirmed GroupDef choices.

Private Creature drafts accept a skinned glTF model for one body alternative and an existing texture or a new DXT1/DXT3/ARGB8888 image. Review captures consumed model/sidecar bytes, source banks, destination identity and pack manifest before background publication. Changed inputs invalidate review; stale contents and physical aliases refuse. Prior records/assets survive, and Restore recovers originals or removes created outputs. Other alternatives and animations remain shared.

Pack imports refresh Models, render textures through a separate preview context, and show material identity from that source while retaining the loaded world's assets. Placement and ownership use the compiled class. Village membership uses the validated runtime Components list, preserving the donor's profile after renaming. Malformed metadata refuses before document mutation; existing unknown TNG blocks remain byte-exact.

Validation:

  • Both affected runtime-profile unit executables pass, including unknown-block preservation and complete undo.
  • C++ Context agrees with the independent reader on all 517 retail creature profiles.
  • Latest immutable checkpoint passes 119 file identities, 145 documentation links and four focused extracted workflows: retail eight-map smoke, GUI smoke, 16 profile placements and eight malformed-profile refusals at both sizes.
  • Placement/refusal checks use the shipped schema from an unrelated cwd. 146 workflows were not run; two unrelated missing-corpus workflows were explicitly skipped.
  • The unchanged 50-case import gate was not repeated for this checkpoint; its earlier GUI/CLI and native graph evidence is retained in the authoring handoff.

Core authoring now shares a checked three-group Creature appearance reader instead of fixed-size skips. It retains per-model/body/global texture maps and skeletal fields, validates table sizes and booleans, and classifies texture IDs in their own asset namespace. The previously refused populated global map is covered without changing scene assembly/rendering.

Source validation for this reader: four affected unit executables, all 330 native component layouts matched field-for-field to an independent reader (1,745 body slots, 75 skeletal rows), five regenerated tiny donor fixtures, all 50 import GUI cases and eight body-edit Save/stale cases at both sizes. Exact preservation, Restore and namespace collision checks pass. Native evidence includes 23 byte-matched function ranges and 1,408 original-x86 RNG comparisons. These source results are separate from the immutable ZIP below.

A pure core selector now follows the native shared-seed order for skeletal choices/amplitudes, body alternatives, head removal and ordered texture replacements. C++ matches 2,640 original-x86 corpus selections exactly; 56 additional native edge probes and both scoped unit executables pass. The oracle explicitly bridges container/string operations and unit-range CRT remainder. Dirty-map sorting remains unsupported, and the selector is not connected to scene rendering yet. Details: docs/HANDOFF_CREATURE_ASSEMBLY_2026-10-23.md.

Texture composition now folds selected model/body entries and then globals by original source ID, with the final type-3 replacement winning independently for each part. Identity overrides and cyclic destinations remain valid without chasing IDs. Static native lookup/compositor evidence covers diffuse and bump lookup paths; 37 function ranges match the original executable bytes. The affected unit passes. This helper remains separate from renderer/animation integration.

Visual ownership checks are now shared by cloning and a read-only resolver, preserving unique typed CDefs rows and original-parent checks. The affected target builds. An independent structural audit finds 502 accepted and 15 refused graphs across all 517 retail Creature roots; the scoped unit passes and C++ matches all 517 independent graph results exactly, with source banks unchanged. A fresh guarded lease released after both checks closed. The original observation audit remains intact; the new resolver verifier is separate.

A bounded read-only bone-config reader preserves source rows and separately prepares native targets by removing exact identity scales and sorting by unsigned bone CRC. Its scoped unit and independent readback of all 15 referenced resources pass: 254 source rows and 248 prepared rows, exact names/offsets/CRCs/float32 bits, unchanged file hashes. Malformed rows, nonfinite values and duplicate CRCs refuse. This supports the verified CRLF subset; positive selected-target combination now matches 3,048 original-x86 arithmetic cases bit-for-bit. Mesh-local mapping uses bone CRC with identity for missing keys; scoped units cover additive blending, float32 parameter order, collisions and refusals. Negative-target handling, skeleton transform application and rendering remain open.

A native pose-stage oracle passes 240 synthetic cases with only mesh count/bone/parent lookup bridges. Original quaternion, matrix, displacement, hierarchy and post-scaling routines execute directly. It pins parent-scaled child displacement, independent final scaling, matrix layouts and native quaternion conventions. Inverse-bind composition, C++ pose application and rendered Creature acceptance remain open.

Checkpoint: dist/development/20261023-creature-profiles/FableForge-0.18.1-dev-win64.zip, SHA256 485b985ee33202b0e9df792800817e06952a27023c82231b1579efa8905092d0, packaged from clean 37c1ed1. Older archives remain unchanged. Receipts: docs/HANDOFF_CREATURE_PROFILES_2026-10-23.md and build/creature-profiles-checkpoint-20261023.json.

Keep draft. Placement CI 39964147797 and membership CI 39971393188 passed. Membership CI exercised build, unit tests, WARP GUI smoke and CLI usage; packaging was skipped. Reader CI 39978691290 passed build, units, WARP GUI and CLI; package/upload were skipped. Selector CI 39982494520 passed build, units, WARP GUI and CLI; package/upload skipped. Combined core CI 39989492089 on de80f2f passed build, units, WARP GUI and CLI; package/upload skipped. Scoped local graph and bone-config checks pass. Full-suite, clean-machine, scene integration, whole-creature presentation, animation and gameplay acceptance remain open. RC2/stable releases are unchanged.

Paused at the user's request. Checkpoint 7b69640 adds a C++ Creature pose API and decoded bind adapter; the scoped target builds but its unit/oracle execution and retail bind diagnostics have NOT run. The native oracle now also confirms inverse-bind order (240 stage cases, 120 transposed skin-matrix cases). Resume instructions and coordination limits: docs/HANDOFF_CREATURE_POSE_2026-10-23.md. Keep draft; complete Creature rendering remains open.

@BuffJesus BuffJesus changed the title Add guarded GUI definition donor cloning Add guarded GUI definition cloning and partial-output previews Oct 10, 2026
@BuffJesus BuffJesus changed the title Add guarded GUI definition cloning and partial-output previews Add guarded definition cloning, Unicode drafts and partial-folder previews Oct 10, 2026
@BuffJesus BuffJesus changed the title Add guarded definition cloning, Unicode drafts and partial-folder previews Add guarded definition cloning, Unicode drafts and system glyph fallback Oct 10, 2026
@BuffJesus BuffJesus changed the title Add guarded definition cloning, Unicode drafts and system glyph fallback Add guarded definition cloning, Unicode, glyph fallback and GroupDef choices Oct 10, 2026
@BuffJesus BuffJesus changed the title Add guarded definition cloning, Unicode, glyph fallback and GroupDef choices Add guarded definition and Creature cloning, Unicode and GroupDef choices Oct 10, 2026
@BuffJesus BuffJesus changed the title Add guarded definition and Creature cloning, Unicode and GroupDef choices Add guarded Creature authoring, skinned imports and Unicode definition editing Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant