Okay!
That was kinda frustrating 🤨. I finally got the Creeps to spawn (yes, I'm changing the name) and they march as one! Over the last week, I've been diving into AI with some prompt engineering. With this, I've learned so much about having a proper dialogue with it. That said, here is what I finally got working!
To create a classic MOBA-style lane system, I designed each lane as a spline path inside a custom actor (BP_Lane). These splines allow creep units to smoothly follow predetermined paths toward the enemy base.
Each creep is programmed to:
Spawn at the start of the lane through after spawning through a custom spawner actor!
Follow the spline using GetLocationAtDistanceAlongSpline Blueprint node!
Progress forward based on a simple AI moveTo function!
This system gives a clean, flexible way to control lane behavior — and I can easily adjust paths right in the editor.
To enable towers to detect enemies, I used Unreal's AI Perception system, specifically the Sight sense. Each tower is controlled by an AIController that:
Detects enemy units using OnPerceptionUpdated Blueprint node!
Filters valid targets (like creeps or players) using tags!
Assigns the closest visible enemy as its current target!
This gives each tower "awareness" of nearby enemies and makes them react dynamically to creeps or player intrusions — no hardcoded triggers required.
Once a valid target is acquired, the tower:
Locks on and rotates toward the target using Find Look At Rotation
Fires projectiles at set intervals using a firing timer
Switches targets automatically when the current one dies or leaves range
This creates a responsive and aggressive tower defense system that feels alive — perfect for MOBA-style gameplay.
Now that units and towers can detect and engage each other, the next piece of the puzzle is a universal Health & Damage system — so towers can be destroyed, and creeps can take meaningful damage during lane pushes.
Stay tuned for that in the next dev log!