Overworld Customisation - EverestAPI/Resources GitHub Wiki

This page details how to customise the overworld for your map. Note that you will need a meta.yaml file - see the Map Metadata page to set one up.

Table of Contents

Map Position on the Mountain

To define your map's position, add this to the meta.yaml file:

Mountain:
    Idle:
        Position: [ 7.565, 8.614, -5.318 ]
        Target: [ 6.210, 7.754, -4.125 ]
    Select:
        Position: [ 8.782, 6.271, -1.953 ]
        Target: [ 6.799, 6.172, -2.194 ]
    Zoom:
        Position: [ 6.462, 5.235, -1.605 ]
        Target: [ 4.542, 5.754, -1.819 ]
    Cursor: [ 5.706, 5.492, -1.542 ]
    State: 2
    ShowCore: false
    Rotate: true

You can get the coordinates by enabling debug mode (in Mod Options), restarting the game, and pressing Space on the mountain screen. Look around with the mouse, move around with WASD and move the camera up/down with Q and Z. The coordinates will be displayed on the top left.

  • Idle defines the camera position during level selection.
  • Select defines the camera position when you selected the level and looking at checkpoint selection or side selection.
  • Zoom is the camera position when you zoom into the level after you start.
  • Cursor is the location of the Madeline cursor on the mountain. To place this, move the camera to where you want the cursor to be, then copy the Position coordinates.
  • State defines the lighting of the mountain: 0 is night, 1 is dawn, 2 is day, 3 is moon.
  • ShowCore decides whether the Core Heart should be shown on the Mountain.
  • Rotate decides whether the camera should rotate around the Mountain.

If you just want to copy the coordinates of a vanilla chapter, have a look at the Vanilla Metadata Reference.

Disabling the Snow

Mountain:
    ShowSnow: false

This will turn off the snow that is falling on the mountain, or floating in space.

Colors and Tinting

Some textures and objects used in the overworld are tinted with colors you can customize. Here is what you can put in your meta.yaml (here with values used in vanilla):

Mountain:
    FogColors:
      - 010817
      - 13203E
      - 281A35
      - 010817
    StarFogColor: 020915
    StarStreamColors:
      - 000000
      - 9228e2
      - 30ffff
    StarBeltColors1:
      - 53f3dd
      - 53c9f3
    StarBeltColors2:
      - ab6ffa
      - fa70ea
  • FogColors are the colors of the fog on the mountain, for each State (see Map Position On The Mountain). 2 colors will be used by the game: the one for the state your custom mountain uses, and the first one (state 0) on the main menu. Defining all the values isn't mandatory: if you define less than 4 values, the others will be at their default. This means if you're using state 0, you only need 1 value.
  • StarFogColor is the color of the fog in space.
  • StarStreamColors is the color of the "streams" visible behind the moon. Check this image 🔗 to visualize what they are when set to red, green and blue. You have to specify exactly 3 values if you use this.
  • StarBeltColors1 and StarBeltColors2 are the colors of the small stars rotating around the moon. They are dispatched in 2 "belts" that are slightly misaligned between each other. You can specify any number of colors for each one, star colors will be picked randomly among the colors you give. If you give an empty array (StarBeltColors1: []), the star belt will be removed.

Custom Textures

To change the mountain textures when your map is selected, you can define a custom model directory in your map meta.yaml:

Mountain:
    MountainTextureDirectory: yourname/campaignname

After defining that, you can drop your custom textures in Mods/yourmod/Graphics/Atlases/Mountain/yourname/campaignname.

You can find the vanilla mountain textures in the graphics dump, in Graphics/Atlases/Mountain. buildings, mountain and skybox have 3 textures, depending on the mountain State (0 is night, 1 is dawn, 2 is day; see the Map Position On The Mountain section).

If you added extra models, you should add their textures in this directory: for example, extra1_2.png will be the texture applied to extra1.obj when the mountain is in state 2 (day).

