> For the complete documentation index, see [llms.txt](https://denvzla-estudio.gitbook.io/advanced-ai-spawn-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://denvzla-estudio.gitbook.io/advanced-ai-spawn-system/tutorial-wave-spawner.md).

# Tutorial Wave Spawner

{% hint style="info" %}
Remember the AI to spawn should not be in the scene since the Advanced AI Spawn System will take care of that, spawning it in the scene!
{% endhint %}

{% hint style="info" %}
[**First you must add Advanced Spawn System to your scene, (Click Here, follow these)** ](/advanced-ai-spawn-system/advanced-ai-spawn-system/how-to-start.md)
{% endhint %}

{% hint style="info" %}
add the AI or Object to generate in the first tab.
{% endhint %}

{% hint style="info" %}
**Wave progression requires the configured AI deaths to be reported through AIManager.OnDead(). No Invector or Animal Controller package is required. If the first wave remains active, verify death notifications and the remaining population before checking the next wave.**
{% endhint %}

**Necessary configurations for the generator to work:**

1. **Spawn Position**
2. **Player Tag and Detection radius**
3. **Generate IA/Object On Player Radius Detection**

![](https://2730180554-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeH9OgJuv3EyxNzlVQUh1%2Fuploads%2FNlD8Xvmy5P20vqOfMa74%2F24.png?alt=media\&token=f07fd152-d463-4de0-9a80-ee1f64de9c93)

## Wave Generator&#x20;

A new tab is created, here you need to add the number of waves.&#x20;

You can assign the text objects to show the player the wave number and the time, if you wish you can leave it empty!

![](https://2730180554-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeH9OgJuv3EyxNzlVQUh1%2Fuploads%2FCBTDlor2EGP7L1bIQ8U4%2F7.png?alt=media\&token=5cbf9e04-5e72-40c1-a9e1-9a89a9a27220)

**Events**&#x20;

In the events tab, you have new ones, when the wave starts and when it ends, this way you can make another one start at the end of a wave! how do i do it? just create another configuration and disable it, then in the event of ending the first wave make the second wave activate!, you can create multiple configurations, just have a little imagination, everything is possible!

[You don't know what events are, watch this video I found for you!](https://www.youtube.com/watch?v=TWxXD-UpvSg)

### Version 4.0 — waves, UI and events

Keep the existing setup images and event instructions. Configure a nonempty wave list, valid GroupAI entries and any intended per-wave population overrides. Configure the first delay separately from subsequent intervals. Terrain/Biome uses continuous spawning rather than this Waves workflow.

TextTime and TextWave accept optional UnityEngine.UI.Text references. UGUI 2.5.0 is an official dependency even when these references are empty; TMP text components are not interchangeable with these legacy fields.

AIManager.OnDead() should be called once per lifecycle. Disabling a GameObject alone does not notify the spawner of a death. In Pooling, allow the five-scaled-second retirement before reuse; also check the spawn timer and custom component reset.

The existing onWaveStart and onWaveEnd UnityEvents are retained. Spawn callbacks represent generator operations, not a guaranteed callback for each object in a batch. Cross-spawner event ordering is not guaranteed. Timers use scaled elapsed time and pause at timeScale zero.

For NavMesh-based enemies and bosses, validate every assigned group and Agent Type against the selected surface. A completed bake does not guarantee all wave spawn positions are reachable.
