Reskinning Textures Overview - EverestAPI/Resources GitHub Wiki

:warning: NOTE: This page is heavily WIP :warning:

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 :link:

Table of Contents

Decals

Decals do not need to be retextured, as you can just add your own. Instructions for this are found on the decal page :link: (TODO make page)

Tilesets

Tilesets do not need to retextured, as you can just add your own. Instructions for this are found on the tilesets page

Stylegrounds

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)

Entities

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.

Reskinning entities through ahorn

Spikes

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

Switch Gates

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

Jump Throughs

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.

Planets effect

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 and bigXX.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!

Reskinning entities through Sprites.xml

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.

  1. Copy Content/Graphics/Sprites.xml into Mods/yourmod/Graphics/yourname/campaignname/Sprites.xml
  2. 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">

:warning: If there is a slash at the end of the path, don't remove it.

  • 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.

Other entities

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 :link::
    • Spinners
    • Springs
    • Zip Movers
  • Maddie's Helping Hand :link::
    • 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 :link::
    • Starfield effect with custom particles

Some helpers also allow you to recolor entities:

Texture Packs

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 :link:. 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.)