Skip to content

Personal Space

Overview

Personal Space is the local separation behavior. Each agent looks at nearby neighbors and adds a push away from them, with stronger force for closer neighbors.

In motion, this keeps dense crowds from collapsing into the same point. It helps the swarm read as many bodies moving together instead of one jittering mass.

This is one of the main tools for horde density. It does not decide where the swarm wants to go; it only keeps nearby bodies from occupying the same local space.

Parameter Reference

Simple Parameters

Start here: most projects only need these three

Personal Space (labelled Crowd Spacing in Simple mode)

  • Visible effect: Agents push apart locally instead of stacking.
  • Gameplay effect: Makes the swarm feel like separate bodies instead of one point mass.
  • Increase when: Almost all dense crowds.
  • Decrease when: Pure blob behavior or maximum cheapness for far-off filler swarms.
  • Pitfalls: Turning it on without enough approach pressure can make the crowd feel timid.
  • Technical effect: Adds the neighbor-separation pass. If SwarmSettings.AgentSpacingRadiusScale <= 0, the runtime skips this behavior entirely.

Spacing Strength

  • Visible effect: Higher values open the crowd and stop overlap faster.
  • Gameplay effect: More room around the player, clearer lanes, less crush pressure.
  • Increase when: Agents clump too tightly or body blocking alone is not enough.
  • Decrease when: The swarm becomes too airy or cannot maintain pressure.
  • Pitfalls: Weight 0 does not buy back the neighbor query. There is no early-out on weight, so the pass still samples neighbors for every agent it is scheduled to run on. Disable the behavior when you want the cost gone. What the pass does skip is dormant and surrendered agents, and Reduced and Cheap tier agents run it on a slower interval with a smaller sample cap.
  • Technical effect: Scales the averaged push away from sampled neighbors.

Spacing Radius

  • Visible effect: Larger values make agents react to a broader local bubble.
  • Gameplay effect: Spreads the crowd sooner and smooths dense packs.
  • Increase when: Big crowds compress before they start breathing apart.
  • Decrease when: Small packs overreact and look too sparse.
  • Pitfalls: Larger radii cost more because more grid cells are searched.
  • Technical effect: Sets how far the agent searches for neighbors and which neighbors contribute to separation.

Advanced Parameters

Power-user knobs: leave at defaults unless you have a reason

Spacing Samples

  • Visible effect: Higher values stabilize separation in dense packs.
  • Gameplay effect: Makes big swarms feel more consistent.
  • Increase when: Dense crowds show uneven spacing or directional bias.
  • Decrease when: Performance matters more than perfect spacing.
  • Pitfalls: Samples are capped in grid traversal order, not exact nearest-first order.
  • Technical effect: Caps the number of neighbors sampled per agent at Full tier. Reduced and Cheap agents get 0.6x and 0.3x of that cap.

Practical Usage Guidance

Use Personal Space on almost every profile that needs a readable dense crowd: zombies, fodder melee enemies, survivor-like mobs, and any pack where individual bodies should stay visible.

It works especially well with Approach & Press. That combination gives strong target pressure plus enough repulsion to stop center collapse.

Be careful when combining high Spacing Strength with a high Group Pull Strength, the weight inside the Hold Nearby Swarm block. One pushes outward while the other pulls inward. That can create an indecisive, vibrating crowd if both are tuned too strongly.

Gameplay Interpretation

Higher values make enemies feel bulkier and easier to distinguish. Kiting also becomes slightly easier because the swarm cannot pack into a tight area.

Lower values feel more relentless and crush-heavy, but too low turns the swarm into a visual blob and makes melee pressure harder to follow.

Quickstart: tune in this order

Tune Spacing Strength first, then Spacing Radius, then Spacing Samples only if the result is noisy in dense tests. Validate with a small pack and a large pack; this behavior changes character with density.

Agent Spacing Scale (a SwarmSettings field, just below Default Agent Radius) gates the entire behavior: if it is 0, the runtime skips Personal Space entirely regardless of profile settings. Above zero it also widens the separation radii used by body blocking, by the dormancy overlap check, and by Orbit Style, so raising it loosens the crowd in more places than this one behavior. It does not move where Approach & Press stops the front rank; that comes from Combat Standoff.