Custom Mobile Tower Defense Game Development
A client arrives with a ready idea: "I want a TD like Fieldrunners, but with cats and lasers." The first problem is performance. On an old Android with 50+ enemies, native A* in Unity drops the frame to 200 ms. The second is that towers shouldn't just shoot—they need to interact through an upgrade and synergy system. Here's how we solve these problems end-to-end.
Why Tower Defense Is a Complex Genre to Develop?
TD requires simultaneous processing of dozens of enemies, each tower, animations, and effects without lag. Even harder is balance: one underestimated tower and the level becomes beatable in 10 seconds instead of 3 minutes. But the main technical pain point is pathfinding. It's not just about A*—on mobile devices with limited CPU, every millisecond counts. We've tried all methods: from NavMesh with Crowd to Flow Field. The latter shows stable 0.3 ms for 200 agents—20 times faster than A*.
Pathfinding: Approach Comparison
| Method | Speed (100 enemies) | Scalability | Implementation Complexity |
|---|---|---|---|
| A* per agent | 6–8 ms | Degrades with agent count | Low |
| NavMesh + Crowd | 2–4 ms | Medium | Medium |
| Flow Field Pathfinding | 0.3 ms | Linear | High |
We've been using Flow Field Pathfinding in production for 5 years. We compute one direction field once when the route changes (e.g., a tower placed blocking the path). Each agent reads its direction from a NativeArray<float2>—no runtime queries to the navigation mesh. In Unity, this is implemented via Job System. For agents: DOTS Entities.
Data-Driven Tower Design
Towers: TowerDefinition ScriptableObject. Fields: attackRange, attackSpeed, damage, targetingStrategy (First, Last, Strongest, Closest). Strategy Pattern: ITargetingStrategy with a single method FindTarget(List<Enemy> inRange). Want a new mode? Write one class. Upgrades: array TowerUpgrade[] in the same SO—each level contains deltas to parameters. Designers see everything in the inspector.
Visual feedback is critical: on hover or placement, we show the attack range via a LineRenderer circle. When placing a tower, we check if it fully blocks the path using Physics2D.OverlapCircleAll. This prevents bugs where enemies can't reach the finish.
How We Optimize Performance
Besides Flow Field, we use several techniques. For enemies: DOTS Entities and pooling. Each enemy is a component with NavAgent and Health. We don't create or destroy objects—just enable/disable. This eliminates GC. For effects: VFX Graph with particle buffering. Up to 500 enemies on screen at 60 FPS on mid-range devices.
For UI, we use bitmap caching and avoid redraws. All level data is stored in ScriptableObject, loaded asynchronously. Purchases and ads are initialized on the loading screen.
How We Structure the Process
- Analysis—break down mechanics of similar games, leverage team experience (10+ mobile projects completed)
- Prototype—MVP in Unity with 2 towers and 1 map
- Content pipeline—balance spreadsheets, tower configs, sprite loading
- Implementation—full cycle: UI, shop, progression, StoreKit 2 / Billing 6
- Testing—TestFlight + Firebase App Distribution
- Release—publish to App Store and Google Play
Monetization Options
| Type | Description | Tools |
|---|---|---|
| In-App Purchases | Purchase towers, skins, currency | StoreKit 2 (iOS), Billing 6 (Android) |
| Ads | Banners, rewarded videos | AdMob, Appodeal |
| Subscription | Premium ad-free access | Built-in SDKs |
Each option is individually configurable. We also implement A/B testing for monetization balance.
What's Included in Development?
- Game design document with gameplay mechanics
- C# source code with ECS architecture (DOTS)
- Designer tool (ScriptableObject + custom editor)
- Purchase integration (StoreKit 2 / Billing 6) and ads (AdMob)
- Acceptance tests on 5+ real devices
- Guide for balance and configuration
Timeline: 3 to 5 months depending on number of tower types and levels.
Guarantee and Support
Our team has 5 years of experience developing Unity games. We guarantee stable performance under 500 agents on screen. After release, 3 months of free support for bug fixes and balance tuning.
If you're looking for a team for your Tower Defense, contact us—we'll evaluate the project in 1 day. Get a consultation for your project right now.







