This is a fork for hacking on the Celeste64 base game and additional maps.
ExOK's repository information
This is the source code and general information for Celeste 64: Fragments of the Mountain, a game made by the original Celeste developers in under 2 weeks for Celeste's 6th Anniversary. We haven't done a lot of 3D development so much of this is not very optimized, it's coded in libraries mostly intended for 2D games, and we put it all together very, very quickly. Consider this similar to a weekend jam game, so experiment and learn at your own risk!
You can find prebuilt version of the game on itch.io.
- You need .NET 8.0
- Clone this repo, make sure NuGet packages are found with
dotnet restore
- Run
Celeste64.csproj
withdotnet run
ordotnet build
- Foster + SDL2: Input/Windowing/Rendering
- SledgeFormats: Parsing TrenchBroom level formats
- SharpGLTF: Parsing and Animating glTF2 models
- FMOD: For Music and Sound Effects
- TrenchBroom: For Level Editing
- Blender: For creating 3D Models
- Aseprite: For drawing Textures
- khronos glTF Tutorials: To figure out how Mesh Skins/Bones work
- LearnOpenGL: For general rendering concepts / normalizing Depth
- Kenny's Input Prompts: For UI Button Prompts
- Renogare: Main font
- The Celeste IP and everything in the
Content
folder are owned by Maddy Makes Games, Inc. - The
Source
folder, with exceptions where noted, is licensed under MIT. - The
Source/Audio/FMOD
folder contains bindings and binaries from FMOD. - We're fine with non-commercial Mods / Levels / Fan Games using assets from the
Content
folder as long as it's clear it is not made by the Celeste team or endorsed by us.
- Project LOGISTICAL
- Scratchpad for MAPPING
- Weather can be set in maps with
WeatherType
=snow
,rain
, ornone
.snowAmount
etc is deprecated - Levels.json can contain
Disabled
boolean flag to hide levels from the overworld TALK_FLAG
for chatty NPCs is replaced byDIALOG_ID
and is shared with the prefix for dialog names, abstracting hardcoded values in NPC actor classes- Any static, idle NPC with an option for dialog can be created with a Trenchbroom
GenericNPC
entity, replacing the need to create classes for EVERY npc lol; use optionsmodel
anddialog
to point to the correct assets.