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.
- Map Position on the Mountain
- Disabling the Snow
- Colors and Tinting
- Custom Textures
- Mountain/Moon Models
- Background Music and Ambience
- Marker Icon
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 thePosition
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.
Mountain:
ShowSnow: false
This will turn off the snow that is falling on the mountain, or floating in space.
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 eachState
(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
andStarBeltColors2
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.
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).
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 themextra0.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.
-
Make a new file in Blender, and delete the camera, light, and default cube.
-
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 inContent/Overworld/
relative toCeleste.dll
). Then, select the newly imported models and pressM
to move them to a new collection. -
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 pressingCtrl + T
, or left until later if you prefer.
- 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
-
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.
-
Once you feel done with modelling your mountain, save your
.blend
file, and select the model you want to export. Go toFile > 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 withbuildings.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.
- The
-
Copy or export the texture file(s) youโre using to
YourMod/Graphics/Atlases/Mountain/yourname/campaignname/mountain_0.png
- Replace the
0
inmountain_0.png
with1
or2
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
orextra0_0.png
,extra1_0.png
, etc. - See the Custom Textures section as well for more info.
- Replace the
-
Define the custom model and texture directories in your map's meta.yaml file:
Mountain:
MountainModelDirectory: Mountain/yourname/campaignname
MountainTextureDirectory: yourname/campaignname
- 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 inContent/Overworld/
relative toCeleste.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.
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
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.