Hackable Halloween games MMXXIII

13 spooktacular games plus source code for readers to jam on.

|
| 8 minutes

As Halloween approaches, I have a special treat for you: some short, sweet, and spooktacular games lovingly crafted during game jams such as Ludum Dare and Godot Wild Jam. All mixing programming languages like JavaScript and Haxe, game engines like Godot and Unity, and all sorts of code, pixels, and sounds in a creative cauldron for your enjoyment.

Don’t let the code samples scare you! While “jam code” might not be famous for its readability or maintainability, most of these games are easy to tweak, allowing you to make yourself invulnerable, grant infinite ammo, or jump to your heart’s content–your hacking skills are the only limit.

Many of these games are browser-friendly, providing excellent, eerie entertainment during your coffee breaks. So, grab your broomsticks, don your witch hats, and join us on a hair-raising journey through these 13 Halloween-themed games, all free to play.

Cheat with Ciara and the Witch’s Cauldron 🪄🧙🏻‍♀️

It was no surprise that Ciara and the Witch’s Cauldron took 1st place in Godot Wild Jam #53—with its delightful style and voice acting. In search of a cure for her bedridden mother, a young girl ventures into the unknown, and a series of perplexing puzzles, seeking the counsel of a witch.

The last level is extremely challenging. The Konami code won’t help you here, but if you press down, right, left, left, up, right, left, up, right, down, right, up, left, down, left, up, left you’ll be alright 👍🏻 </spoiler_alert>

Or if you really want to cheat, just change Player.gd line 45 as follows and you’ll move more freely.

- number_of_tiles = free_spaces[direction]
+ number_of_tiles = 1
for element in elements_carried:
  if element.get_free_spaces(direction) < number_of_tiles:
    number_of_tiles = element.get_free_spaces(direction)

Though I Walk 🪦 🚶🏿

Animation showing Though I Walk idling.

Godot GDScript

Though I Walk is a unique and very challenging game—depending on your point of view, and I mean that quite literally—where you guide your body and soul through the shadow of death, collecting chalices and solving creative platforming puzzles.

Yamsylvania 🧛🏻‍♂️ 🦇 🍠

There’s only one thing I hate more than maintaining a horde of YAML files. And that’s yams. In a world overrun by Yampires and Yampire Bats, you, a determined farmer, must continue selling yams to survive while using yams as your only defense in randomly selected levels. The aptly-titled Yamsylvania will mostly likely meet all your yam-yubbin’ needs. Just don’t run out of yamunition.

Norman the Necromancer 🧙‍♂️ ☄️

Norman the Necromancer puts you in the shoes of a renegade necromancer, endeavoring to master the art of reanimating the dead, all while facing relentless pursuit by the local villagers. Luckily, Norman has a few spells up his sleeve for you to sling.

If you’re into productivity, consider killing two birds with stone, or rather, multiple villagers with one spell by changing game.ts line 151:

onCollision(target: GameObject) {
    for (let behaviour of this.behaviours) {
      behaviour.onCollision(target);
    }

    if (this.despawnOnCollision) {
-     game.despawn(this);
+     // game.despawn(this);
    }
  }

Bonus: @null-bot9875 wrote an in-depth article on how they built the game if you are curious to know more about the magic inside the game.

Ghost Snap 👻 📸

Screenshot of Ghost Snap.

Godot GDScript

Ghost Snap is a miniature open-source game that focuses on the captivating concept of snapping ghosts. It was created for A Game By It’s Cover jam, which challenged participants to turn the fictional cartridge art of the My Famicase Exhibition into the real thing. Boo-tiful!

Don’t Suck at Silver Bullet 🧛🏽‍♀️ 🔫

Silver Bullet was a fangtastic entry in 2022’s GitHub Game Off taking a respectful 6th place in the graphics category and an impressive 13th place overall. With a trusty pistol and a solitary silver shell at your disposal, stealth and strategy are your allies as you navigate a treacherous train, dispatching vampires with precision.

