WEB GAMEPLATFORMERWEBALPHA
Celeste (celeste-wasm / Webleste)
Celeste
About the project
Celeste es un videojuego de plataformas publicado por Maddy Makes Games Inc. en 2018.
3 versions of Celeste
You're viewing: Celeste (celeste-wasm / Webleste)
Official project information
Author's original READMEOpen on GitHub ↗
<img src="frontend/public/app.webp" width=100 align="left">
<h1>Webleste</h1>
<br>
A mostly-complete port of Celeste (2018) to WebAssembly, with full support for Everest mods. Powered by FNA-WASM-Build and MonoMod.WASM.
<sup><i>Strawberry Jam</i> running in Webleste</sup>
Limitations
- Loading the game consumes 600M or so of memory, which is still around 3x lower than the original port, but it is still too much for low end devices.
- You may encounter issues on Firefox.
I want to build this
- Ensure node and pnpm exist and
pnpm i - Install dotnet 9.0.4
- Install the mono-devel package on your distro
- Run
sudo dotnet workload restoreinloader/ - Run
make servefor a dev server andmake publishfor a release build
I want to figure out how this works
- The native dotnet WASM support is used to compile a loader program to WASM
loader/Celeste.csloads a patched Celeste assembly and exports a function that polls its main looploader/Patcher.csruns MonoMod on celeste assemblies provided by the user to patch it for WASMpatcher/has the source for theMonoMod.Patchermod used for WASM patches
- A WASM port of MonoMod is used to provide detours/hooks to Everest and other runtime mods, it functions completely on the IL level and is mono specific
- FMOD pthread builds are used for audio, with slight patching of the bindings so that using FMOD 2 works
- The game canvas is transferred to dotnet's "deputy thread" and all rendering is done from there through FNA's OpenGL driver
For a deeper dive into how we made this and the Terraria web port, check out the writeup.
I want to port this to a newer version of Celeste (once it exists)
- Fix any issues with the hooks
- Make a PR!
