Spawn & Wave System

v1.1.0

Support

Frequently asked questions, changelog, and contact information.

Frequently Asked Questions

Does SWS require Game Creator 2?

Yes, GC2 Core is required. The Stats module is also required — SpawnedEntityTracker references GC2 Stats attributes directly for health tracking and stat overrides.

Can I use SWS without coding?

Absolutely! All functionality is accessible through Visual Scripting. There are 20 Instructions, 12 Conditions, and 13 Events available.

How do I make enemies follow a path?

Add a PathFollower component to your enemy prefab and reference a PathAnchor at spawn time using the 'Set Entity Path' instruction or SpawnPoint's Path reference.

Can waves have multiple enemy types?

Yes! Add multiple SpawnAllocations to your WaveDefinition. Each allocation specifies a SpawnProfile and count.

How do I make endless waves get harder?

Use Endless mode in your WaveSequence and enable 'Scale On Loop'. Configure the Spawn Multiplier (more enemies) and Stat Multiplier (stronger enemies) for each loop.

Does SWS support multiplayer?

SWS handles local spawning. For multiplayer, sync spawn requests through your network layer. The SpawnManager exposes events you can hook into for network synchronization.

Can I spawn without waves?

Yes! Use SpawnManager.Spawn() directly via code, or use the 'Spawn From Profile' instruction. Waves are optional.

How do I limit how many enemies exist at once?

Configure 'Max Active Entities' in SpawnManagerSettings. The spawn queue will pause when this limit is reached.

Why aren't my pooled objects being reused?

Ensure 'Use Pooling' is enabled on the SpawnProfile. Also make sure entities are being despawned via SpawnedEntityTracker.Despawn() rather than directly destroyed.

Can I have branching paths?

Yes! PathAnchors support multiple 'Next Anchors' with selection modes: First, Random, or Weighted for probability-based branching.

How do I integrate with GC2 Stats for health?

Add SpawnedEntityTracker to your prefab, enable 'Use Stats Health', and specify the Health attribute name. Entities will automatically be marked defeated when health reaches 0.

Where are the Scene Generators?

Tools → Spawn Wave System → Generate Test Scenes. Options include Tower Defense, Roguelike, and Resource Respawn scenes.

Changelog

v1.1.0pending validationLoot, Bosses & Smarter Spawning

Fixed

  • SpawnPool.Return(GameObject) now returns false when the instance was destroyed instead of pooled, and true only when it was actually re-enqueued for reuse (no shipped code read the old return value, so this is not an observable behaviour change)
  • EntityRegistry.DefeatAll / DefeatAllFromWave now record the DefeatReason they were given instead of always recording Despawn — the built-in Despawn All / Abort Wave / Reset Sequence Instructions and the Wave Manager's Defeat All button now report DefeatReason.Manual
  • SpawnManager.DespawnAll() / DespawnWave(int) now copy the registry's entries into a private buffer before despawning, removing a shared-list iteration hazard

Added — Loot & Bosses

  • DropTable ScriptableObject and SpawnProfile.DropTable (null by default): independent per-entry chance rolls on DefeatReason.Death, dispatched to IDropHandler and the new GC2 event On Loot Rolled
  • Boss waves: WaveDefinition.IsBossWave + BossProfile (both required, off by default) append one extra spawn after regular allocations. New GC2 event On Boss Spawned.
  • BossHealthBarUI component and prefab — a screen-space boss bar that appears only while a boss is alive
  • EntityHealthBarUI gained an opt-in Auto Bind To Tracker flag (default off)
  • GC2 Events now total 13 (was 11 in 1.0.0): +1 for On Boss Spawned, +1 for On Loot Rolled. Instructions stay 20, Conditions stay 12.

Added — Spawning & Survivability

  • Spawn shapes: SpawnPoint gained Point (default) / Circle / Box / Sphere with Shape Radius / Shape Extents
  • Optional NavMesh validation on spawn (Validate On NavMesh, default off)
  • Stat Overrides: per-stat/attribute Flat or Percent overrides on SpawnProfile and WaveDefinition (empty by default, no effect until configured)
  • Surviving Entity Behavior on WaveDefinition: KeepAlive (default, = 1.0.0 behaviour), Despawn, or CarryOver
  • Distance despawn: Max Distance From Spawn / Max Distance From Player on SpawnProfile (0 = disabled by default), raising the previously-unused DefeatReason.OutOfBounds
  • Companion exclusion filter for SimpleEnemyChaser: ExcludeTags / IgnoreLayers (both empty by default) — fixes enemies chasing a Companion System companion instead of the player

Added — Save/Load & Tools

  • SpawnRemember: optional GC2 Memory component that persists a WaveController's sequence progression (sequence id, wave index, loop, wave state, total defeated count). Entirely opt-in.
  • "Support & Feedback" and "Rate on Asset Store" editor menu items under Window → Spawn Wave System
  • New Documentation/SWS_Documentation.md master reference — corrects the shipped PDF's stale "Stats optional" claim (Stats is a required, compile-time dependency) and the 14/12/12 Instructions/Conditions/Events counts (verified actual: 20/12/11 as of 1.0.0)

Changed

  • WaveDefinition.StatMultiplier and WaveSequence.DifficultyScaling tooltips now state plainly that both are reserved/inert (written but never read) — use Stat Overrides for difficulty scaling instead
  • SpawnAllocation.Weight, SpawnManagerSettings.EnableHighVolumeMode/HighVolumeEntityLimit documented as reserved/no effect; SpawnPointSelection.Sequential documented as "returns the first valid point, does not advance" (use RoundRobin); PathManager.AutoAssignPaths documented as not auto-subscribing to OnEntitySpawned
  • Removed six dead #if GC2_STATS blocks (the symbol is defined nowhere in the package) — no behaviour change
v1.0.12026-04-07Maintenance Release

TODO

  • TODO publisher: fill in from Asset Store release notes — no source available in this working folder
v1.0.02025-02-11Initial Release

Core Spawning System

  • SpawnManager — Central singleton with priority queue
  • SpawnPool — High-performance object pooling
  • EntityRegistry — Entity tracking with status and wave index
  • SpawnProfile — ScriptableObject for prefab configuration
  • SpawnPoint — Configurable spawn locations
  • SpawnedEntityTracker — Entity lifecycle management

Wave System

  • WaveController — Orchestration with pause/resume/skip
  • WaveSequence — Single, Loop, Endless modes
  • WaveDefinition — Spawn allocations and timing
  • WaveRuntimeState — Runtime state tracking

Path System

  • PathAnchor — Waypoints with wait times and branching
  • PathFollower — Movement with speed and rotation settings

GC2 Integration

  • 14 Visual Scripting Instructions
  • 12 Visual Scripting Conditions
  • 12 Visual Scripting Events

Editor Tools

  • WaveManagerWindow — Visual wave debugging
  • Tower Defense Scene Generator
  • Roguelike Scene Generator
  • Resource Respawn Scene Generator

Helper Components

  • SimpleTower — Basic tower targeting
  • TDEndZone — End zone detection
  • SimpleEnemyChaser — Basic enemy AI
  • Resource harvesting helpers

Support

📧 support@c-huck.com📖 Documentation💬 Discord — coming soon

This is a passion project — no 24/7 support, but I reply as quickly as I can.

FAQ, Changelog & more →
Before contacting support: Please check the FAQ above and ensure you have the latest version installed.