# Princeton TD

A browser tower defense game set at Princeton, with 26 levels.

Card 17 of 26 in Kevin Liu's collection. 2025. Game and Data.

- Live: https://ptd.quest/
- Source: https://github.com/Kevin-Liu-01/Princeton-Tower-Defense
- Inks: 2
- Health 318, attack 121, defence 109, speed 102

## The numbers

- **291 commits**. Receipt: `git rev-list --count a109b8424`
- **12 GitHub stars**. Receipt: `gh api repos/Kevin-Liu-01/Princeton-Tower-Defense --jq .stargazers_count (2026-10-30)`
- **6 check files**. Receipt: `gh api repos/Kevin-Liu-01/Princeton-Tower-Defense/git/trees/a109b8424?recursive=1 | grep -cE <glob>`
- **3.46 commits per active day**. Receipt: `291 commits over 84 distinct commit dates, 2025-12-31 to 2026-10-16`

## Trait

**Waves Are Data**. Enemy waves are fixed lists, so its moves that hit more than once land every hit. Receipt: `Princeton-Tower-Defense@e76bdf8:src/app/constants/waves.ts:1-15`

## Moves

- Missile Battery hits for 100, 90% of the time and goes first. The Palmer Mortar’s final upgrade can be a six-pod guided launcher that fires barrages, aimed automatically or by hand. Receipt: `Princeton-Tower-Defense@e76bdf8:README.md:225; src/app/constants/towers.ts:175, 180-185`
- Wave Schedule hits for 45 three times. The first level, Poe Field, opens with three timed enemy groups, each with a set count and spacing. Receipt: `Princeton-Tower-Defense@e76bdf8:src/app/constants/waves.ts:21-27; src/app/constants/maps.ts:972-979`
- Cached Map raises a 40% barrier. Terrain and paths are drawn once and kept until you zoom, so each frame redraws only towers, enemies and effects. Receipt: `Princeton-Tower-Defense@e76bdf8:README.md:28, 195-201`
- Boss Wave hits for 145, 80% of the time. Sandbox mode is an endless arena for testing tower builds, and every fifth round sends a boss. Receipt: `Princeton-Tower-Defense@e76bdf8:README.md:255`

Facts pinned at commit a109b8424 on 2026-10-16.

Back to every card: https://www.kevinliu.studio/
