LIGHT HANDLER

"He sees what no one else can!"

TGC GameJam 2026 submission

🚨⚠️📢❗ 🚨⚠️📢❗

Very Important - Please enable God mode for the boss so the game can finish in less than 15 minutes, as the difficulty is quite high. (Click P to go to pause menu and go the last page using Q/E keys or the mouse to find God mode).
Demo mode can help access every level without clearing other levels and Screen shaking disable option has been given in the Pause menu (Click P) and Settings (Click S). Secrets and Twist has been detailed in the sections below. 

🚨⚠️📢❗🚨⚠️📢❗

===TEAM===

Gursahib Singh

Abhishek Bhadiyadra

Shardul Kholam

Laveena Jain

Harshil Soni


===LINKS===

Source code (public, MIT license):

https://github.com/GursahibSingh07/unity-particle-system

Play in the browser: this itch.io page (HTML5 build).


===THE GAME IN SHORT===

You are the Light Handler. Monsters have overrun the city square and only you can see them. Your weapon is the EMW Machine, which fires different kinds of light. Turn its colour wheel to match the ray to the enemy, dash through danger, and hold the square through five eras. Each era also changes the rules of your machine, so the same square and the same hands have to be played a different way every time.

Five eras:

1. Golden Era : Bright sunshine, every detail. The full colour wheel:
Blue, Red and Green. Two minutes on the clock.

2. Cyberpunk Era : Dusk and neon. The Blue ray is taken away. You gain a dash.

3. Retro Era :  Dark and dull. The machine is in overdrive and the wheel locks and turns by itself. You gain a second dash and the UV lens, which reveals enemies that hide.

4. Manga Era : Black and white. Only white light is left: a ring that pushes enemies back and sends thrown things back at them.

5. Boss Era :  The Prism. Every few attacks it switches the whole square to another era, and your machine obeys that era's rules until the next switch.

Then the ending. 


===CONTROLS===

W A S D Move

Mouse Aim

Left mouse button Fire (hold for the red laser; hold and release for
the green blob)

Q / E Turn the colour wheel

F Switch mode: colour wheel, UV lens, white light

Space Dash

P Pause (opens the comic book: eras, Field Guide,
the machine, settings)

The five rays:

Blue A cone in front. Strong against swarms.

Red A laser. Strongest up close. Strong against armour.

Green A charged blob that slows what it hits and leaves a slowing pool.
Strong against fast enemies.

White A ring all round you. Pushes enemies away and turns thrown things
round. Strong against swarms and throwers.

UV A cone that reveals hidden enemies and halves their health.

The game never states these strengths during normal play. You learn them from the comic sound words that pop up on a hit: a big burst for a strong ray, a tiny grey word for a weak one.


===THE THREE THEMES===

LIGHT

Light is the weapon, and the whole combat system. The EMW Machine fires five kinds of light (blue, red, green, white and ultraviolet), each with its own shape and its own use, and each era changes which light you are allowed and how it behaves. Light is also what the ending is about (see TWIST).

COMIC

The game is a comic book. The title screen is a comic cover. Each era is a "page" drawn in a different comic style: a bright golden-age print, a neon cyberpunk page, a dull retro page, and a black-and-white manga page.  The pause screen is an open comic book you leaf through with a page-turn animation, where each era you clear is "inked" as a panel. The style of each page is not only a look: it changes how the weapon

works.

TWIST (spoilers for the ending) 

There were never any monsters. The Light Handler has schizophrenia, and it has been getting worse, which is why the world loses detail and colour from era to era. In the ending the detail comes back in plain daylight: the EMW. Machine is a pocket torch, the "monsters" were ordinary people and animals in the square (pigeons, an ice-cream vendor, a cyclist, a jogger, a man in a dark coat), and the boss was a police car. He is arrested for causing mild annoyance to the public.

 Every note in the Field Guide is written so that it is literally true of the real thing as well, and after the ending the Field Guide shows what each enemy really was. 


==SECRETS===

There are four secrets, one in each of the first four eras. Each is a hairline crack in a building wall. Only one kind of light breaks it, and it must be a ray that era allows. Breaking it drops a health upgrade worth two extra health blocks, which you keep for the rest of the run.

Golden Era North side, in the shop front left of the town hall.
Break it with Blue.

Cyberpunk Era West wall, in the bookshop, low down near the bottom-left
corner. Break it with Green.

Retro Era North side, in the shop front right of the town hall.
Break it with UV (press F for the UV lens).

Manga Era East wall, in the pharmacy, low down near the bottom-right
corner. Break it with White (stand next to the wall).


==DEMO MODE AND GOD MODE (FOR JUDGES)===

Both are in Settings. Open Settings with S on the cover, or with Esc during play (last pages of the pause book). Both are off by default and are saved in the browser.

DEMO MODE

Unlocks every era.

- On the cover, press 1 to 5 (or click an era) to start from that era, with
the upgrades of the earlier eras already owned.

- During play, open the pause book and press 1 to 5 on the Eras page to jump
to that era.

- The Field Guide also shows which rays each enemy is weak to, and the
machine's page shows which enemies each ray is strong against. Normal play
hides both.

GOD MODE

Nothing can hurt you. It can be switched on or off in the middle of an era.

Use it to see every era and the ending without risk.

