-
Notifications
You must be signed in to change notification settings - Fork 8
Reskinning Textures Overview
This page gives an overview of how to reskin any texture in the game that isn't generated by code (most of them).
These reskins will only apply to your map. If you want to reskin a texture globally (in vanilla and all other maps) see Texture Packs. (TODO add link)
Every (non-coded) texture in the game can be found in the Celeste graphics dump 🔗
- Decals
- Tilesets
- Stylegrounds
- Entities
- Reskinning entities through Sprites.xml
- Other entities
- Texture Packs
Decals do not need to be retextured, as you can just add your own. Instructions for this are found on the decal page 🔗 (TODO make page)
Tilesets do not need to retextured, as you can just add your own. Instructions for this are found on the tilesets page
Tilesets do not need to retextured, as you can just add your own. Instructions for this are found on the stylegrounds page (TODO put link here)
When it comes to retexturing there are generally two types of entities. Either you can retexture it in Ahorn by choosing the folder its sprites are, or you need to add a Sprites.xml file to your map which specifies where the directory is.
In order to make custom spikes textures:
- head to
Graphics/Atlases/Gameplay/danger/spikes
in the graphics dump and copy the spike textures you want to base yourself on. - paste those in
Mods/yourmod/Graphics/Atlases/Gameplay/danger/spikes/yourmod/campaignname
and rename them. For example,custom_down00.png
,custom_down01.png
, etc. Don't touch anything after the _ - in Ahorn, right click on your spikes, then in the "Type" field, use
yourmod/campaignname/custom
In order to customize the switch gate block:
- head to
Graphics/Atlases/Gameplay/objects/switchgate
in the graphics dump and copy one of block.png, mirror.png, stars.png or temple.png. - paste it in
Mods/yourmod/Graphics/Atlases/Gameplay/objects/switchgate/yourmod/campaignname/myblock.png
. - in Ahorn, right click on your switch gate, then in the "Sprite" field, use
yourmod/campaignname/myblock
In order to customize jumpthru textures:
- head to
Graphics/Atlases/Gameplay/objects/jumpthru
in the graphics dump and copy one of them. - paste it in
Mods/yourmod/Graphics/Atlases/Gameplay/objects/jumpthru/yourmod/campaignname/myjumpthru.png
. - in Ahorn, right click on your jump through, then in the "Texture" field, use
yourmod/campaignname/myjumpthru
. Note that you can also change the footstep sounds with the "Surface Index" parameter.
TODO: Add picture of planets effect; it's a bit obscure
You can have a Planets styleground with custom planets:
- if you want to use the vanilla planets as a reference, have a look at
Graphics/Atlases/Gameplay/bgs/10/smallXX.png
andbigXX.png
in the graphics dump. - drop your custom planets in
Mods/yourmod/Graphics/Atlases/Gameplay/bgs/10/yourmod/campaignname/customplanetXX.png
, XX being a number starting from 00. You can have as many as you want, the planets displayed will be randomly picked from them. - in Ahorn, in the "Size" field for the planets effect, use
yourmod/campaignname/customplanet
.
Note: if you check the graphics dump, you can see that the Graphics/Atlases/Gameplay/bgs/10/Planets
folder has actual planets (instead of stars). You can use those by typing Planets/big
and Planets/small
in the "Size" field of your planets effect, without having to ship those with your mod!
Most entities have their sprites and animations defined in a text file called Sprites.xml. Using Ahorn you can set your map to use a different Sprites.xml than vanilla, hence you can use different sprites/animations (without affecting other maps).
In order to check if an entity is reskinnable through Sprites.xml, look for it in Celeste/Content/Graphics/Sprites.xml
.
In this example, we are reskinning Theo Crystal.
- Copy
Content/Graphics/Sprites.xml
intoMods/yourmod/Graphics/yourname/campaignname/Sprites.xml
- Open your copy, and look for Theo Crystal. You will find this:
<theo_crystal path="characters/theoCrystal/" start="idle">
<Origin x="32" y="42"/>
<Loop id="idle" path="idle" delay="0.08"/>
<Anim id="shatter" path="shatter" delay="0.08" goto="shattered"/>
<Loop id="shattered" path="shatter" frames="16" delay="0.08"/>
</theo_crystal>
path="characters/theoCrystal/"
means you will find the textures for it in the graphics dump, at Graphics/Atlases/Gameplay/characters/theoCrystal.
3. Copy this folder into Mods/yourmod/Graphics/Atlases/Gameplay/yourname/campaignname/theoCrystalReskin
, then modify them as you want.
4. In your Sprites.xml copy, edit the path to match the folder you created at the previous step:
<theo_crystal path="yourname/campaignname/theoCrystalReskin/" start="idle">
- in your map metadata in Ahorn, change Sprites to
Graphics/yourname/campaignname/Sprites.xml
.
You're all set! Now, if you place a Theo crystal, it should use your custom texture in-game.
If an entity is not reskinnable with ahorn, and isn't in Sprites.xml, a code mod might be needed to reskin it. Most of these miscellaneous entities already have existing mods that allow you to reskin them.
Existing helpers provide more reskinnable entities:
-
Frost Helper 🔗:
- Spinners
- Springs
- Zip Movers
-
Maddie's Helping Hand 🔗:
- Touch Switch and Switch Gate icons. Switch gate blocks are reskinnable out of the box (see first part)
- Refills (for custom particle colors, or for using different sprites in the same map)
- Swap Blocks
- Kevins
- Stars effect
-
Lunatic Helper 🔗:
- Starfield effect with custom particles
Some helpers also allow you to recolor entities:
-
Frost Helper 🔗:
- Fire Barriers
- Rising Lava
- Dream Blocks
-
Pandora's Box 🔗:
- Water
- Waterfalls
- Dust bunnies
-
Lunatic Helper 🔗:
- Starfield effect
- Stardust effect
-
Maddie's Helping Hand 🔗:
- Sandwich Lava
- Blackhole effect
-
Shroom Helper 🔗:
- Petals effect
If you want to replace some textures in the game to make a "texture pack", all you have to do is:
- Get the graphics dump from Useful Links: that will tell you which textures exist in the game, what are their dimensions, how they are called, etc.
- Place the replacement texture(s) in
Mods/yourmodname/Graphics/[...]
, with the exact same path as the one in the graphics dump.
For example, to replace the Forsaken City level logo, you would place the replacement texture in Mods/yourmodname/Graphics/Atlases/Gui/areas/city.png
.
If you want an example of a "texture pack" of sorts, take a look at Simpleste 🔗. It basically replaces every single texture in the game. With squares and rectangles, but still.
Please note that this will affect vanilla levels as well. This is not what you want if you need custom graphics specifically for your map.
(By the way, if you want to replace Madeline with some other character, you will need 817 sprites. No wonder there are not many texture packs out there doing that.)
Home
Contributing
FAQ
Useful Links
Your First Custom Map
Your First Texture Pack
Mod Setup
Custom Maps
Texture Packs
Uploading Mods
Generated Dialog Keys
Reference Code Mod🔗
Vanilla Audio IDs
Vanilla Decal Registry Reference
Character Portraits
Mod Structure
Debug Mode
Debug Map
Command Line Arguments
Environment Variables
Install Issues
Common Crashes
Latency Guide
everest.yaml Setup
Mapping FAQ
Map Metadata
Vanilla Metadata Reference
Adding Custom Dialogue
Overworld Customisation
Entity & Trigger Documentation
Custom Entity List🔗
Camera
Ahorn Scripts
Custom Tilesets
Tileset Format Reference
Stylegrounds
Reskinning Entities
Skinmods
Decal Registry
Chapter Complete Screen
Custom Portraits
Adding Custom Audio
Advanced Custom Audio
Code Mod Setup
Making Code Mods
Settings, SaveData and Session
Everest Events
Understanding Input
Logging
Cross-Mod Functionality
Recommended Practices
Core Migration Guide
Lönn Integration🔗
Custom Events
Adding Sprites
Adding Preexisting Audio