Mountain/Moon Models

You can customize the mountain 3D models that are displayed when your map is selected.

  • You can find the vanilla mountain models in the Content/Overworld folder. If you need to add more models than there are in vanilla in the overworld, you can add them in the same folder, naming them extra0.obj, extra1.obj, etc.
  1. Learn low poly modelling in Blender, this tutorial 🔗 might be helpful.

  2. Make a new file in Blender and import the default mountain model, you can do this by going to File > Import > OBJ and opening it (it’s located in Content/Overworld relative to Celeste.exe)

  3. Delete the camera, light and default cube, then select all the imported models and press M to move them to a new collection, then press the white_check_mark button by the newly created collection to hide the default mountain.

  4. Model your mountain, you can toggle the normal mountain on and off for size reference using the white_check_mark next to the normal mountain’s collection.

  5. Texturing. Here are a few things to keep in mind: you can only use one texture file (there is an exception to this rule that will be seen later), any light and shadow has to be baked into the texture file (hopefully there should be some tutorials for this out there), as Celeste doesn’t render it. It's not sure if you need to have the image be squared. You can also use the same method used in the video if you don’t really care about light and shadow on your mountain.

    5.5. If you can't fit all your models onto one texture, you can split your model into multiple .obj files, each with it's own texture.

  6. Once you feel done with modelling and such, Select your model(s), go into edit mode and select everything with A, then press Control + T to triangulate your model.

  7. Once you are done with all the previous steps, save your blend file, then delete everything you don’t want to import into Celeste. Go to File > Export > OBJ and export your file to Mods/YourMod/Mountain/yourname/campaignname/mountain.obj

    7.5. Any extra models would be buildings.obj or extra0.obj, extra1.obj, etc.

  8. Export/Copy the texture file you’re using to Mods/YourMod/Graphics/Atlases/Mountain/yourname/campaignname/mountain_0.png

    8.5 Replace the 0 in mountain_0.png with 1or2` if you want your mountain to have a different texture depending on the State of the mountain. Any extra models would be buildings_0.png or extra0_0.png, extra10.png, etc.

  9. (optional) If you want a custom skybox, the original is located in Graphics/Atlases/Mountain/skybox.png if you need a reference. When you've made one, place it in Mods/YourMod/Graphics/Atlases/Mountain/yourname/campaignname/skybox_0.png.

    9.5 Replace the 0 in skybox_0.png with 1 or 2 if you want your skybox to have a different texture depending on the State of the mountain.

  10. Define a custom model directory in your map meta.yaml:

Mountain:
    MountainModelDirectory: Mountain/yourname/campaignname
  1. Drop your custom objects in Mods/yourmod/Mountain/yourname/campaignname.

Once you are done with all previous steps, copy this .obj file 🔗 to Mods/YourMod/Mountain/yourname/campaignname/whateverobjfilesyourenotusing (*you can check by going to Content/Overworld and using whatever .obj files you don't already have in your mod.).

ℹ️ Be sure to use models using triangles for their faces; some display issues might occur otherwise.

ℹ️ For best results, create your models using Blender. Models created with other 3D modeling software might not work properly unless resaved in Blender.

Background Music and Ambience

For a different background music and ambience to play when the player selects your map, use this in your map meta.yaml:

Mountain:
    BackgroundMusic: event:/maddie480/test_music
    BackgroundAmbience: event:/env/amb/06_lake

Note that both are optional: if you want custom music but the default ambience, you can omit BackgroundAmbience.

Check the custom audio tutorial to make the game load your custom music.

You can also set music params through metadata, following the following format:

Mountain:
    BackgroundMusicParams:
        param1: value1
        param2: value2

For example, this is what you want to use if you want to have the Farewell background music on your map:

Mountain:
    BackgroundMusicParams:
        moon: 1
⚠️ **GitHub.com Fallback** ⚠️