Sockless Tower Defense

A Victorian-steampunk tower defense game that runs in the browser and installs as a Progressive Web App, backed by an authoritative ASP.NET Core server that verifies every battle before awarding progression.

.NET 10 ASP.NET Core EF Core SignalR PostgreSQL React 19 TypeScript Vite PixiJS 8 Web Audio PWA OpenTelemetry Docker

Sockless Tower Defense is a Victorian-steampunk tower defense game in the tradition of Defense Grid. It runs directly in the browser and can be installed on Android and iOS as a Progressive Web App. Players defend brass power cores against waves of clockwork machines across 25 hand-designed maps, choosing from 31 towers with branching upgrade paths.

Behind the game sits an authoritative ASP.NET Core server. It owns every account, every piece of content and all player progression, and it verifies each battle before any reward is granted. The client renders and simulates the battle with PixiJS; the server decides what counts.

A Cohesive Steampunk Identity

Every screen shares one brass-and-copper visual language, from the title screen to the in-game HUD. Players sign in to a commander account, and their progress is saved to the cloud so a campaign can continue on any device.

A Cohesive Steampunk Identity Title screen with access to the campaign, operations, research, commander profile, achievements, rankings and codex

A 100-Level Campaign

The campaign runs for 100 levels across 25 maps, with a boss encounter every tenth level. Each map introduces its own mechanic, such as trains, floodgates, rotating walls, tides, lightning rods or conveyor belts, together with an interaction the player can trigger. New towers are unlocked as the campaign progresses, and each level awards up to three stars.

A 100-Level Campaign Campaign map selection showing wave counts and the tower unlocked by each level

Tactical Depth

The arsenal covers 31 towers in seven categories. Each tower has branching upgrade tiers (II A/B, III A/B and an Ultimate), synergies with neighbouring towers and five prestige ranks. They face 22 enemy archetypes, including flyers, cloaked units, burrowers, shield-bearers, healers, saboteurs, splitters and three multi-phase bosses. Placing towers reshapes the enemy route in real time, so building a maze is as important as choosing the firepower.

Tactical Depth In-game view of the Airship Dockyard, with the live enemy route and the player-triggered Cargo Drop

Operations & Replayability

Beyond the campaign, the Operations hub offers Survival, Endless Nightmare, a rotating Daily Challenge and a Weekly Event, each with its own leaderboard. There are also 25 rule-bending challenges such as Guns Only, Single Core and Air Raid. Eight difficulty presets and nine custom modifiers let players tune the difficulty, and the server calculates the reward multiplier from the final set of modifiers.

Operations & Replayability Operations hub with the Daily Challenge, Weekly Event, Survival, Endless Nightmare and challenge modes

Research Tree

A 75-node research tree spans Steam Power, Engineering, Electricity, Chemistry and further disciplines. Research points come from victories, new stars and commander promotions. Some projects depend on breakthroughs in other disciplines, and experimental towers are unlocked here.

Research Tree Research tree with cross-discipline dependencies across Steam Power, Engineering, Electricity and Chemistry

Long-Term Progression

Progression continues through 100 commander levels, which unlock perks, features and cosmetics. There are also 53 achievements that track milestones ranging from a first victory to defeating every boss, together with leaderboards and cloud saves.

Long-Term Progression Achievements screen with progress tracking and commander title rewards

Server-Authoritative, Cheat-Resistant Play

When a battle starts, the server issues an HMAC-signed session. The session fixes the level, the difficulty modifiers, research and commander bonuses, prestige ranks and the available towers. The client runs a deterministic, fixed-tick simulation whose random number generator gives bit-identical results in C# and TypeScript, and it records every player action.

When the battle ends, the server's run validator replays the economy and structure of the action log exactly, including costs, refunds, tile legality, route-sealing and upgrade order. It also places bounds on everything it cannot replay directly, such as total income, kills, bosses and elapsed wall-clock time. Stars, XP, research points, achievements and leaderboard scores are calculated only on the server. Because the simulation is deterministic, a save is simply a session plus its action log, so a battle can be resumed on any device.

A shared contract test keeps client and server in agreement: the client test suite produces a real simulated run, and the server suite must accept it unchanged. Any disagreement over costs, placement or rules fails the build.

Procedural Art & Audio

The game has no placeholder assets. Every texture, tower, enemy, sound effect and piece of music is generated at runtime with PixiJS and the Web Audio API, which keeps the download small and the art style consistent. Recorded audio can still be added through a manifest if it is needed later.

0 Stars 0 Forks