Custom Tilesets - EverestAPI/Resources GitHub Wiki

Designing a tileset

When creating a tileset, you can either use the vanilla template or the improved template by 0x0ade. If you're creating a tileset from scratch it is recommended you use 0x0ade's template. If you're editing an existing tileset you may have to use the vanilla template.

It is also possible to create your own template, though that won't be discussed here.

Using the improved template by 0x0ade

The template below can be copied and edited in a standard image editor. Note that it must be saved as a png, and it cannot be resized.

jade template

Here is an annotated version of the template:

annotated jade template

Using the vanilla template

Because of this template's relative complexity, it is only recommended you use it if you are editing an existing tileset. If for some reason you do wish to make a custom tileset with it, the template can be found here 🔗.

Here is an annotated version of the template:

annotated vanilla template

Getting the tileset to appear ingame

Celeste stores information about each tileset in an xml file, which can be opened/edited with a regular text editor. By default your map will get tileset information from the vanilla xml, but you can configure it in the map editor to use a custom xml instead.

Step 1 - Making your own xml

  • Download the vanilla ForegroundTiles.xml 🔗 (alternatively find it in your Celeste folder -> Content -> Graphics)
  • Go to YourModFolder/Graphics
  • Create new folders there (for example yournickname -> campaignname) to avoid naming conflicts
  • Paste the ForegroundTiles.xml file into the new folder

Note

Note when adding custom files, it is usually recommended to place them in 2 subfolders with your nickname and your map / campaign name.
This is to avoid conflicting with maps from other people but also to prevent your maps from conflicting with each other.

Step 2 - Enabling 0x0ade's custom template

If you are using 0x0ade's template you will need to add some lines to your xml. If you are using the vanilla template, skip this step.

Open the ForegroundTiles.xml file you just downloaded. Just below <Data> at the beginning of the file, copy-paste the entirety of this text 🔗.

If you want you can edit the path to be for the first tileset in your mod yournickname/campaignname/tilesetname.

Step 3 - Adding a tileset to the xml

At the end of the ForegroundTiles.xml file, just before the </Data> line, copy-paste the following line:

<Tileset id="w" copy="z" path="yournickname/campaignname/tilesetname" sound="8"/>
  • Replace w by the id you want, that is not one already used (so do not use 1, 3-9, G, a-o, y and z).
  • The copy value sets which template the tileset uses. Use y for 0x0ade's template, or use z for the vanilla template.
  • Replace yournickname/campaignname/tilesetName by your nickname, your map or campaign name, and what you want to call your tileset. Remember those names, you will need them in the next step.
  • Replace 8 by whatever sound you want (see below for the list).

Important

The tileset ID has to be 1 character long.
It can be any valid Unicode character, but some characters have a meaning in XML, and subsequently may be parsed incorrectly by Lönn if not escaped.

Then, save and close the file.

Step 4 - Adding the tileset image to your mod

  • Go back to YourModName/Graphics/Atlases/Gameplay
  • Create a tilesets folder, then a yournickname and a campaignname folder in them (the names should match what you used in ForegroundTiles.xml in the previous step)
  • Copy your tileset there, and name it the same thing you put in ForegroundTiles.xml (tilesetName.png in this example)

Step 5 - Linking the xml to your map

  • Open your map editor and load your map
  • Go to Map -> Metadata
  • In the Foreground Tiles field, click the folder icon and select your ForegroundTiles.xml. (If you're still using Ahorn, you'll need to copy the path to your ForegroundTiles.xml manually instead: in this tutorial, it is Graphics/yournickname/campaignname/ForegroundTiles.xml (replace yournickname/campaignname by the name of the folders you created in step 1))
  • Click Update. Save and reload your map.

Thanks Xaphan and Coffe for the tutorial!

Warning

When entering file paths in Ahorn be sure to use forward slash (/) and not back slash (\)

Adding custom debris

A custom debris texture can be added to your tileset by including the optional debris attribute.
Using the example above, your tileset definition should look like this:

<Tileset id="w" copy="y" path="name" sound="8" debris="Xaphan/debrisTexture"/>

