#How do I go around making custom portraits?
46 messages · Page 1 of 1 (latest)
You don't need to code anything for custom portraits if you're using smh+. You just set up a couple things that tell smh+ where to find your portraits when you select your skin.
Go to Graphics/YourName/YourSkin/ and add a Portraits.xml file there. Then copy paste the vanilla madeline portrait node there from the vanilla Portraits.xml which can be found in Celeste/Content/Graphics/ folder. Do not copy the entire file, just everything inside and including
<portrait_madeline path="madeline/" sfx="madeline" textbox="madeline">
...
</portrait_madeline>
```Then change the path attribute in it to point to your custom textures instead of the vanilla ones. The path is relative to `Graphics/Atlases/Portraits/` so change it to something like `path="YourName/YourSkin/"` and then put the images in `Graphics/Atlases/Portraits/YourName/YourSkin/`
Remember to restart the game when adding new filed. And not a bad idea to do that when changing xml files either.
Rightio! I'll check if this works once I edit it to how it should be
Hmm, for some reason they don't seem to be changed at all, idk what I did wrong but they are supposed to just be like these in the folder here.
I'll have the xml there incase I did do something wrong that I'm just being dumb for not noticing
Wait I think I did do something wrong when I'm looking at this hold on
Okay nvm, thought I had figured it out
Tried changing the path for the other sprites in the config, but didn't work
I'm seeing an extra folder here. Remove the zubo folder and check that your mod os found by skinmodhelper and select the skin in its settings.
If you're talking about the "Zubo" folder between "Celeste" and "Zubo Skin Mod", that's just the folder that contains all the .ase files for my mod
The actual mod data/files is in the Zubo Skin Mod folder and just gets zipped separately
Just use the folder directly so you can see changes live in the game without needing to zip your mod.
Oh you can do that?
Yea. Zipping mods is basically only for sharing them with other people. All development should be done with folders.
So... Do I just copy the "Zubo Skin Mod" folder to the mods folder of Celeste?
Preferably move it so you don't have duplicates on your computer.
Meant to say move than copy, but yeah
I'll just run the game with that folder not being zipped anymore, problably won't change anything, but it'll make it easier to test changes
Yeah no changes at all
Hmm
I honestly feel like there is something obvious that I'm missing here, because I feel incredibly dumb here lol
What does your xml file look like? You can also check your log file for any issues. You can do that quickly by typing openlog into the celeste debug console.
You can also reference other skinmods that have portraits!
I showed it here under the images
The .xml
Idk what's wrong, but I'll at least try to look at the log like you said
Oh okay wait it does tell me what's wrong here (I think)
(01/22/2026 20:48:56) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:48:56) [Everest] [Info] [debugrc] Started DebugRC thread, available via http://localhost:32270/ (01/22/2026 20:49:07) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:14) [Everest] [Info] [LevelLoader] Loading Celeste/2-OldSite [Old Site] (01/22/2026 20:49:14) [Everest] [Warn] [Atlas] Requested atlas subtexture that falls out of range: Graphics/Atlases/Gameplay/ZuboWorkshop/zubo/startStarFly 4 (01/22/2026 20:49:14) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:22) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:24) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:26) [Everest] [Info] [LevelLoader] Loading Celeste/2-OldSite [Old Site] (01/22/2026 20:49:26) [Everest] [Warn] [Atlas] Requested atlas subtexture that falls out of range: Graphics/Atlases/Gameplay/ZuboWorkshop/zubo/startStarFly 4 (01/22/2026 20:49:26) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:29) [Everest] [Info] [LevelLoader] Loading Celeste/2-OldSite [Old Site] (01/22/2026 20:49:29) [Everest] [Warn] [Atlas] Requested atlas subtexture that falls out of range: Graphics/Atlases/Gameplay/ZuboWorkshop/zubo/startStarFly 4 (01/22/2026 20:49:29) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:30) [Everest] [Info] [LevelLoader] Loading Celeste/2-OldSite [Old Site] (01/22/2026 20:49:30) [Everest] [Warn] [Atlas] Requested atlas subtexture that falls out of range: Graphics/Atlases/Gameplay/ZuboWorkshop/zubo/startStarFly 4 (01/22/2026 20:49:30) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:31) [Everest] [Info] [reload] Starting level reload... (01/22/2026 20:49:31) [Everest] [Info] [LevelLoader] Loading Celeste/2-OldSite [Old Site] (01/22/2026 20:49:31) [Everest] [Warn] [Atlas] Requested atlas subtexture that falls out of range: Graphics/Atlases/Gameplay/ZuboWorkshop/zubo/startStarFly 4 (01/22/2026 20:49:31) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0 (01/22/2026 20:49:35) [Everest] [Info] [LevelLoader] Loading Celeste/2-OldSite [Old Site] (01/22/2026 20:49:35) [Everest] [Warn] [Atlas] Requested atlas subtexture that falls out of range: Graphics/Atlases/Gameplay/ZuboWorkshop/zubo/startStarFly 4 (01/22/2026 20:49:35) [Everest] [Error] [SkinModHelper] The Portraits.xml of 'Zubo' build failed! Graphics/ZuboWorkshop/zubo/Portraits.xml: Can't find sprite ZuboWorkshop/zubonormal with index 0
Most of it seems to be it trying to got to "ZuboWorkshop/zubonormal" even though it's not set like that
Wait
Yeah Yeah I don't understand where it's even grabbing the folders
I'm just gonna look at another skin mod that supports SMH+ to see what I'm doing wrong
@fluid cairn I just noticed there's this error in the log
(01/22/2026 21:29:57) [Everest] [Warn] [Dialog] Dialog ID "ZuboWorkshop_zubo" has no translation in English.txt!
Could this be cause of it not working?
Sorry I completely missed that.
You need to put everything inside a Sprites tag. Like this.
And this looks like you have accidentally deleted the forward slash at the end of the path attribute.
This fellow highlighted here.
Yeah I figured that out myself
But it was still not working
So I decided to just re-export the sprites again to see if it fixes it.
Okay I guess re-exporting them worked??????
I seriously don't fucking know wth was up with the sprites
But I guess I got them working now???
(╯°□°)╯︵ ┻━┻
Now I just need to get the other portraits working too, since I want to do all of madeline's portraits