A 2-hour game jam where small groups build a game using a stack that was deliberately chosen for you: Phaser 4 + TypeScript + Vite.
You are not expected to know Phaser. You are not expected to know Node. You are not expected to walk away knowing them either. The point is to experiment with what's possible when you collaborate with Claude without your usual constraints — no backend, no pipelines, no Jira — and see how far you can push it in two hours.
At T+2hr we demo by screen-share. Show whatever you built.
MVP is one tower (AWS Shield) vs one attack (a DDoS swarm of tortoises), with every stat in a data-driven config so adding the next AWS-service-vs-attack pairing is a ~10-line diff. The work splits into three parallel streams (core engine / entities & combat / UI) with disjoint file ownership and an event-bus contract between them.
Full plan lives in docs/plan/: read the overview and the shared contracts, then pick up your stream brief (core / entities / UI).
- Fork this repo on GitHub. Your group works in your fork.
- Clone your fork locally.
- Install and run:
Open http://localhost:8080. Edits hot-reload.
npm install npm run dev
- Run
claudein the repo.CLAUDE.mdand the Phaser skill pack under.claude/skills/load automatically — Claude already knows the project layout, the asset paths, and how Phaser 4 works. - Build. Push to your fork.
- At T+2hr — screen-share demo.
EU-Tort-3 — "Europe (Tortoise)", an AWS region that isn't on the status page. Tower defence: AWS services are the towers, tortoise-themed intruders are the infrastructure attacks, and the origin server at the end of the path is what you're defending.
There is no art in the repo yet. Placeholder shapes are generated at runtime in Preloader.create() (see sparkle), so nothing blocks on assets. Drop real files into public/assets/ and load them in Preloader.preload() when they exist.
Starting scenes: a start page (MainMenu), a stub gameplay scene (Game), and an end screen (GameOver).
| Name | |
|---|---|
| Gabor | gabor@primer.io |
| Danny Caulwell | danny.caulwell@primer.io |
| Adem Sabic | adem.sabic@primer.io |
| Paul Sebastian | paul.sebastian@primer.io |
| Achim Munene | achim.munene@primer.io |
| Name | |
|---|---|
| Darius | darius@primer.io |
| Boris | boris@primer.io |
| Tai Lucas | tai.lucas@primer.io |
| Francisco | francisco@primer.io |
| Dimitris | dimitris@primer.io |
| Name | |
|---|---|
| Euler | euler@primer.io |
| Zsofia Sinko | zsofia.sinko@primer.io |
| HJ | hj@primer.io |
| Salma | salma@primer.io |
| Onur Var | onur.var@primer.io |
| Command | What it does |
|---|---|
npm install |
Install dependencies (once) |
npm run dev |
Dev server on http://localhost:8080 with hot reload |
npm run build |
Production build into dist/ |
npm run typecheck |
Surface TypeScript errors Vite hides in dev |
Everything else (project layout, how to load assets, where scenes live, house rules) lives in CLAUDE.md — or just ask Claude.
Built on top of the official Phaser 4 Vite TS template. Phaser is © Phaser Studio Inc.