Suggested for judging: play the first era normally to feel the intended difficulty, then switch on God mode or Demo mode if you want to see the rest quickly.


===HOW IT WAS MADE===

- Engine: Phaser 4 (JavaScript game framework), built with Vite and written
in TypeScript. Runs in the browser as HTML5 / WebGL.

- Fresh codebase: all game code was written during the jam, starting from an
empty Vite and Phaser project. No game templates, starter kits or
pre-existing game code were used.

- Art: every sprite and background is pixel art defined in the game's own
source code and drawn when the game starts. There are no image files.

- Music and sound: synthesised while the game runs by the game's own code,
using the browser's Web Audio API. There are no audio files.

- The repository includes unit tests and an automated browser playthrough.


===THIRD-PARTY ASSETS AND LICENSES===

No paid assets are used. The only third-party assets are three open fonts:

Pixelify Sans, by Stefie Justprince 

Used for: in-game text (HUD, captions, cover)
Source: https://fonts.google.com/specimen/Pixelify+Sans
License: SIL Open Font License 1.1

Bangers, by Vernon Adams
Used for: headings in the pause comic book
Source: https://fonts.google.com/specimen/Bangers
License: SIL Open Font License 1.1

Comic Neue, by Craig Rozynski
Used for: body text in the pause comic book
Source: https://comicneue.com/
License: SIL Open Font License 1.1

Libraries and tools:

Phaser 4 Game framework MIT https://phaser.io/

Vite Build tool MIT https://vite.dev/

TypeScript Language Apache-2.0 https://www.typescriptlang.org/

The same list is in CREDITS.md in the repository root.


===AI TOOLS DISCLOSURE===

AI tools were used and are disclosed here as the jam rules require.

- Claude (Anthropic), through Claude Code, was used to write game code, to
write the source code that defines the pixel art and synthesises the music
and sound, and to draft planning and design documents.

- No image, audio or 3D generator was used. There are no AI-generated image
or audio files in the game.

- The game concept, the three-theme design, the story and its twist, the
eras, the weapon and enemy design, and every balance and design change
(recorded as version log) came from the team.



===Readme file from Github===

# unity-particle-system

TGC GameJam 2026 Project

**Light Handler** - a top-down 2D browser game in a 32-bit console look, built with [Phaser 4](https://phaser.io/), Vite and TypeScript. You defend a city square with the EMW Machine, turning its colour wheel to match the ray to the enemy. The square is the same place in every era, but each era it is drawn with less.

All art is pixel art defined in code, weathered in code (damp, grime, posters, ivy, litter, moss) and printed on a light paper layer, and all music and sound is synthesised at runtime. There are no image or audio files.

## Controls

| Input | Action |

| --- | --- |

| W A S D | Move |

| Mouse | Aim |

| Left mouse button | Fire |

| Q / E | Turn the colour wheel |

| F | Switch mode (RGB, UV, Unprism) |

| Space | Dash |

| P | Pause: the pages, the Field Guide, Settings |

| S (on the cover) | Settings |

| Esc | Leaves fullscreen (the game never uses it) |

## Documents

- [Design](docs/DESIGN.md) - the game as it is now: eras, rays, enemies, secrets, how it is built

- [Changelog](docs/CHANGELOG.md) - the team's design notes, version by version

- [Original proposal](docs/proposal.pdf)

- [itch.io page text](submission.txt)

- [Testing, uploading and the pre-submission checklist](docs/TESTING.md)

- [Jam rules](docs/rules.md)

- [Credits and AI disclosure](CREDITS.md)

## Running the game

Requires [Node.js](https://nodejs.org/) 22 or newer.

```

npm install

npm run dev

```

Then open http://localhost:5173/. The page reloads automatically when you save a file.

| Command | What it does |

| --- | --- |

| `npm run dev` | Start the dev server |

| `npm run build` | Type-check and build the game into `dist/` |

| `npm run preview` | Serve the built `dist/` folder locally |

| `npm run typecheck` | Type-check without building |

Dev-only shortcuts (not in the built game): add `?level=3` to the URL to start at an era, `?sandbox` for a test level, `?nodamage` to be invulnerable, `?gallery2` to see every sprite, and press K to clear what is alive. Players can start from any era by turning on demo mode in Settings.

## Project layout

```

index.html          Page that hosts the game

src/main.ts         Phaser game config (size, physics, scene list)

src/scenes/         Boot, Title, Game (one era), Ending and UI (the HUD)

src/entities/       Player and monsters

src/systems/        The machine and its rays, spawning, timed eras, pathfinding, layout parsing

src/config/         Every tunable number, plus level data

src/art/            Pixel art, defined in code and drawn at startup

src/ui/             HUD, colour wheel, captions, cards, the pause book

src/audio/          Music and sound, synthesised at runtime

```

## AI disclosure

AI tools were used in making this game and are disclosed as the jam rules require: Claude (Anthropic), through Claude Code, wrote code, the code-defined pixel art and audio synthesis, and drafts of the planning documents. No image, audio or 3D generators were used. The concept, theme, story and design direction are the team's. Full details are in [CREDITS.md](CREDITS.md).

## License

[MIT](LICENSE)

Updated 14 days ago
Published 15 days ago
StatusReleased
PlatformsHTML5
AuthorGss07
GenreAction
TagsPixel Art
AI DisclosureAI Assisted, Code, Graphics, Sounds, Text