My entry for JS13K 2024.
Salvadoran Reclamation is a 2D shooter/platformer game where you play as a soldier in El Salvador to take out the MS-13 gangs scattered across the country.
Play the tutorial in the game to learn how to play.
- WASD or Arrow Keys to Move
- Mouse to aim, hold Left mouse button to attack
- Shift to dash
- E to pick up ammo and/or weapons from defeated enemies
- 1, 2, 3 to switch between weapons
- Right-click to quickly switch to and strike with your meelee weapon
- Ensure you have nix installed
- Run
nix developto open a devshell. You may have to append special CLI args in order to use thedevelopcommand
- To run the dev server:
bun serve - To build the game:
bun run build - To find the best roadroller config:
bun run find-best-roadroller - To build with the best roadroller config:
bun run build-with-best-roadroller
This years' theme was "Triskaidekaphobia", which means "fear of the number 13".
When the theme was announced, I thought I was completely stumped. At that moment, I had the impression that people who thought of game jam ideas were more evil than serial killers.
I was wrong though. I had a lot of fun building the game and I'm happy how it turned out.
After pondering on the word "triskaidekaphobia" for a while, I remembered a video I'd recently watched about the Cecot prison in El Salvador.
During Nayib Bukele's crackdown on crime in 2019, he build the prison and confined thousands of dangerous criminals there, many of who came from notorious gangs like MS-13 and Bario-18.
Violent gangs like MS-13 terrorize people across the world, so I figured I'd adapt that to the theme.
I decided to just use the raw canvas API with requestAnimationFrame for this one. I created a wrapper class around canvas that allowed me to chain methods like canvas.fillStyle().fillRect().path()... instead of ctx.fillStyle(), ctx.fillRect(), etc.
For the sound effects, I used ZzFX. I had so much fun tweaking the sound effects. I spent countless hours on it that I probably shouldn't have. But this little library is a lifesaver.
The hardest part of the game was coding out the behavior for enemies. When to shoot, pursue, walk back, and notify each other of an attack took almost a third of the game's development time. They still aren't looking right.
Level design was also a challenge, but I managed to make it work in the end after playing them through many times and making sure they worked.
Game balancing was tedious, but it wasn't terrible.
- ZzFX - Zuper Zmall Zound Zynth - Micro Edition, MIT License - Copyright 2019 Frank Force