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: FusionPoolProvider Passed directly into StartGameArgs.ObjectProvider from a custom bootstrap.

      • Behaviour Provider: FusionPoolObjectProviderBehaviour MonoBehaviour variant attached to the same GameObject as NetworkRunner.

    • 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 IPoolAdapter when despawned

      • Deactivated 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 / maxGlobalObjectCount

      • Per-entry maxPopulation

      • Overall maxObjectCount cap

    • Ensures no global or regional flow can exceed configured limits.

  • Per-Entry Population Tracking

    • SpawnEntry.currentPopulation now 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 minSpawnRange or 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 SpawnEntry asset.

  • 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:

  • FusionFactoryAsset and PUNFactoryAsset implement IObjectFactory for 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:

  • SpawnDirector now supports Pause(), Resume(), and End() methods for runtime control and clean teardown.

  • SpecialEncounterManager adds 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 RuntimeSpawner to gracefully coordinate with network factories and their lifecycle (Begin/End parity).

  • 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

  • SpawnExecutor updated to support deterministic seed flow across spawners.

  • RegionPopulationController inspector 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 SpecialEncounterManager when 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 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.

[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