The campaign was too easy: a handful of un-upgraded towers stopped everything. This makes the game substantially harder across three axes. Campaign extended from 20 to 30 hand-tuned waves (endless now starts at 31). Victory messages, HUD label (via store.totalWaves synced from TOTAL_WAVES), start screen, lobby and README updated. Five new enemy types debut in later waves, each with a hand-drawn canvas look: - Brute (wave 8): fast tank hybrid, 130 HP, 2 lives - Phantom (wave 12): fast flyer with real HP, 2 lives - Scorpion (wave 14): very fast ground, 2 lives - Golem (wave 18): walking bunker, 560 HP, 3 lives - Dragon (wave 22): flying boss, 950 HP, 3 lives, gets its own top boss health bar like the boss Per-wave HP scaling steepened (1 + 0.16m + 0.025m², was 0.18m + 0.02m²): wave 10 now ~4.6x (was 4.2x), wave 20 ~13.2x (was 11.6x), wave 30 ~29x. Late waves mix the new types into heavy compositions; wave 30 is the final wall (3 bosses, 2 dragons, 4 golems, 12 scorpions). Endless waves scale all ten types with bosses every 5 and dragons from endless+2. Balance validated with the headless greedy-bot simulation: the bot (capped around tower level 5 on fixed spots) previously trivially won the campaign and now dies at wave 29 — clearing wave 30 requires evolved towers (level 6+), research bonuses and good placement. The sim docs were updated to describe this new tuning philosophy. New render smoke test (npm test): draws all ten enemy kinds through the real renderer with a stub 2D context, two frames each with slow/ DoT/flash effects active, guarding every drawEnemy code path. 55 checks green, build clean. Browser-verified: campaign starts and HUD shows "Welle x/30".
27 lines
665 B
JSON
27 lines
665 B
JSON
{
|
|
"name": "trxtd",
|
|
"private": true,
|
|
"version": "1.0.0",
|
|
"type": "module",
|
|
"scripts": {
|
|
"dev": "vite",
|
|
"server": "node server/server.mjs",
|
|
"build": "vue-tsc --noEmit && vite build",
|
|
"preview": "vite preview",
|
|
"sim": "tsx scripts/sim.mts",
|
|
"test": "node scripts/test-db.mjs && node scripts/test-auth.mjs && tsx scripts/test-render-smoke.mts"
|
|
},
|
|
"dependencies": {
|
|
"vue": "^3.5.13",
|
|
"ws": "^8.21.3"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^26.2.0",
|
|
"@types/ws": "^8.18.1",
|
|
"@vitejs/plugin-vue": "^5.2.1",
|
|
"tsx": "^4.19.2",
|
|
"typescript": "~5.7.2",
|
|
"vite": "^6.0.5",
|
|
"vue-tsc": "^2.2.0"
|
|
}
|
|
}
|