Halloween open-source games to play and hack
Each October, I round up open-source (or "source available") games built for game jams like Ludum Dare and JS13K. These projects come from individuals and small teams working with Unreal Engine, Unity, Godot, Phaser, JavaScript, Haxe, and GameMaker. Many include surprising gameplay mechanics, and as a bonus, their code is readable enough to poke at.
My own nostalgia for the cheat code pages in Amstrad Action and Crash magazines never faded. There was magic in opening a game's hex code and flipping one value to become invulnerable. That spirit lives on here: several of these games have quick hacks that grant you more time, speed, or safety.
Charon Jr β a taxi service for the dead
You play as Charon Jr., ferrying corpses to the afterlife in a crazy taxi ride. Collect payments and stay on the clock.
Hack: Give yourself a time extension by changing initialTimeRemaining at line #6 of hud.ts.
- private readonly initialTimeRemaining = 100;
+ private readonly initialTimeRemaining = 1337;
Nighty Night, Nosferatu β a vampire's dawn escape
Vampires don't do well in daylight. Guide Nosferatu through shadowy levels while avoiding the sun.
Hack: Speed up the creature of the night by adjusting player.speed at line 135 of props.js.
- "player.speed": [150, 1, 1000],
+ "player.speed": [300, 1, 3000],
Some developers kindly include cheat-friendly settings. Check line 147 of props.js β there's a boolean worth experimenting with.
Smack Demon β turn-based pyromaniac warfare
This strategy game pits you against a demon who is very fond of fire. Burn damage will sting repeatedly.
Hack: Make yourself fireproof by commenting out line 119 of player.cs.
- health--;
+ // health--;
Curse of Infinity β a curse every ten seconds
Zombie hordes. Killer oranges. Drought. Famine. Every 10 seconds a new curse drops on you. It's voxel-heavy, chaotic fun.
Hack: If one curse pushes you over the edge, delete the relevant GameOver() calls in GameManager.cs or Enemy.cs. For example, line 43 of Enemy.cs controls zombie bite lethality.
- GameManager.Instance.GameOver(causesOfDeath.zombie);
+ // GameManager.Instance.GameOver(causesOfDeath.zombie);
UNDERRUN β a brown twin-stick shooter
This twin-stick shooter renders in 256 shades of brown. If darkness or spiders bother you, steer clear.
Hack: Brighten the scene by modifying the intensity value at line 14 of entity-cpu.js.
- push_light(this.x + 4, 4, this.z + 12, 0.2, 0.4, 1.0, intensity);
+ push_light(this.x + 4, 4, this.z + 12, 0.2, 0.4, 1.0, intensity/10);
CHOCH β spider seeks a web page
Another spider entry: play a tiny crawler searching for a missing page. Firewalls and intrusion prevention stand in your way.
Hack: The gulpfile.js defines a DEBUG variable that defaults to true but is forced to false in production builds. Run the game locally, or strike line 18, and you get speed plus invulnerability.
- DEBUG = false;
+ DEBUG = true;
Night of the Spook β slow-firing proton action
Bats, rats, zombies, skeletons β this game has everything from a spooky bestiary. Your Spookbuster-style weapon fires once every 10 seconds, so aim matters.
Hack: Need a wider beam to compensate? Tweak baseSize at line 27 of Beam.cs. Other values in that file offer more funny side effects.
- private float baseDamagePerSecond = 2.5f, baseSize = 0.25f, baseDuration = 1f;
+ private float baseDamagePerSecond = 2.5f, baseSize = 5.25f, baseDuration = 1f;
Ghosts, 'n Vamps 'n Skulls β keep formation
Call your warriors and hold them in line to repel incoming monsters.
Hack: If the action is too fast, dial back fps at line #16 of fxj.js.
- var fps = 60,
+ var fps = 20,
Jekyll and Hide β embrace both sides
Someone came to the lab with a classic Jekyll and Hyde premise. Search 15 levels for a cure while managing your darker instincts.
Hack: The sprite art is friendly to edits. Swap blood for slime or a witch hunt to your own face. Open your favorite pixel editor (Piskel, Aseprite, or GameMaker's built-in tools) and play with the visuals.
Death Rider β soul-seeking skull shooter
A flying skull with a craving for souls, armed with goo projectiles. Plenty of blocky aerial combat.
Hack: For invincibility, comment out lines 37β46 of Skull.ts. Those bats and blocks lose all their menace.
- if (layer == 2) {
- emit("bonk")
- this.death()
- if (this.life--) {
- await delay(2)
- this.start(this.life)
- } else {
- emit("death")
- }
- }
+ // if (layer == 2) {
+ // emit("bonk")
+ // this.death()
+ // if (this.life--) {
+ // await delay(2)
+ // this.start(this.life)
+ // } else {
+ // emit("death")
+ // }
+ // }
Tenjutsu β skull-kicking martial mayhem
Baddies took over your dojo, and you need them out. Judo chop your way through. No hack here β the difficulty feels balanced as designed.
The editor notes the "no hacks" stretch correlates with the author's deadline.
Intomb β astral tomb escape
Rise from the dead and escape your tomb by shifting between the astral plane and the physical world. This Unreal Engine title also had no hacks proposed.
Digging Into Jam Code
βJam codeβ often gets a bad reputation: written quickly, occasionally inefficient, sometimes buggy. But in game jams, shipping matters more than polish β you can always refactor later. That ethos is exactly what makes these Halloween submissions so much fun to poke around in.
Working through the games in this list was a genuine pleasure. Jam code or not, each project was well organized with sensible function and variable names β a far cry from some of the spaghetti code weβve seen in the past. That structure made it easy to tweak gameplay mechanics here and there without getting lost in a tangle of undocumented logic.
From a stone prison escape aided by a not-so-wicked witch and ancient scrolls to plenty of hacking and slashing action, these games showcase what a little constraint and creativity can produce. Whether youβre looking for a quick Halloween distraction or inspiration for your own project, thereβs something here worth your time.
Relics of Stone
Built with Godot using GDScript, this one puts you in an endless-looking stone prison. Your way out depends on a witch who isnβt entirely wicked and scrolls that hold ancient knowledge.
The developer @PamisuMyon keeps the code tidy and approachable β a solid reference point if youβre learning Godot or want to see how a compact jam project can stay maintainable from start to finish.
Did you enjoy hacking into these Halloween-themed games? Are you inspired to build your own? Game Off, the monthly game jam, kicks off on November 1. Join now and put your own spin on the season.




