Taking Celeste to the Browser

Dev Environment

howto

The requirements for recompiling Celeste into a web browser runnable version are a bit tedious. Due to the nature of the ahead of time compilation, you'll need Windows Subsystem for Linux. According to the docs it does not matter that much whether you use WSL 1 or 2, however 1 might be faster for this use case. However I ended up setting mine with WSL 2 before reading that bit of documentation.

Also for audio, only FMOD 2 has a webassembly version but Celeste's bank files are on an earlier version so we'll need to regenerate the bank files from the public Celeste FMOD project. Simply download the project and open it with fmod studio 2 and it should automatically upgrade it. Then rebuild the bank files as needed. Instead of putting them in the Desktop folder, we'll be putting them in the Web folder later on.

If you've already gotten a setup suitable for making Everest mods then GOOD JOB! If not you should probaly get one. In addition since the packaging runs on .NET 5 you should get .NET 5 installed.

Throughout this "DIY" tutorial I will be referencing a couple of things.

Resources (for when you are stuck)

Remeber, FNA aims to be a better reimplementation of XNA!

A few other things we might need

(TODO: Yea I think this is good enough to be in another post)

Extract the unmodified source code.

Simply open up ILSpy, open the Celeste.exe assembly, and then select everything and hit export code so it makes a project openable by Visual Studio. Keep in mind at this point the project still uses .NET 4.5.2, while our target project uses .NET 5. I'll be providing another csproj for the web build. By the way, making the game run off .NET 5 actually requires absolutely no code modifacation.


Have questions? Contact smashmaster in the Celeste discord :)