ChangeLog
The full changelog.md from the package
Changelog
All notable changes to this package will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
[1.5.1] - 2025-11-15
Added
Improved Fusion Pool Integration
Added full support for both Fusion pooling provider modes:
Core Provider:
FusionPoolProviderPassed directly intoStartGameArgs.ObjectProviderfrom a custom bootstrap.Behaviour Provider:
FusionPoolObjectProviderBehaviourMonoBehaviour variant attached to the same GameObject asNetworkRunner.
Fusion integration guide updated with examples for both approaches and guidance on when to use each.
Added stricter guarantees that pooled objects are always:
Returned to Fusion’s
IPoolAdapterwhen despawnedDeactivated before return (NavMeshAgents, animators, behaviours, etc.)
Improved debug logging and workflow tips in the Fusion Setup Guide.
Global + Per-Entry Population Enforcement
Global spawner loop now fully respects:
minGlobalObjectCount/maxGlobalObjectCountPer-entry
maxPopulationOverall
maxObjectCountcap
Ensures no global or regional flow can exceed configured limits.
Per-Entry Population Tracking
SpawnEntry.currentPopulationnow increments/decrements correctly across global, region, and wave spawns.Population is reset on Init, respecting duplicates across global/region/wave tables.
Changed
SpawnExecutor hard guards
Added early-exit checks to prevent any spawn request when:
Global cap reached
Entry cap reached
These guards run before placement resolution or pooling.
Region spawning placement
Region locator now refuses placement cleanly when
minSpawnRangeor other constraints invalidate sampling—no more falling back to region center.Default demo region spawner settings adjusted to avoid spawn-range conflicts.
Spawn locator safety
Region/global/wave sampling no longer snaps to fallback center points unless explicitly configured.
Improved use of HintOnly logic and NavMesh sampling.
Fixed
Global spawner ignoring global caps
Global flow no longer overspawns when multiple entries reference the same
SpawnEntryasset.
Local Area Spawner spawning all objects at region origin
Fixed sampling logic that caused region spawns to appear at region center when NavMesh sampling failed.
Entry null-check regression in WaveEntry loop
if (!wave)corrected to explicit null check to avoid invalid operator issues.
Pool prewarm + NavMeshAgent enable timing
Ensured prewarmed pooled objects always disable agents safely before spawn.
Notes
This patch stabilizes the full population-control pipeline across globals, regions, and waves.
Recommended for all 1.5.0 users, especially those using Fusion/PUN integrations or large multi-region maps.
[1.5.0] - 2025-11-04
Added
Optional Networking Integrations:
Photon Fusion 2.0 and Photon PUN 2 adapters now included:
FusionFactoryAssetandPUNFactoryAssetimplementIObjectFactoryfor seamless Runtime Spawner integration.Built-in support for Fusion’s IPoolAdapter bridge via
FusionPoolObjectProvider, ensuring pooled network object lifecycle.Fusion Bootstrap sample included for quick setup and testing.
PUN Bootstrap sample included for quick setup and testing.
Extended lifecycle control:
SpawnDirectornow supportsPause(),Resume(), andEnd()methods for runtime control and clean teardown.SpecialEncounterManageradds matching lifecycle APIs (Pause(),Resume(),End()), allowing dynamic session control during network or game state transitions.Full XML documentation added for all new public APIs and integrations.
Changed
Updated internal initialization logic in
RuntimeSpawnerto gracefully coordinate with network factories and their lifecycle (Begin/Endparity).Documentation and inspector help tips updated to reflect new lifecycle methods and network setup flow.
switched Samples from Built-in Renderer to URP
Fixed
Eliminated potential null references in network object factories when used without manual runner assignment.
Notes
The new Fusion and PUN integrations allow the spawner to drive networked gameplay out of the box.
Lifecycle additions (
Pause,Resume,End) improve robustness in cooperative and session-based titles — ideal for multiplayer lobbies, mission transitions, or pause menus.These changes are fully backward-compatible with 1.4.x projects.
[1.4.0] - 2025-09-27
Added
Deterministic seeding support:
RuntimeSpawner.SetGlobalSeed(int seed)enables reproducible spawn layouts.Integrates with custom RNG services for consistent world generation.
Runtime diagnostics & tools:
Play Mode buttons in inspectors to manually step/test spawns.
Improved logging for seed changes, deferred jobs, and placement results.
Lightweight NavMesh monitoring:
Auto-enabler detects when agents move off NavMesh and disables until valid again.
Inspector improvements:
Grouped headers for References / Scaling / Diagnostics.
Integrated help tips and clearer property layouts.
Changed
SpawnExecutorupdated to support deterministic seed flow across spawners.RegionPopulationControllerinspector now has runtime tools for quick play-mode testing.Default spawner setup simplified (auto-assigns hint settings, references when created).
Fixed
Missing UI reset on resurrected enemies now handled via new view/controller event hooks.
Adjusted help tip sizing in inspectors to correctly fit wrapped lines.
Prevented null reference exceptions in
SpecialEncounterManagerwhen spawner is not configured.
Notes
Deterministic seed support means that the same seed + map setup = the same spawn layout.
GPU Instancing integration is recommended for large-scale enemy swarms (external).
[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
RuntimeSpawnerfor Require policy (with exponential backoff).Spawn Hints system:
EnemySpawnHintPointcomponents act as authored spawn anchors with per-hint rules:minPlayerDist,maxPlayerDist,denyLineOfSight,requireNavMesh,overrideAreaMask,tags.SpawnHintSettingsasset 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.AnchorTagsflow through to spawns so waves can target hints with matching tags first.
Changed
SpawnExecutornow honorsNavMeshPlacementPolicy:Uses
NavMeshUtil.TryProjectfor Require; enqueues deferred jobs on failure.Adds/uses
NavMeshReadyEnablerfor Prefer to enable agents when NavMesh is ready.SpawnLocatorintegrates 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
debugLogsis 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
MinSpawnRangeexceeds hintMaxPlayerDistance(unlessignoreGlobalMinDistanceis 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 inSpawnHintSettings.
[1.2.6] - 2025-08-24
Clean up, adjust runtime spawner defaults when you create a new one in a scene
[1.2.5] - 2025-08-23
Massive refactor, improvements
New spawn director to control increasing intensity
New encounter system for specials ala left 4 dead
New diagnostics hud to visualize spawner logic
New demo scenes, content and demo controller
[1.1.0] - 2025-04-13
Major fix, cache settings, performance boost / fix
Bug fixes
[1.0.1] - 2024-04-16
Fixes for issues spotted in asset store release (related to object fields)
[1.0] - 2024-02-15
Initial project setup, structure
Last updated