Brains 🧠 🧟‍♀️ 🕺

Screenshot of Brains.

Godot GDScript

Brains is a brain-chomping, rhythm-based, puzzle adventure game (try saying that ten times fast), featuring some of the cutest zombies you’ll ever see. Bust a move and progress through all of the levels.

Big Black Book of Magic 🔮 📖

Screenshot of Big Black Book of Magic.

Godot GDScript

“Expelliarmus!” and “Expecto Patronum!” your way through Big Black Book of Magic—a platform game where you must defend your castle from marauding monsters with a unique spellcasting mechanic. It’s as easy as klaatu barada N… necktie… nectar… nickel… noodle… nikto!

Deliverance : SOUL REAPER 🔫 🏃

Deliverance : SOUL REAPER came in a respectable 11th place in Ludum Dare 53 with a small, fast-paced FPS challenging speedrunners to collect souls as fast as they can. Let us know if you manage to complete this in under a minute!

Boo Bark 👻 🦮

Mischievous ghosts have wasted no time in making their presence known in Boo! Bark! It’s up to you to defend your human from ghostly incursions by barking and chasing away the pesky spirits.

WitchCup1276 🧹 🏁

If you’re like me and grew up with games like Ivan “Ironman” Stewart’s Super Off Road, Super Sprint, or even Micro Machines then you’ll be totally bewitched by WitchCup1276. Race (or rage) against three other witches, avoiding low-flying brooms and jinxes thrown your way.

Is a witch really a witch if they can’t cast a simple spell to make themselves pass through solid objects? Give yourself a flying chance by editing witches.js line 876 so that you can do just that.

- let hitObstacle = hitsAnything(this.game, newP, this.isPlayer);
+ let hitObstacle = false;
if(!hitObstacle) {
    this.p = newP;
    this.rot += r;
    if(r != 0) { 
        this.speed *= 0.5;
        this.acc *= 0.1; 
    }
    return true; 
} else {
    addCollisionParticle(this.game, this.p, 1);
}

Dante 😈 🔥

You’ll have a devil of a good time switching between top-down and first-person views guiding Dante past obstacles and delivering lost souls to where they belong.

Fort Knight 🗡️ 💀

Fort Knight takes place in a land of skeletons and goblins, where you’ll need to guide the hero across 10 levels. There’s no storm nor 99 other players to worry about, so this should be a more straightforward “battle royale.”

If you look in hero.js lines 22 - 39 you’ll see a whole bunch of powerups set to default values. isGad sounds an awful like lot like isGod, which reminds me of “god mode.” Setting this to true will make things a tad easier.

  // PowerUps
  this.powPlus=0;
  this.defence=1;
  this.speed=0;
  this.attackTime=0;
  this.renderPower=false;
  this.facing=lastDir;
  this.attackOver=false;
  this.dance=false;
  this.axePower=1;
  this.hammerPower=1;
  this.castleDst=0;
- this.isGad = false;
+ this.isGad = true;

I hope you have a boo-tiful time checking these out (version control pun intended). Did you get a high score or create a fun fork? Share your screenshots with us on TwitterX!

Written by

Lee Reilly

Lee Reilly

@leereilly

Developer / Marketing / Community at GitHub. Twitter: https://twitter.com/leereilly.

Related posts

An illustration of two octocats repairing a robot.

Hotkeys and Wikis

Hey everyone, welcome to GitHub. Keep your feedreader pointed here for daily updates on new features, bug fixes, and general gitbauchery. First up: we just enabled hotkeys for trees and…

An illustration of two octocats repairing a robot.

The Blog Arrives

The blog is finally here. This is where we’re gonna drop all sorts of Git and GitHub related eggs of knowledge: new features, upcoming features, bug fixes, etc etc. Also,…

An illustration of two octocats repairing a robot.

One Thousand Strong

The first repository in the production db was created October 29th. The first private beta repository was created January 12th. The 1,000th repository was created today, Feburary 25th. (And yeah,…