Where the debris texture is located at Mods/yourmod/Graphics/Atlases/Gameplay/debris/Xaphan/debrisTexture.png.

Multiple debris textures for a single tileset, which will be selected from randomly, can be added by renaming the images as follows:

debrisTexture00.png
debrisTexture01.png
debrisTexture02.png
...

Making your tileset ignore other tiles

Note the ignores tag in the tileset below:

<Tileset id="1" copy="z" path="dirt" ignores="g"/>

If you add this tag to your tileset, it will not connect to tilesets of given tileset id's.

You may list several id's as follows: ignores="a,b,c"

If you want to ignore every possible tile you can add: ignores="*"

FAQ and common errors

My tileset won't appear in Ahorn!

Double check the ForegroundTiles.xml path you put in Ahorn is correct.

My tileset appears, but it's just a pink texture!

Your XML has loaded correctly, but something is wrong with your tileset. Most likely you put the wrong file path to the image in the XML. It is also possible your tileset doesn't match the template if it's the wrong size, etc. Your file structure should look like this: image

The corresponding path for the tileset in the XML file is then: "Rain/Monochrome/Whitespace".

Replace Rain with your nickname, Monochrome with your campaign name and Whitespace with the name of the png file, minus the .png extension.

When I enter the xml path into Ahorn, it comes up with an error!

Most likely you accidentally messed up the formatting of the XML. See if there is an important line like <Data> you deleted. If you can't find the error, try starting with a fresh xml.

How do I add Background Tiles?

The same way as Foreground, except you use BackgroundTiles.xml instead of ForegroundTiles.xml, and you don't give them a sound parameter. It's also a good practice to name them in bgTilesetName.png format.

Tileset Sound IDs

The following IDs were copied from the Celeste FMOD Studio project.
They can be found in event:/char/madeline/footstep - thanks to Kevin Regamey from PowerUp Audio!

Entries marked as (unused) don't have any sound associated to them.

Click to expand Tileset Sound IDs
  1. null
  2. asphalt
  3. car
  4. dirt (used in tilesets: dirt, core)
  5. snow (used in tilesets: snow, summit)
  6. wood
  7. bridge
  8. girder (used in tileset: girder)
  9. brick (used in tilesets: tower, stone, cement, rock, woodStoneEdges, poolEdges, templeA, templeB, cliffsideAlt, reflection, summitNoSnow)
  10. traffic block
  11. (unused)
  12. dreamblock inactive
  13. dreamblock active
  14. resort wood (used in tileset: wood)
  15. resort roof
  16. resort platforms
  17. resort basement
  18. resort laundry
  19. resort boxes
  20. resort books
  21. resort forcefield
  22. resort clutterswitch
  23. resort elevator
  24. cliffside snow (used in tileset: cliffside)
  25. (unused)
  26. cliffside grass (used in tileset: deadgrass)
  27. (unused)
  28. cliffside whiteblock
  29. gondola
  30. (unused)
  31. (unused)
  32. (unused)
  33. glass
  34. grass (used in tileset: grass)
  35. (unused)
  36. cassette block
  37. core ice
  38. core rock
  39. (unused)
  40. (unused)
  41. glitch (used in tileset: scifi)
  42. (unused)
  43. internet café
  44. cloud
  45. moon (used in tileset: lostlevels)
Click to expand Tileset Sound ID Table
Tileset ID Tileset Name Sound ID Sound Name
1 dirt 3 dirt
3 snow 4 soft snow
4 girder 7 metal girder
5 tower 8 brick
6 stone 8 brick
7 cement 8 brick
8 rock 8 brick
9 wood 13 resort wood
a wood stone edges 8 brick
b cliffside 23 cliffside snow
c pool edges 8 brick
d temple A 8 brick
e temple B 8 brick
f cliffside Alt 8 brick
g reflection 8 brick
h grass 33 reflection grass
i summit 4 soft snow
j summit No Snow 8 brick
k core 3 dirt
l deadgrass 25 dry grass
m lostlevels 44 moon
n scifi 40 glitch
o {was never used} 43 cloud
⚠️ **GitHub.com Fallback** ⚠️