As part of the annual JS13K games challenge, I've put together a pretty large (but small-in-code) Metroidvania game that fits in just 13KB of compressed Javascript.
The source is available here: https://github.com/arikwex/infernal-sigil
NOTE: the current head of the main branch is at 13.6KB due to quality of life patches. The legit 13KB version is tagged in github.
Useful hacks:
- Using Roadroller (https://github.com/lifthrasiir/roadroller) for compression
- Compressing the map data as grayscale PNG paired with some code generation.
- Using procedural animation for all characters.
- Replacing string enum with numeric enums for compression.
- Built a small game engine for object lifecycle and rendering.
- Single function to generate unique procedural songs for different regions.