Halloween Game Roundup: 13 Open-Source Titles Worth Playing—and Breaking

Every October, a familiar ritual plays out: digging through game jams for something short, sharp, and seasonally appropriate. The games below, most built in under a week by individuals or small teams, offer more than just a quick scare. Because their source code ships alongside the playable builds, they double as compact case studies in game development—or, for the less scrupulous, targets for a little light save-file tampering.

Titles span multiple engines and languages: Haxe and Heaps, Godot and GDScript, Unity and C#, JavaScript, Lua with LÖVE, Java via libGDX, and even Ruby. Platforms range from web browsers to Windows, macOS, and Linux. Here’s what’s worth your time.

Chamber

Play (Web, Windows) · Source (Heaps, Haxe)

Chamber took first place overall at the 47th Ludum Dare jam, built in 72 hours by a two-person team around the theme “stuck in a loop.” The loop is literal: you repeatedly clear rooms of enemies, collect blood, and feed it to a ghost companion as you work toward escaping the Eternal Chamber.

Paralunar

Play (Web, Windows, Linux) · Source (Godot, GDScript)

The 2020 Game Off theme was “Moonshot,” and Paralunar hit it squarely, ranking number one for gameplay. Set in a haunted castle on the moon, the game has you dashing past apparitions while gunning down ghosts with mouse-and-keyboard controls.

Want easier targets? Edit ghost.gd lines 8 and 9 to slow the enemies down:

- var follow_speed = 50
- var wander_speed = 20
+ var follow_speed = 1
+ var wander_speed = 1

From the Shadows

Play (Windows, macOS) · Source (Unity, C#)

Students at Lyon 2 University in France built From the Shadows, a cooperative platformer whose puzzles revolve around manipulating light and shadow. Created for the 2020 Gamagora Game Show, it’s also free on Steam.

Q1K3

Play (Web) · Source (JavaScript)

A browser-based Quake homage packed into less than 13kB of HTML, CSS, JS, images, and sound—roughly 2.69% of the file size of the image above. Despite the constraint, it delivers wave after wave of monsters to dispatch.

Fancy some god mode? Comment out line 116 of entity_player.js to make yourself invulnerable:

_receive_damage(from, amount) {
  audio_play(sfx_hurt);
- super._receive_damage(from, amount);
+ // super._receive_damage(from, amount);
}

Prefer firepower? Bump the ammo count on line 68 of weapons.js—say, to 999 nails:

class weapon_nailgun_t extends weapon_t {
  _init() {
    this._texture = 4;
    this._model = model_nailgun;
    this._sound = sfx_nailgun_shoot;
-    this._ammo = 100;
+    this._ammo = 999;
    this._reload = 0.09;
    this._projectile_type = entity_projectile_nail_t;
    this._projectile_speed = 1300;
    this._projectile_offset = vec3(6,0,8);
  }
}

Two Elevator Rides, Two Takes

Ludum Dare 48’s theme, “Deeper and Deeper,” produced at least two distinctly different elevator-themed games worth a look.

Hellevator

Play (Web, Windows) · Source (Unity, C#)

Built over a weekend for Ludum Dare 48, Hellevator sends you down a demon-infested elevator shaft toward hell itself. You’ll cast spells, crank generators, and eventually face the devil in a duel.

Chess Hellevator

Play (Web, Windows, Linux, macOS) · Source (Godot, GDScript)

The second interpretation takes the rules of chess and discards them mid-descent. Movement and capture systems get reworked into an elevator-based free-for-all where puns and checkmates collide.

Landlord

Play (Web, Windows, macOS) · Source (LÖVE, Lua)

An FPS dungeon crawler with deliberately retro visuals from LowRezJam 2020, where entries were capped at a 64×64 resolution. Landlord tasks you with clearing a castle of its monstrous tenants.

The Maze of Space Goblins

Play (Web) · Source (JavaScript)

Part Sokoban, part Match-3, The Maze of Space Goblins blends block-pushing with color-matching into a puzzler that’s easy to start and hard to put down.

Skipping ahead is simple: change startIndex on game.ts L#48 to the level number you want, then restart:

constructor(param : number, event : CoreEvent) {
  let startIndex = clamp(Number(param), 1, MAP_DATA.length);
-  this.stage = new Stage(startIndex);
+  this.stage = new Stage(4);
    }
  }

Low-Fi Shooters

Ultra Nightmare

Play (Windows, Linux, macOS) · Source (libGDX, Java)

Anyone who ran classic Doom or Wolfenstein at the lowest possible settings will feel right at home in Ultra Nightmare, a blocky FPS from the 2020 libGDX Jam. Navigate mazes and shoot down fiery floating skulls.

Life Sacrificer

Play (Web, Windows, macOS, Linux) · Source (Godot, GDScript)

A quick roguelike from the 3rd Blackthornprod Game Jam: guide your hero through procedurally generated dungeons, destroying every demon in your path.

To make your hero considerably less squishy, update the health value on line 8 of global.gd:

-var health := 100
+var health := 666 // đŸ€˜đŸ»

Reversals and Retro Horror

Deviant

Play (Web, Windows, macOS, Linux) · Source (Unity, C#)

Deviant, from Ludum Dare 49, flips the script: you’re the robot, not the human, and you periodically become murderously unstable. The goal is to destroy the core and free yourself from the humans without raising suspicion.

The Salatroitsk Incident

Play (Windows, macOS) · Source (Unity, C#)

Channeling the original PlayStation era, The Salatroitsk Incident drops you into a fictional Russian city after a nuclear event. Armed with a Geiger counter, you collect radioactive samples while avoiding a mutant abomination reportedly roaming the area.

Sentimental Wake

Play (Web) · Source (Ruby)

Another LowRezJam 2020 entry, but this one’s written in Ruby. Sentimental Wake packs swords, axes, guns, and perfectly timed jumps into a small but demanding platformer—pixel count notwithstanding.