Repository navigation
feat: customize a Yard with World characters and companions - #381
Merged
Merged
Conversation
Customize this Yard replaces the world, any crew's character, or the companions of one Yard with Agent Guild: World pieces from the Steam Workshop or a local folder. The picker opens in World's Workshop folder, found from Steam's library records. Pieces are checked before the loader runs against the exact glTF shape World exports, including glTF's accessor types, plain trees, unit rotations, supported texture channels, playable in-place clips and bounded data, then drawn with the Yard's own loader in a bounded worker that fully decodes every PNG, JPEG and WebP texture. Pieces are installed atomically per slot, and obsolete downloads are cancelled. A piece that cannot be drawn falls back to the original, and each row says whether its piece is original, being checked, loading, customized or failed to load. Guild dialogs now reserve room for their ornate frame, and the Customize dialog stacks its buttons on phones. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A piece may draw at most 16 mesh parts, counting each primitive once for every node that draws its mesh, so one mesh repeating its primitive can no longer add thousands of draw calls. Every shipped character, helper and Workshop piece draws one part. Each piece preload now has its own identity, dropped when the piece is released, so a load left over from before switching Yards away and back can no longer mark the returned piece as failed or customized. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A skinned mesh keeps the bounds of the pose it first had, so a character whose animation leaves that pose, as every shipped and Workshop character does, could not be clicked where it stood and could be culled while on screen. Picking now refreshes the bounds of the shown characters and helpers, and their animated meshes are no longer frustum culled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A piece whose format is newer than this release now appears in the character or companion chooser, unselectable, with "This piece needs a newer Agent Guild." instead of being hidden behind the empty-folder message. Such pieces are still refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Each Yard's crews and companions can now be replaced with pieces made for Agent Guild: World, such as Steam Workshop items, from a new Customize this Yard dialog. That dialog also holds the world replacement that used to live in the Yard bar.
yardextras limits. A refused piece leaves the slot as it was.<data>/yard-pieces/<skin>/<slot>/and are swapped in through side folders, so an interrupted change recovers on the next start. An installed piece that is damaged later shows its problem, and the Yard draws the original.GET/PUT/DELETE /yard-pieces,pieces=onGET /folders,yardPiecesinhello, and theyard-pieces.updatedevent. All of these are indocs/api.md.@jsquash/png,@jsquash/jpegand@jsquash/webp, bundled and pinned, used to decode textures while checking.Verified locally on fad539d:
npm test, every browser script inci.yml, WebKit dialogs,tests/browser/yard.mjs, the release plan, a live walkthrough of 7 real Workshop items, and the packed tarball's install, refusal, damage and restore paths.🤖 Generated with Claude Code