A clone-and-go Phaser 3 + TypeScript game starter built around a real playable platformer.
Play the live game on GitHub Pages: Jumper Live
This project is both:
- a polished platformer you can play right away
- an open-source sandbox for developers to quickly build and ship Phaser games with TypeScript
The architecture is intentionally straightforward so contributors can jump in fast.
git clone https://github.com/TorresjDev/TS-Phaser-Game-Jumper.git
cd TS-Phaser-Game-Jumper
npm install
npm startThe dev server starts on http://localhost:8081.
npm start: run the dev server on port8081npm run dev: run the default webpack dev server confignpm run build: create production build indist/npm run typecheck: run TypeScript checks with no emitnpm run lint: lint TypeScript filesnpm run lint:fix: lint and auto-fix where possiblenpm run format: check formatting with Prettiernpm run format:fix: apply Prettier formatting
- Phaser
3.90.x - TypeScript
5.9.x - Webpack
5.x - ESLint + Prettier
- GitHub Actions + GitHub Pages
src/
config/
leaderboard.ts
settings.ts
controls/
MobileControls.ts
scenes/
Boot.ts
Preloader.ts
MainMenu.ts
Leaderboard.ts
Game.ts
GameOver.ts
main.ts
public/
assets/
webpack/
config.js
config.prod.js
For a deeper walkthrough, see docs/ARCHITECTURE.md.
| Device | Action | Input |
|---|---|---|
| Desktop | Move | Left / Right arrows |
| Desktop | Move (alt) | A / D |
| Desktop | Jump | Up arrow / W / Space |
| Mobile | Move | On-screen left/right buttons |
| Mobile | Jump | On-screen jump button |
- Move with
Left/RightorA/D. - Jump with
Up,W, orSpace. - Avoid touching bombs; each hit costs one life (unless using unlimited lives mode).
- Collect coins before time runs out.
- Each coin adds
+3sto the timer. - Pause anytime to adjust edge wrap, volume, and starting lives.
- configurable lives (
1,3,5,Unlimited) - persistent best-score tracking in local storage
- edge-wrap option (toggle in Settings)
- in-game pause menu with live settings updates
- in-game pause actions (resume, restart, return to menu)
- countdown gameplay loop with time pressure
- coin collection adds
+3sper coin - local top-score leaderboard with 3-character initials entry and timestamps
- dedicated leaderboard page + quick access from game over
- adjustable volume slider in menu and pause settings
- damage feedback flash effect on bomb hit
Deployment is automated with GitHub Actions:
- push to
main - workflow builds the project
dist/is published to GitHub Pages
Important: production webpack config uses:
output.publicPath = "/TS-Phaser-Game-Jumper/"
If you fork and rename the repository, update that value in webpack/config.prod.js.
Contributions are welcome. Start with:
CONTRIBUTING.mdfor workflow and PR checksCODE_OF_CONDUCT.mdfor community expectationsSECURITY.mdfor responsible reporting
Release notes live in CHANGELOG.md.
MIT. See LICENSE.
