Summary
Keywords
Full Transcript
In this episode, we’re kicking off a brand-new mini-series focused entirely on Enemy AI — one of the most important pieces of any great Metroidvania. Smooth player movement means nothing if enemies don’t feel intelligent, readable, and fun to fight. We’ll be building two complete enemy types from the ground up: 1) A melee enemy that patrols, detects walls and cliffs, chases the player, and commits to clear, dodgeable attacks 2) A hovering imp that controls space with ranged fireballs and reactive movement Everything in this series is built on a modular state machine architecture. States are reusable, isolated, and composable — so adding new enemies doesn’t mean rewriting logic, just combining existing behaviors in new ways. On top of that, the entire system is data-driven using a Config ScriptableObject. Stats, tuning, and behavior differences are defined in data, not hard-coded values, making this system scalable, flexible, and production-ready. ⚙️ What This Series Covers: - Reusable enemy state machines (patrol, chase, attack, hover, shoot) - Clean transitions and readable enemy behavior - Shared logic across multiple enemy types - Data-driven configuration using ScriptableObjects - A foundation that scales beyond “tutorial enemies” This mini-series plugs directly into the ongoing Metroidvania project and sets the stage for combat, hitboxes, reactions, and enemy variety. 👀 Coming Up: ⚔️ Melee enemy AI — patrols, detection, and attacks 🔥 Ranged enemies — hovering movement and projectile logic ⚙️ Extending behaviors with data, not copy-paste code 🎟️ Early Access: Early access episodes are available for YouTube Members and Patreon supporters. Support the channel and get episodes early at: 👉 patreon.com/NightRunStudio
