Crowd Control

Vira Games · Action · 2023

300 units fighting on screen, on a tablet with 1 GB of RAM.

12 → 30FPS at peak
300units on map
8teams
Crowd Control screenshot
Crowd Control screenshot

Frame rate read from an on-screen counter on the target device; drops traced with the Unity Profiler.

Three hundred units on a 1 GB tablet: 12 FPS became 30

Pathfinding

Crowd Control screenshot

The profiler pointed straight at NavMesh: every unit was pathfinding on its own, every frame.

I replaced per-unit logic with one shared update for the whole crowd, and let several units reuse a single path.

Pathfinding moved out of Update into a coroutine ticking roughly every 0.1 s, and a unit recalculated only after it reached its target instead of continuously.

Off-camera units lost animation, effects and mesh rendering, and units behind buildings were culled.

The last of it was solved in design rather than in code: enemies engage the player roughly one at a time, which keeps a brawl readable as well as cheap.

The game would not launch at all — and the cause was an imported texture, not the code

Memory

Crowd Control screenshot

Before the frame rate mattered, the game did not launch on the target tablet at all. It asked for more memory than the device had.

I narrowed it down with an empty scene, loading the units alone, then the map alone, to find which half carried the weight.

The Memory Profiler put the answer somewhere I had not been looking: a single oversized texture that had come in with an art import was landing in the build.

Compressing it was the whole fix. The lesson was the method, not the texture — the cost was not in the code I had been reading.

Worth calling out

I built this one end to end — gameplay, menus, progression, shop, skins, tutorial, ads and store builds. These are the parts worth naming.

The crowd
  • AI for eight teams — up to 300 units alive on the map, up to 100 on screen at once.
  • Fights paced so enemies engage the player roughly one at a time and a brawl stays readable.
  • Units recalculate a route only after reaching a target, not continuously.
The frame budget
  • One shared update for the whole crowd instead of per-unit logic; a single path reused by several units.
  • Pathfinding moved out of Update into a coroutine ticking roughly every 0.1 s.
  • Off-camera units stripped of animation, effects and mesh rendering.
  • Occlusion culling behind buildings.

More from the game

Crowd Control screenshot 1 of 1

Project facts

Year
2023
Role
Unity Developer
Team
Three-person pod — game designer, artist, me
Scope
Solo developer, concept to release
Studio
Vira Games
Released as
HC Hurricane Lab
Engine
Unity, C#
Platform
Android · Google Play and Amazon Appstore
Target device
Amazon Fire 7 · 1 GB RAM
Measured
Release build on the target tablet, on-screen counter
Teams
Eight bot teams, one shared behaviour
Path reuse
Fewer than ten units share a single route
Where to see it
Amazon Appstore ↗ · listed as Crowd Control: City Craze

Tools & techniques

NavMeshCoroutinesOcclusion cullingShared pathfinding
Davyd Sarnavskyi · Unity Developer Contact Updated August 2026
▶ PlayView CVContact