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) 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, and can be printed to log.txt with P for easier copy-pasting into the meta.yaml.

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

This guide assumes you already know how to use Blender, and if you want to achieve a similar style to the vanilla mountain specifically know low poly modelling. This tutorial ๐Ÿ”— might be helpful for that.

  1. Make a new file in Blender, and delete the camera, light, and default cube.

  2. It can be useful to import the vanilla mountain model(s) to have them as a reference. This can be done by going to File > Import > Wavefront (.obj) and opening them (they're located in Content/Overworld/ relative to Celeste.dll). Then, select the newly imported models and press M to move them to a new collection.

  3. Model your mountain. You can toggle the vanilla mountain model(s) on and off for reference using the checkbox next to the collection you created in the previous step.

    • To prevent issues with displaying it ingame, the mesh needs to be triangulated at some point before exporting it. This could be done after you finish modelling by selecting everything with A and pressing Ctrl + T, or left until later if you prefer.
  4. Texture your mountain. Some things to keep in mind:

    • Each mountain model can only use one texture file, though note that if you do need to use more textures, you can split up your mountain into multiple models each with their own texture (like vanilla does with its separate buildings model).
    • Any light and shadow has to be baked into the texture, since Celeste's 3D rendering engine does not support rendering it in real time. There should be tutorials online on how to do this.
  5. Once you feel done with modelling your mountain, save your .blend file, and select the model you want to export. Go to File > Export > Wavefront (.obj) and make sure that on the right side of the export window:

    • The General > Include Selection Only checkbox is enabled. (if you have multiple models, or the vanilla mountain as a reference, this makes sure that you are only exporting the model you have selected)
    • The Geometry > Triangulated Mesh checkbox is enabled. (this makes sure the mesh is triangulated before exporting, which prevents some display issues ingame)
    • The Materials checkbox is disabled. (this prevents Blender from generating a useless .mtl file)

    then export your model to YourMod/Mountain/yourname/campaignname/mountain.obj.

    • If you have multiple models, repeat this step for as many models as you have, while only selecting the model you want to export, and replace mountain.obj in the export path with buildings.obj, extra0.obj, extra1.obj, etc.
    • Note that the above export settings will reset to their defaults every time you try to export a model, but if you want you can create an "Operator Preset" by clicking on the plus icon near the top right corner to be able to quickly enable them each time.
  6. Copy or export the texture file(s) youโ€™re using to YourMod/Graphics/Atlases/Mountain/yourname/campaignname/mountain_0.png

    • Replace the 0 in mountain_0.png with 1 or 2 if you want your mountain to have a different texture depending on the mountain State (see Map Position On The Mountain).
    • Any textures for additional models would be named buildings_0.png or extra0_0.png, extra1_0.png, etc.
    • See the Custom Textures section as well for more info.
  7. Define the custom model and texture directories in your map's meta.yaml file:

Mountain:
    MountainModelDirectory: Mountain/yourname/campaignname
    MountainTextureDirectory: yourname/campaignname
  1. If you want to prevent any vanilla models you aren't already replacing from showing up (such as the buildings or core wall), copy this .obj file ๐Ÿ”— to YourMod/Mountain/yourname/campaignname/[unusedvanillamodelname].obj, where [unusedvanillamodelname] is the name of the vanilla model you want to prevent from showing up (you can find this by looking in Content/Overworld/ relative to Celeste.dll).

Note

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

Note

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

Marker Icon

Mountain:
    MarkerTexture: marker/Fall

โฌ†๏ธ this meta.yaml setting changes the marker/pin visible on the overworld map. Vanilla ships with those 3:

marker/Fall marker/runBackpack marker/runNoBackpack

If you want to use a custom animation, put all of its frames in Graphics/Atlases/Mountain/marker/yournickname/campaignname/pinname00.png, pinname01.png... and put marker/yournickname/campaignname/pinname here.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