Anchor & Hint Tags
Use tags to semantically steer where things spawn without hard-coding positions. Tags live in two places:
WaveSpawnPoint.AnchorTags – tags that describe what kind of placement the wave wants (e.g.,
"Flank"
,"Ambush"
).EnemySpawnHintPoint.tags – tags that describe what kind of spot this hint represents.
When a wave fires, the system tries to pick hint points whose tags overlap with the anchor’s tags.
How matching works
Scope: Tag matching is only used by wave spawns (because they have an anchor). Global/Region spawns don’t supply tags, so hints are chosen by distance/LOS/etc. only.
Logic: It’s an OR match. If any tag on the anchor is equal to any tag on the hint, it’s a match.
Case/spacing: Exact string equality, case-sensitive, no trimming.
"Flank"
≠"flank"
and"HighGround"
≠"High Ground"
.Pass order:
Prefer tag-matched hints inside the search radius.
If none qualify, try any eligible hint in range.
If still none and Hint-Only is off, fall back to sampler. If Hint-Only is on, the spawn is skipped.
Empty tags:
Anchor has no tags → the “prefer tag” pass is skipped (any hint may be used).
Hint has no tags → it won’t match the tag-preferred pass, but can still be used in the “any eligible” pass.
Authoring guidelines
Define a small vocabulary and stick to it (e.g.,
Flank
,Ambush
,HighGround
,Close
,Far
,Street
,Cave
).Be consistent in casing and spelling. Consider using constants in your team docs.
Tag intent, not location. A point behind cover might be
Flank
, a balcony might beHighGround
.Generic anchors: If a wave doesn’t care, leave Anchor Tags empty so any suitable hint can be used.
Specific anchors: Add 1–3 tags max. Too many tags can unintentionally exclude hints.
Where tags are used
Wave spawns: Anchor → preferred hint tags → placement.
Global & Region spawns: Tags are currently not used (no anchor context). Hints are still considered (if enabled) by distance/LOS/NavMesh rules.
Example tag sets
Flank engagement:
Anchor:
["Flank"]
Hints: mark spots behind cover with
Flank
.
Ambush from alleys:
Anchor:
["Ambush","Close"]
Hints: tight corners/doorways tagged
Ambush
, nearby ones alsoClose
.
Ranged pressure from above:
Anchor:
["HighGround","Far"]
Hints: balconies and rooftops with
HighGround
; distant roofs addFar
.
Biome-aware waves:
Anchor:
["Cave"]
Hints: cave interiors tagged
Cave
so waves in that area bias correctly.
Troubleshooting
“No suitable hint found” while Hint-Only is ON:
Check spelling/case of tags on anchors and hints.
Ensure the hint is within the wave’s search radius (anchor range + padding).
Verify Min/Max Player Distance on the hint vs. player position.
If needed, enable Ignore Spawner’s Global Min Range in Spawn Hint Settings.
Turn on debug logs in settings to see which rule filtered out a hint.
Hints used but not the tagged ones:
Anchor tags empty → no preference.
Tags don’t match exactly → fix casing/spacing.
Tag-matched hints failed other checks (LOS/NavMesh/reservations) → inspect logs/Gizmos.
Quick checklist
Anchor and hint tags spelled the same? (case-sensitive)
Anchor range + padding reaches the hints?
Hint’s min/max player distance compatible with your current player position?
Hint-Only vs. fallback behavior set as intended?
Debug logs enabled during setup to verify match decisions?
Last updated