$ show EverestAPI/Everest
Everest is the primary mod loader and modding framework for the game Celeste. It is a standalone platform rather than a simple script loader: the MiniInstaller patches the game's .NET assemblies at install time using MonoMod, manages native libraries across Windows/Linux/macOS, and provides a full mod SDK. The core project is Celeste.Mod.mm, which contains MonoModRules (build-time patching logic), the Everest runtime (mod loading, dependency resolution, event dispatch), the Everest.Content asset pipeline (crawl/process/apply for textures, maps, dialog), and the Everest.Updater self-update system. Mods interact with the game through a clean event-based hook API (Everest.Events) and registries (e.g., StrawberryRegistry) rather than direct assembly patching. The repository is purely an application/framework; there is no data science, ML, or analytics content. The only data-like artifacts are TAS replay files used for CI validation, not for model training or analysis.
The LLM identified 4 files worth highlighting for reuse:
Clean pub-sub event system allowing mods to subscribe to game events without direct patching. The pattern is: define a delegate, a static event, and an internal invoke method that calls the event. This decouples mod code from the game's internal call sites and is a genuinely reusable pattern for any extensible application.
Uses a static HashSet and read-only caches to let mods register custom types (e.g., strawberry types). Demonstrates a simple, self-contained registry pattern that could be extracted into any project needing plugin-registered type discovery without reflection scanning at runtime.
Content ingestion pipeline: Crawl adds assets to a global Map, ProcessLoad and ProcessUpdate apply modded assets (textures, maps, dialog) to runtime objects. This is a well-structured asset lifecycle pattern (discover -> load -> apply) that generalizes to any game or app with moddable content.
Self-contained installer that patches the game's assemblies and manages native libraries (lib64-* handling, SetDllDirectory, SELinux probes). Demonstrates how to build a standalone cross-platform modding platform, including handling of platform-specific native library resolution and permissions.