Quick answer: Verify the Trait Config includes a Mass Spawner trait, EQS spawn-location queries return valid points, and the archetype contains every fragment your processors require.

A crowd simulation using MassEntity defines a Citizen archetype. EntitySpawner asset is configured but no citizens appear in-game. The archetype is built but never instantiated.

Confirm Spawner Trait

Open Trait Config asset. Add Mass Spawn Location From EQS (or similar) trait. Reference an EQS query that returns valid points in the world.

Without a spawn trait, the spawner has no method to place entities.

EQS Validation

Open the EQS query asset. Run Editor → Debugger; visualize results in the level. Returns valid points? If not, fix the query (NavMesh location generator with appropriate filters).

Fragment Match

Processors run on archetypes whose fragments match their query. If your CitizenMovementProcessor requires:

EntityQuery.AddRequirement<FTransformFragment>(EMassFragmentAccess::ReadWrite);
EntityQuery.AddRequirement<FMovementFragment>(EMassFragmentAccess::ReadWrite);

Then the Citizen archetype must include both FTransformFragment and FMovementFragment. Missing one = processor skips, entity sits inert.

Debug Console

Mass.Debug.SetDebugCategory "Spawning"
ShowProcessors
ShowEntities

Output reveals what spawned, what didn’t. Look for “zero entities created” messages with reasons.

Subsystem Initialization

Make sure UMassSpawnerSubsystem is initialized. Default GameInstance subsystem; should auto-load. If you have a custom GameInstance, ensure it doesn’t suppress subsystem registration.

Verifying

Play. ShowEntities reports N citizens, matching expected spawn count. Visually crowd populates the city. Per-processor profiler shows work units proportional to entity count.

“Mass entities live by their traits and fragments. Missing one and the pipeline stalls without a fatal error.”

Start from the City Sample as a reference scaffold. Replace fragments incrementally; easier than building Mass from scratch.