- TypeScript 90.5%
- JavaScript 6.6%
- HTML 2.9%
|
|
||
|---|---|---|
| .husky | ||
| .woodpecker | ||
| docs/images | ||
| src | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| DELIVERABLES.md | ||
| esbuild.config.mjs | ||
| eslint.config.js | ||
| index.html | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tsconfig.json | ||
Trankwebity
An interactive love letter to Tranquility, the 3D first-person abstract platformer with procedurally generated levels and reactive music. The best demonstration I can find of the original game is on YouTube.
This is a game I have very fond memories of playing as a child, and I've always been tempted to try to recreate it. Beyond being inspired by it, and as faithful a reimplementation of the orignal game as my memory allows, this is in no way affiliated with, endorsed by, or connected to TQworld, LLC, William A. Romanowski, or any original rights holders.
Screenshot from the original game. Image sourced from MobyGames.
Development
This is a TypeScript project, using pnpm. The game engine is driven by Three.js and Tone.js. It runs entirely in the browser, there is no server side component. So it should be able to live forever!
This project was developed with the assistance of Cursor, as a toy to help me learn about the application.
Setup
pnpm install
pnpm dev # dev server at http://localhost:3000
pnpm build # production bundle in dist/ (also runs in CI)
pnpm typecheck # TypeScript strict check
pnpm lint # ESLint
pnpm format # Prettier
Releases
Releases are published to Forgejo when a semver git tag is pushed (e.g. v0.0.2).
git tag v0.0.2
git push origin v0.0.2
Woodpecker runs .woodpecker/release.yml: build → tranquility-<version>.tar.gz → Forgejo release with plugin-generated sha256sum.txt. Configure a forgejo_token secret in Woodpecker (scopes: write:repository, read:misc).
Version numbering: use SemVer (MAJOR.MINOR.PATCH). While the game is pre-1.0, stay on 0.y.z — bump minor for milestone features (e.g. Phase 5 platforms → 0.5.0), patch for fixes. Pre-releases use -rc.1 suffixes (v0.5.0-rc.1); the release plugin can mark those as pre-releases when needed.
Roadmap
Implementation is organized into incremental phases. See DELIVERABLES.md for the full agent-facing roadmap with acceptance criteria.
| Phase | Status | Description |
|---|---|---|
| 0 | Done | Project bootstrap (pnpm, esbuild, TypeScript, ESLint, Prettier) |
| 1 | Done | README and deliverables documentation |
| 2 | Done | Starfield void + fixed ground platform |
| 3 | Done | Camera look + click-to-move |
| 4 | Done | Gravity + bounce physics |
| 5 | — | Platform models + placement |
| 6 | — | Spinner goal + room loop |
| 7 | — | Procedural level generation |
| 8 | — | Procedural audio |
| 9 | — | Mobile / touch input |
