1.3.0

[1.3.0] - 2025-09-09

Added

  • NavMesh placement policy on SpawnEntry:

  • Require – spawn only when a valid NavMesh position exists (otherwise defer and retry).

  • Prefer – spawn immediately; agent enables when NavMesh becomes available.

  • Ignore – place without NavMesh restrictions.

  • Deferred placement queue in RuntimeSpawner for Require policy (with exponential backoff).

  • Spawn Hints system:

  • EnemySpawnHintPoint components act as authored spawn anchors with per-hint rules:

  • minPlayerDist, maxPlayerDist, denyLineOfSight, requireNavMesh, overrideAreaMask, tags.

  • SpawnHintSettings asset controls global behavior:

  • hintOnly, cellSize, waveSearchPadding, regionSearchPadding, globalSearchFraction, navSampleMaxDist, losBlockMask, reservationSeconds, preferScopedFirst, maxHintAttempts, ignoreGlobalMinDistance, debugLogs.

  • Spatial registry with soft reservations to avoid piling spawns on one hint.

  • Tag matching: WaveSpawnPoint.AnchorTags flow through to spawns so waves can target hints with matching tags first.

Changed

  • SpawnExecutor now honors NavMeshPlacementPolicy:

  • Uses NavMeshUtil.TryProject for Require; enqueues deferred jobs on failure.

  • Adds/uses NavMeshReadyEnabler for Prefer to enable agents when NavMesh is ready.

  • SpawnLocator integrates Spawn Hints:

  • Tries hints first (and respects hintOnly), then falls back to previous sampling logic.

  • Supports wave/region/global search radii and LOS checks.

  • Emits debug rays/logs when debugLogs is enabled in settings.

Fixed

  • Newly created Spawn Hint Settings assets from the inspector are now auto-assigned to the spawner field (no manual drag required).

  • Added one-time warnings for misconfigured hints:

  • Hint MinPlayerDistance >= MaxPlayerDistance.

  • Global MinSpawnRange exceeds hint MaxPlayerDistance (unless ignoreGlobalMinDistance is enabled).

Notes

  • Enabling Hint Only means no spawn will occur unless a qualifying hint is found (by design).

  • If using global MinSpawnRange, ensure it doesn’t exceed your hints’ MaxPlayerDistance, or enable Ignore Global Min Distance in SpawnHintSettings.

Last updated