Skip to content
Snip edited this page Mar 19, 2024 · 25 revisions

Table of Contents:

Playing Mods

Where do I Start?

Install Olympus 🔗 (the installer and mod manager) and Everest 🔗 (the mod loader).

Where do I get mods?

Most people host their mods on GameBanana 🔗, but you can also find finished and work-in-progress mods posted in the #modding_showcase and #modding_wip channels of the Celeste Discord 🔗.

Can I mod a Nintendo Switch?

No. See here for more information.

Can I mod a Steam Deck?

Yes, follow the Linux install instructions 🔗.

Which PC versions can be modded?

At the time of writing:

✔️ The Steam, Epic Games, and itch.io versions can be modded.

❌ The Microsoft / Xbox Store version cannot be modded.
For more information see this post 🔗 from the Celeste Discord 🔗 (Paraphrased here):

  • The game is encrypted on a per-user license basis, meaning no mods without cracking the game, even to just replace maps or text.
  • It is built using the Universal Windows Platform 🔗 and .NET Native 🔗, meaning the mod loader would have to be completely rewritten.
  • In short, UWP Celeste is as locked down as the Xbox version. Neither the Celeste devs nor the Modding Community can change this.

Note that on Windows there are actually two versions of the game available, XNA and FNA, with slightly different behaviour; on Steam you can opt in to the FNA version by selecting the "opengl" beta.

How can I backup my savedata?

Make a copy of the Saves folder.
For the platform-specific location of this folder, look here 🔗.

What's .NET Core Everest?

As some readers might already know, Celeste is written in C#, which is one language in the .NET ecosystem. The base game, in addition to previous versions of Everest, used to run on an older .NET runtime called .NET Framework. .NET Core Everest however, as the name implies, runs a more modern runtime, simply called ".NET" (which used to be called .NET Core - blame MS for not being able to properly name things).

Switching runtimes offers numerous advantages; see the following (paraphrased) list of advantages from the initial announcement:

For players:

  • full backwards compatibility with mods
  • core-branch Windows installs run as 64 bit instead of 32 bit processes. This means that the 4GB memory limit is no longer present, Celeste can now take advantage of all the RAM in your system!
  • big performance improvements on all platforms: load times have been reported as being up to halved (first starts may take longer because Everest needs to rebuild the relinker cache)**

For modders:

  • ability to use up-to-date cross-platform tooling to for your mods, including debuggers
  • access to modern .NET API improvements like e.g. fast Spans
  • reorg MonoMod is being used instead of the old legacy MonoMod, increasing performance and stability of hooks
  • full technical consistency across all platforms. Mods made on one platforms should now always work on all other platforms out of the box, instead of sometimes encountering API differences / other compatibility issues

Everest versions 4465 and above are running on .NET Core Everest, while 4449 and below are considered legacy. Make sure to update Everest if you haven't played for a while.

If you encounter any issues, let us know in the #modding_help channel over at official Celeste Discord server 🔗!

Making Maps

What do you use to make maps?

Lönn 🔗, the community made map making program. It is a visual editor, with full support for modded entities.
Lönn can be installed through Olympus 🔗 (recommended), or manually by following the instructions on the README page 🔗.

How do I play my custom map?

Once you have Everest installed, you can play your map simply by saving the .bin file from Lönn into the Mods folder inside your Celeste install folder.
However, it is recommended to follow the Mod Structure guide, since it allows you to do things like add custom assets, change your map's name in-game, and much more.

How do I see file extensions?

Enable "File name extensions" in explorer

Why do I have to include my nickname and modname in my folders?

While Celeste loads, Everest merges all custom assets with the ones from the base game. When it does, it does not keep track of the mod that the assets came from.
This means that if two mods have a file in the same location relative to the mod folder, one will overwrite the other. This also applies to vanilla assets, and it is heavily discouraged to overwrite vanilla assets (textures, maps, dialog, etc) because it can be difficult to pin down which mod is overwriting them.
ℹ️ Some files are handled specially by Everest, and conflicting ones will be merged together rather than overwritten. This includes dialog files and top-level spritebanks.

How do I change/add/configure ______ for my map?

Check the Mod Structure and Map Metadata pages, your question will likely be answered there.

What is ______ called in Lönn?

See the list of base-game Entities for the commonly used names (The Celeste Fandom wiki is unreliable).

How do I add a background to my map?

Read the Stylegrounds guide.

How do I add custom _____ to my map?

  1. Check for a wiki page that covers it (check the sidebar too!):
    Dialog, Tilesets, Portraits, Music/Audio
  2. Make sure to check the Mod Structure and Map Metadata pages too
  3. Look for an existing custom entity 🔗 that does what you want
  4. Ask in the #modding_help channel on the Celeste Discord 🔗

What are "Flags"?

In short, a session flag is something that can be enabled or disabled.
When starting a level, all flags start disabled and can be turned on/off with flag triggers, some custom entities, and within Lua Cutscenes 🔗.
Flags are particularly useful for two things:

  1. When you enable a flag it stays enabled until the player exits or restarts your level so you can use it to make something happen only once.
  2. Many things react to flags being enabled or disabled, like flag switch gates or stylegrounds, which makes it possible to easily create new interactions between different helpers.

The easiest to play around with flags is with the Lever and Lamp from the Pandora's Box mod. By setting the flag property of both entities to the same thing, you can toggle the session flag by flipping the lever, and the lamp will react accordingly.

Making Code Mods

What are you using to look at Celeste's code?

There are many different decompilers 🔗 that can be used to look at Celeste's code, commonly used are dnSpy 🔗 and ILSpy 🔗.

What are you using to modify Celeste's code?

While dnSpy lets you modify Celeste's code directly, it's not really a feasible way to distribute mods to others.
Everest uses MonoMod 🔗, which allows methods to be "hooked", or detoured, at runtime. If you do find something that must be patched by Everest, ask for help in the #modding_help channel on the Discord server.

How do I start making code mods?

Set up your code mod, then try modifying vanilla code, making custom entities, or writing your own cutscenes. This wiki assumes an existing knowledge of the C# programming language.

Why can't I build my code mod after an update to Core?

Older Code mods need to be migrated to properly work on .NET Core versions of Everest - see the migration guide for details on how to do this.

Clone this wiki locally