Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
B3 - Porting Prior Work — Spritesheets & CKC
Updated 2 weeks agoPorting Prior Work — Spritesheets & CKC
Sprites · for creators with existing work. Made skins with Custom Knight Creator, or have an older sheet-based skin lying around? This page is how that work drops into Stitchwork unchanged. It is a porting page — for new art, the workflows in B0 are better in every way, and we'll be honest about why.
You'll be able to: load a finished full-sheet skin through the
Spritesheets/ tier, know the one rule that keeps it working, and know
where the sheet path's limits are — so you can decide what to port as-is
and what to rebuild.
Custom Knight Creator, and why we like it
Custom Knight Creator (CKC) is a standalone skinning tool — first built for the original Hollow Knight, since ported to work with Silksong assets. It runs outside the game and covers much of the same ground Stitchwork does in-game. We welcome CKC users and CKC work; Stitchwork is not a replacement for it, and packs made from CKC output are first-class citizens here.
CKC's real insight is one we share: don't draw directly on atlas sheets. CKC shows you the specific sprites of each animation, previews the animation, and lets you check the frames flow smoothly together. Drawing straight onto a sheet — scattered crops, no way to line frames up against each other — is where shaky skins come from, and it marks many older skins that predate these tools. Stitchwork's in-game answer to the same problem is the Animation Canvas; CKC's is its preview loop. Either way, the sheet is an output format, not a drawing surface.
So, to be plain about what this page is not: it is not an invitation to dump a sheet, paint on it, and ship it. If you're authoring new art, go back to B0. This page exists because finished sheet-based work deserves a door.
The one rule: match the sheet exactly
A whole-sheet replacement is stamped in place over the original atlas — for tk2d it's blitted onto the atlas, for T2D it's loaded straight into the texture. The game's sprite definitions still point at the same coordinates they always did. So a ported sheet must keep:
- The same dimensions — same width and height, to the pixel.
- The same layout — every sprite in its original rectangle. Nothing moved, resized, or repacked.
Break either and sprites read from the wrong pixels — art smeared across frames, pieces of one sprite bleeding into another. CKC output satisfies this by construction, because CKC works from the real sheets.
Whole-sheet replacements also cannot grow the way individual sprites can. A ported sheet is frozen at vanilla geometry; if one sprite needs more room, that one becomes an individual file with an anchor (Bigger Art: Anchors) layered on top.
tk2d sheets — the CKC door
For a tk2d collection (most animated characters — Hornet included,
under Knight), a ported sheet goes to:
Spritesheets/{CollectionName}/{MaterialName}.png
For example, one of the Knight collection's atlas pages:
Spritesheets/Knight/atlas2.png
This tier exists to support exactly this porting path. Two honest notes that follow from that:
- There is no tk2d atlas dump — by design. Stitchwork won't hand you a tk2d sheet as an editing template, because sheet-editing isn't a workflow we want to point anyone toward. Your sheet comes from CKC or from prior work; Stitchwork's job is to load it faithfully.
- Don't retouch the ported sheet to iterate. When a ported skin needs fixes or new art, do the new work with the in-game loop (B1) or the Animation Canvas — individual files layer on top of your sheet (see below), so the port stays untouched.
T2D sheets — supported, but fragile across game updates
The T2D equivalent path also loads:
Spritesheets/T2D/{AtlasName}.png
({AtlasName} is the clean name the T2D browser shows — Hornet,
not the raw sactx-…-hash string.)
We no longer recommend authoring or maintaining T2D art at the sheet
level at all, and the reason is mechanical: T2D atlases are packed
by Unity, and a game update can rearrange the sprites on the sheet
and change the texture's hash — part of which shows up in the name
itself. When that happens, a full-sheet file stops matching silently:
wrong art in wrong slots, or a sheet that no longer applies. Per-sprite
files (Sprites/T2D/…, B4) key on the individual
sprite and survive repacks; sheets don't.
If you have existing T2D sheet work: port it, enjoy it, and treat the next game update as the moment to rebuild it as per-sprite files. The Dump Atlas button in the T2D browser remains genuinely useful — as a reference map of what lives on a sheet and how much room each slot has — just not as a template to ship.
Sheets and individual sprites compose
You don't have to choose globally. Within a material, a whole-sheet
replacement is the base layer, and individual Sprites/ files draw
on top of it. This is what makes porting practical: the CKC sheet
sets everything, and every fix or improvement you make afterwards is an
individual file stacked over it. The port never has to be re-exported.
Tips
- Port, don't reconstruct. If you have the CKC export, use it as-is. Rebuilding a sheet by hand from frame dumps is the shaky-skin trap with extra steps.
- Keep your layered sources (
.psd/.kra) in the pack folder if you like — Stitchwork ignores non-matching files, so editable sources ride along harmlessly. - One sheet = every sprite on it. A sheet swap touches the entire atlas, including frames you didn't mean to change. Individual files on top are how you take back control of specific sprites.
You can now bring finished CKC and sheet-based work into Stitchwork and layer new work on top of it without touching the port. For new art, back to the map: Choosing a Workflow.
Pages
- A-0 Wikis
- A1 - Getting Started
- A2 - Installing Packs
- A3 - The Pack Manager
- A4 - How Stitchwork Works
- A5 - When Something Looks Wrong
- AEx1 - Conditional Activation
- B0 - Choosing a Workflow
- B1 - Starting a Skin Pack
- B2 - Finding Any Sprite
- B3 - Porting Prior Work — Spritesheets & CKC
- B4 - Texture2D (T2D) Sprites
- B5 - Bigger Art — Anchors
- B6 - Animation Canvas Workflow
- B7 - Sprite Paths Reference
- B8 - The Animation Controller
- BEx1 - Reused frames — one sprite, many animations
- BEx2 - Instance-specific paths — same name, different art
- BEx3 - Appliqué: Per-Clip Art
- C1 - Text & Dialogue
- D1 - Audio
- E1 - Video
- F1 - Priority & Conflicts
- F2 - Distributing Your Pack
- G1 - Dumping & Full Dump
- G2 - Companion Mods
- G3 - Hotkeys
- G4 - Pack Folder Structure
- G5 - Testing With Savestates (DebugMod)
- G6 - Troubleshooting