#How do I go around making custom portraits?

46 messages · Page 1 of 1 (latest)

nocturne imp
#

I want to know how to make custom portraits for my Zubo skin mod (SMH+ compatible btw), but idk how to go around doing it. I haven't remotely started making the sprites, but I want to ask how to do the coding side of implementing the dialogue portraits. I'll also just make test sprites to make sure that they work.

fluid cairn
#

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.

nocturne imp
#

Rightio! I'll check if this works once I edit it to how it should be

nocturne imp
#

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

nocturne imp
#

Okay nvm, thought I had figured it out

#

Tried changing the path for the other sprites in the config, but didn't work

fluid cairn
#

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.

nocturne imp
#

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

fluid cairn
#

Just use the folder directly so you can see changes live in the game without needing to zip your mod.

nocturne imp
#

Oh you can do that?

fluid cairn
#

Yea. Zipping mods is basically only for sharing them with other people. All development should be done with folders.

nocturne imp
#

So... Do I just copy the "Zubo Skin Mod" folder to the mods folder of Celeste?

fluid cairn
#

Preferably move it so you don't have duplicates on your computer.

nocturne imp
#

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

fluid cairn
#

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!

nocturne imp
#

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

nocturne imp
#

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?

fluid cairn
#

You need to put everything inside a Sprites tag. Like this.

fluid cairn
#

This fellow highlighted here.

nocturne imp
#

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