Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
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.