Game jam prototype built in Godot 4 for the theme: Invincibility.
The player does not directly control heroes.
Instead, you control a single transferable Halo (invincibility) and make fast triage decisions under pressure.
-
Switching Invincibility
- Only one hero can have the Halo at a time.
- Switching is instant (
1,2,3, or click a hero).
-
Pressure System
- Multiple enemies threaten different heroes at once.
- Waves escalate in density and speed.
- You cannot save everyone perfectly in later waves.
-
Light Synergy (No Combo Overload)
- Knight benefits as a control frontliner.
- Mage benefits with burst damage.
- Rogue benefits with mobility and clutch cleanup.
- Enemies spawn and spread threat across heroes.
- Player switches Halo to prevent critical deaths.
- Heroes auto-act by role while player manages risk.
- Wave pressure escalates.
- Survive, then repeat on the next harder wave.
When only one hero remains, the Halo becomes unstable:
- Halo builds heat while active.
- At higher heat it can flicker.
- At max heat it overloads (temporary no-invincibility window).
- Player can manually vent by toggling Halo off/on (same hero key or click).
This keeps the endgame tense instead of becoming unwinnable or endless.
1= Send Halo to Knight2= Send Halo to Mage3= Send Halo to RogueLeft Click= Send Halo to nearest clicked heroRorEnter= Restart after wipe
- Knight: tanky, short-range, frontline pressure and pull utility when Haloed.
- Mage: fragile, ranged, high burst while Haloed.
- Rogue: fast responder, helps stabilize dangerous situations and clutch picks.
- Swarm: constant close-range pressure.
- Ranged: spacing pressure, punishes bad positioning.
- Charger: burst threat windows.
- Open this folder in Godot 4.
- Run the project (main scene is
scenes/Main.tscn).
project.godot- Godot project configscenes/Main.tscn- Main arena scenescripts/Main.gd- Core loop, waves, halo switching, last standscripts/Hero.gd- Hero behaviors and role logicscripts/Enemy.gd- Enemy AI and attack behavior
- This is a gameplay-first prototype with simple placeholder visuals.
- Balance values are intentionally easy to tune in scripts during playtests.