
Introducing the course and all the topics we will cover.
In this lecture we get Godot set up and introduce the starting project files.
In this lecture we start setting up our player’s script and start learning how to use state machines.
Setting up the core player state that all our other states will build upon.
We introduce the ways that you can get help, support and contribute to the community.
Any time we change our project during a lecture we will commit that change to a public source control repository for students to access. In this video, we show you how to access that content.
Making our movement relative to the camera and making the state for falling with gravity.
Making our movement relative to the camera and making the state for falling with gravity.
Adding a new state for quickly dashing.
Finishing off the dash state by setting up timers, and removing magic numbers from our codebase.
Introducing the Animating Characters topic.
To start this topic off we will introduce how Godot handles importing 3D assets and learn to extract animations.
We look at how to make animations look and introduce the AnimationTree and setting up its state machine.
In this lecture we wrap up the last three attack animations in our AnimationTree and introduce the BlendTree for customising animations.
We look in more detail about how the playback controller for animation state machines work and start controlling it in the player’s states.
We introduce the looking_at function and exponential decay to reorient the player’s Skeleton as they move.
We add bone attachments to our skeleton to arm our player with a weapon mesh.
Using our bone attachments we trigger footstep sound effects and set up our first audio busses.
Adding a script to our weapon bone attachment so we can make our animation control an attacking shapecast.
Setting up the last two attack animations to communicate with our weapon slot.
Introducing the Combat Damage Topic.
Introducing composition and using components to reuse scripts like health components.
Making a component for having shapecasts deal damage to health components.
Setting up a simple attack that can help us test both the HealthComponent and AttackComponent.
Getting the AttackState functional so we can enter and exit attacks.
Adding extra attack states and making it possible to transition from one to the next in a chain.
Extra functionality to exit attack states prematurely by dashing.
Introducing mouse controls to orient and aim weapon attacks.
Introducing the environment and juice topic.
Using the floor and wall gridmaps to build pits into our level.
Adding a world boundary to catch players that fall off the level.
Using VoxelGI to improve level illumination and lighting.
Adding camera options to use noise to shake the camera.
Integrating the screen shake into our systems for dealing and taking damage.
Creating the HealthBar scene that can show the status of a HealthComponent in game.
Adding a second progress bar to the HealthBar to animate the change from one health value to another.
Adding animations to the health bar so it can disappear when a HealthComponent is defeated.
Doing a once over and adding in missing sound effects for dashing, damage, and attacking.
Introducing the Enemies and Navigation topic.
Creating the base scene all our enemies will inherit from.
Importing the enemy animations and creating an AnimationTree to play them.
Adding the StateMachine and creating the first EnemyWait state.
Adding a state for taking damage that will make the enemy recoil.
Adding a defeat state to the enemy so we can finally take them out with enough damage.
Creating the first variant of the enemy which will fire ranged attacks.
Finishing off the attack state and setting up the wait state to cycle through attacks.
Adding a projectile scenes the ranged enemy can fire.
Making ranged attacks able to delete themselves on collision and letting the enemy aim at the player.
Introducing the NavigationServer and using it to place the enemy randomly in the play space.
Adding a state for the enemy to navigate freely around the play space.
Making enemies able to transition between the meander, wait, and attack states.
Introducing the Gameplay Loop topic.
Adding a script for sequencing spawning the enemies in the level.
Making the scene that is the exit point to go from one level to the next.
Making the exit point able to change scene when the player walks into it.
Adding a global scene responsible for sequencing changing from one level to the next.
Reparenting the Player scene from one level to the next to preserve its state.
Building the first level for our players to explore.
Building the Second level for our players to explore.
Giving you a chance to experiment and build the final level.
Giving you a chance to experiment and build the final level.
Introducing the Taking Upgrades topic.
Creating the scene where our player will choose upgrades.
Creating the scene where our player will choose upgrades.
Adding functionality to let the UpgradeIcon improve the player’s stats directly.
Using format strings and BBCodes to add descriptions for what the upgrades will do.
Creating a new upgrade icon to increase the players weapon damage.
Creating another upgrade icon to increase the players health.
Easing the transition from taking an upgrade to loading the next level.
Storing all upgrade options in a global script so we can load them in randomly when the player visits the shop.
Introducing what we will cover in the visual effects topic.
Adding GPUParticle3D fire particles to the enemy projectiles.
Adding a scene that creates an impact when enemy attacks hit their target.
Adding a shader and CylinderMesh to make the portal look more exciting.
Adding an AnimationPlayer to the portal for when it is used to exit the level.
Adding another scrolling noise shader for the player’s dash.
Finishing off the dash shader with an AnimationPlayer.
Creating a singleton and 2D labels for showing how much damage HealthComponents take.
Finishing off damage numbers - formatting text and animating their disappearance.
Adding a variant of the dash mesh for sword attacks.
Using a tool script to make our slash shader read the state of the weapon in the WeaponSlot.
Introducing what we will cover in the finishing touches topic.
Making a variant of the enemy scene that can chase the player.
Adding another animation to the enemies AnimationTree for melee attacks.
Adding an AttackComponent that can deal damage during the enemies melee attack animation.
Finishing off the setup for the melee enemy and reintroducing ranged enemies to the levels.
Adding a component for applying knockback to bodies in combat.
Adding more functionality to the KnockbackComponent so it can be applied to enemies.
Creating another state so enemies can fall after they are knocked back into pits and off the map.
Discussing the different directions you could take the project from this point.
Love the fast, satisfying combat in games like Hades?
This course shows you how to build your own 3D hack and slash roguelike from the ground up. We're talking chained attacks, a dash you can cancel into, and hits that send enemies flying into hazards they don't get back up from.
What you'll build:
A state machine that governs your character's every move, so a light attack, a heavy attack and a dash cancel connect into one fluid chain instead of fighting each other.
Enemies with real behaviour of their own, built on that same state machine approach, some hang back and fire from range, others charge you down.
A roguelike loop with three hand-built levels in a shuffled rotation and the enemy count climbing the deeper you get.
Free upgrades between levels, picked from two random offers each time, no currency, just faster, stronger, tougher.
A run-reset system where death wipes the level counter, difficulty and upgrades clean for a fresh run.
Reusable components for health and damage shared across your whole cast, so a new enemy type never means rewriting the same logic twice.
A knockback component in the final stretch that lets you punt enemies clean into pits and hazards.
Baked VoxelGI lighting, GPUParticles fireballs and impact bursts, and shader effects you'll wire up and animate for dash trails and glowing weapon slashes.
This is for intermediate developers who already know their way around Godot and want to build something with real depth: proper state-driven combat, enemies with real behaviour, and a roguelike loop that keeps testing what they've built. If you've always loved roguelikes and want to build your own run-based progression, this is the course for you!
By the end, you'll have a complete, playable roguelike, chained combos, intelligent enemies, and a gauntlet that keeps getting harder, built entirely by you.