
In this video (objectives)...
Kaan welcomes you to the course and shows you some of the games you will be creating.
In this video (objectives)...
Let’s learn how to install the Unreal Engine.
In this lecture you will learn how to navigate the interface of the editor.
In this lecture you will learn how to place down and modify actors.
In this lecture you will learn what a compiler and a source code editor is.
Let’s learn how to install Visual Studio on a PC.
Let’s learn how to install XCode on a Mac.
Let’s learn how to install XCode on a Mac.
In this lecture you will learn how to compile a fresh Unreal project with Visual Studio.
In this lecture you will learn how to compile a fresh Unreal project with XCode.
We overview what we want from our game and what concepts we will cover.
Let’s create a new project and a test level.
Let’s learn how to use geometry brushes in order to create complex shapes.
In this lecture we will create our first C++ Actor class and learn about the BeginPlay function.
Let’s learn how to compile our code without exiting the editor.
Let’s learn what is a variable and the different data types.
In this lecture we will learn how to log our variables using UE_LOG.
In this lecture we will learn the basic arithmetic math operators.
Let’s learn the order operators are processed in expressions.
In this lecture we will learn about variables that belong to a class.
Let’s learn how to use structs and set the location of our moving platform actor.
In this lecture we will learn how to set the location of an actor from C++.
Let’s learn how to do operations over multiple frames using the Tick function.
Let’s learn how to write comments in C++.
In this lecture we will learn how to get the location of an actor in code.
In this lecture we will learn how to make our code frame rate independent by using delta time.
Let’s learn how to do number operations on structs.
Let’s do a deep dive on how functions work in C++.
Parameters (or arguments) are input to a function, let’s learn how to use them!
Just like member variables we can place a function inside of a class, this is called a member function.
A class is a recipe, we use this recipe to create an instance.
Let’s learn how to create a blueprint child class from our C++ class.
Some functions belong to a class and not an instance, we can access them with the scope resolution operator.
Let’s learn how to run code based on a boolean value with if statements and make our platform go backwards.
Our movement code is overshooting by a very small number, let’s talk about this issue.
In this lecture we will bulletproof our movement code by correcting the overshoot.
In this lecture we will learn how to return a value from a function.
Let’s learn how to rotate an actor from C++ and create a new type of platform!
Time to make things look nice! Let’s learn how to import assets from the FAB store and start decorating our level.
Let’s create some good looking platforms using our new assets.
Let’s learn how to customize player movement before we design our level.
In this lecture we will use everything we created so far to design an awesome level!
Let’s learn how to package the game so that you can share it with the world!
Wrapping up the Obstacle Assault section with some final thoughts.
In this video (objectives)...
We overview what we want from our game and what concepts we will cover.
In this video (objectives)...
Let’s create a new project and learn how to create a level from scratch.
In this video (objectives)...
Let’s learn how to setup the lighting for an empty level.
In this video (objectives)...
In this lecture we will create the test area using geometry brushes and materials.
In this video (objectives)...
Let’s create a child blueprint from the FPS character blueprint and learn about the game mode actor.
In this video (objectives)...
In this lecture we will learn about inheritance and composition and their differences.
In this video (objectives)...
Let’s create a C++ actor component that is going to move actors.
In this video (objectives)...
In this lecture we will learn about pointers in C++.
In this video (objectives)...
Let’s put our pointer knowledge into practice with some examples.
In this video (objectives)...
In this lecture we will learn how to access the owner of a component in C++.
In this video (objectives)...
Let’s learn how to use #include directives and the FMath library function VInterpConstantTo.
We will continue improving the movement code and make the door go back when ShouldMove is false.
Let’s check if the target location is reached using the Equals function of the FVector struct.
Let’s learn how to use the logical not operator and simplify the if condition,
In this lecture we will take a look at the journey our C++ code takes when we compile it.
Let’s create a new component that is going to be in charge of triggering the mover component.
In this video (objectives)...
In this lecture we will learn what a constructor is and how to use it.
In this video (objectives)...
Let’s get a reference to the Mover component from the Trigger component.
In this video (objectives)...
Delegates are used for communication between objects in C++. Let’s learn how to use them to detect the player from the trigger.
Unreal’s tagging system let’s us add a custom string to actors and use that in our code.
In this video (objectives)...
Let’s learn how to use the logical and operator in order to create a more concise boolean condition.
In this video (objectives)...
In this lecture we will refactor our code and create the Trigger function.
In this video (objectives)...
Let’s learn about public and private access modifiers and create a getter and setter function for ShouldMove.
In this video (objectives)...
Let’s keep count of how many actors are on the pressure plate and only deactivate it when there is zero left.
In this video (objectives)...
Time to create a blueprint for the pressure plate! We will also learn how to create a pressure plate that moves.
In this video (objectives)...
In this lecture we will create the Collectible Item and learn how to add a tag in C++.
In this video (objectives)...
Let’s create a C++ class for the lock actor and learn how to create components in code.
In this video (objectives)...
Let’s create a lock blueprint and set up our C++ components.
In this video (objectives)...
This lecture is an introduction to the collision system of Unreal.
Let’s learn how to set the visibility of a mesh from C++ and create the function that is going to activate the lock.
In this lecture we will learn about the input action and input mapping context asset types.
Let’s learn how the input assets are used within the C++ code.
In this video (objectives)...
In this lecture we will learn about line and shape tracing and create a custom trace channel.
In this video (objectives)...
Every Unreal game has a special object called the world, we need to learn how to use it in order to do a shape trace.
In this video (objectives)...
Let’s calculate the start and end points of our shape trace.
In this video (objectives)...
The shape trace function requires a collision shape, let’s learn how to create one and draw it in the game world.
A reference is similar to a pointer but with some differences, let’s how to use learn them.
In C++ there are two ways of passing an argument to a function, pass by value and pass by reference. In this lecture we will learn the difference.
Let’s pass all the arguments and make the SweepSingleByChannel function call.
Let’s learn how to use the else if statement to create a stricter if statement.
Let’s learn how to cast a variable into another type.
In this video (objectives)...
In this lecture we will learn how to use an array in order to store multiple values in a single variable.
Let’s remove the item from our inventory array and place it in the lock.
If we interact with a lock actor that already has an item let’s take it and put it back in our inventory.
Let’s import the dungeon assets and start working on the main level.
Let’s learn how to make certain actors stand out using spot lights.
Let’s create a secret wall that is unlocked with a gargoyle statue.
Let’s create the final puzzle that is going to unlock the dungeon exit.
In this video (objectives)...
Wrapping up the Dungeon Escape section with some final thoughts.
In this video (objectives)...
We overview what we want from our game and what concepts we will cover.
In this video (objectives)...
Let’s open up the starter project and take a look at its contents.
In this video (objectives)...
In this lecture we will create the base pawn class and set its components up.
In this video (objectives)...
Let’s create a child Tank class from the Base Pawn.
In this video (objectives)...
In this lecture we will learn how to use the camera and spring arm components while setting up the tank blueprint.
In this video (objectives)...
Game mode is an actor used to govern the rules of the game, we will use it a lot in this section.
In this video (objectives)...
In this lecture we will start setting up the input system and create the input mapping context.
In this video (objectives)...
Let’s learn how to declare a variable in an if statement condition.
In this video (objectives)...
Let’s learn how to forward declare variables in C++.
Hooking up the input for the tank movement with the W and S keys.
Inputs have the ability to send a value to the C++ function they are bound to, let’s learn how to use a float type.
In this video (objectives)...
In this lecture we will learn how to move an actor by using the AddActorLocalOffset function.
We can use the AddActorLocalRotation function to rotate an actor in local space.
Let’s learn how to perform a line cast from the mouse cursor position to the 3D game world.
In this video (objectives)...
Let’s make the tank’s turret rotate toward the mouse cursor so that we can control our aim.
In this video (objectives)...
In this lecture we will create the enemy tower C++ and blueprint class.
In this video (objectives)...
Let’s learn how to get an array filled with all of the actors of a certain class.
In this video (objectives)...
Loop are a vital part of programming, let’s learn how to use them!
In this video (objectives)...
We can use the loop index variable to loop over the elements in an array.
In this video (objectives)...
Let’s make the enemy towers rotate towards the player when it’s inside their reach.
In this video (objectives)...
Let’s make the enemy towers rotate towards the player when it’s inside their reach.
In this video (objectives)...
Using timers we can create gameplay logic that happens over a certain amount of seconds.
In this video (objectives)...
In this lecture we will create the projectile class and learn how to spawn actors.
In this video (objectives)...
Unreal has a movement component specifically made for making a projectile move, let’s learn how to use it!
In this video (objectives)...
Let’s set the owner of the spawned projectile and learn more about the this keyword in C++.
In this video (objectives)...
Actors broadcast a hit event when they block another actor, we can bind a function to this in order to do something in response.
In this video (objectives)...
In this lecture we will create the actor component that is going to manage the hit points of our pawns.
In this video (objectives)...
Let’s learn how to use the ApplyDamage function.
In this video (objectives)...
In this lecture we will learn how the OnTakeAnyDamage delegate works.
In this video (objectives)...
Let’s implement what is going to happen when a pawns health goes below zero.
In this video (objectives)...
In this lecture we will do a deep dive on how the Super keyword works.
Let’s implement the code to disable the tank once it is dead.
We can show or hide the mouse cursor and change how it looks from the player controller.
The ternary operator let’s us create an if else statement in a single line, let’s use it to set the game over booleans.
Let’s learn how to use the OpenLevel function in order to restart the current level.
In this lecture we will learn about the game instance actor and how we can use it to keep track of levels.
In this video (objectives)...
Let’s write the functions that are going to manage the levels in the game instance.
In this video (objectives)...
In this lecture we will setup a countdown timer at the beginning before we can start playing.
In this video (objectives)...
Let’s learn the basics of the Unreal’s UI system by creating a Widget C++ class and blueprint.
In this video (objectives)...
In this lecture we will create a user widget C++ class so that we can set the text blocks text from code.
In this video (objectives)...
Let’s learn how to setup and use our widget in the game mode class.
In this video (objectives)...
In this lecture we will learn how to spawn a particle emitter.
In this video (objectives)...
Let’s learn how to play a sound effect in C++.
In this video (objectives)...
Let’s learn how to setup and play camera shake effects.
In this video (objectives)...
Let’s design 3 awesome levels for Battle Blaster!
In this video (objectives)...
Wrapping up the Battle Blaster section with some final thoughts.
We overview what we want from our game and what concepts we will cover.
Let’s create a new project and setup the test level.
In this lecture we will import the assets for our game.
Let’s understand how the third person template works.
In this lecture we will learn how Vector2D input values work and understand the movement code.
Let’s learn how looking around is implemented using mouse input.
In this video (objectives)...
In this lecture we will create a child blueprint class for the player and tweak some settings.
In this video (objectives)...
Let’s learn how skeletal animations work in Unreal.
In this video (objectives)...
In this lecture we will create our own animation blueprint and learn how to use it.
In this video (objectives)...
Blend spaces lets us blend animations together using variables, let’s learn how to use them!
In this video (objectives)...
Let’s connect the speed of our character to the blend space.
In this video (objectives)...
In this lecture we will get the inverse vector of the characters transform in order to get the angle for the blend space.
Let’s learn how to use a state machine in order to create better transitions between animations.
In this lecture we will determine if the player is in the air and use that as the transition rule for our state machine.
Let’s make our character aim up and down using an aim offset.
In this lecture we will create a HUD widget and create a crosshair.
Let’s setup the input for shooting bullets.
In this lecture we will create the C++ class and blueprint for our gun.
In this video (objectives)...
Let’s spawn the gun and position it to the hand of the player mesh.
In this video (objectives)...
Let’s learn how to attach the gun to the hand of the player mesh using a socket.
In this video (objectives)...
In this lecture we will learn how to get the players view point location and visualize it in the game world.
In this video (objectives)...
For this game we are going to use a line trace to simulate a bullet shot.
In this video (objectives)...
Let’s spice things up with some particle effects for the gun!
In this video (objectives)...
In this lecture we will apply damage to the actor that was hit by the line trace.
In this video (objectives)...
Let’s implement a basic health system for the shooter characters.
In this video (objectives)...
Let’s create a new state machine for the alive and dead states of the player, and play the death animation.
We can create alternative versions of a function using function overloading in C++.
In this video (objectives)...
Let’s uncover the mysterious macros of the C++ language!
In this video (objectives)...
Let’s learn how the protected access modifier works in C++.
In this video (objectives)...
In this lecture we will cover how the virtual and override keywords work in C++.
In this video (objectives)...
In this lecture we will learn about the AI controller class and set the enemies focus on the player.
In this video (objectives)...
Let’s learn how to setup enemy AI movement using a navigation mesh actor.
In this video (objectives)...
Let’s learn how to check the line of sight of the AI to create a realistic enemy.
In this video (objectives)...
The AI controller functions are cool but the real power of Unreal’s AI is in behavior trees!
In this video (objectives)...
Let’s write a function to set up and start the enemy ai behavior tree.
In this video (objectives)...
In this lecture we will learn how to use the for loop in the C++ language.
In this video (objectives)...
Let’s learn how to set a blackboard key from C++.
In this video (objectives)...
In this lecture we will learn a short hand way of writing a for loop, the range based for.
Let’s learn how the sequence and wait nodes do so that we can make the enemy move back and forth.
Selector Node
Let’s learn how to use decorators to have conditions on our nodes.
A service is a piece of logic that is on the node and is updated at a given interval.
Let’s set the PlayerLocation in the service if we have line of sight to the player character.
Let’s create a service that will update the last known player location.
In this lecture we will learn how to create our own custom C++ behavior tree task.
Let’s create a custom task for shooting a bullet and learn how to access the Pawn from a BTTask.
In this lecture we will create the health bar in the HUD widget blueprint.
In this lecture we will learn how to play a sound using the sound cue asset.
In this video (objectives)...
Let’s import the environment assets and design the main level of the game!
Unreal Engine 5 C++ Developer - Updated for Unreal 5.6!
Ready to make games in the amazing world of Unreal Engine 5.6?
This critically acclaimed Unreal Engine course was created in collaboration with Epic Games and has been fully refreshed to take advantage of the latest tools, workflows and game dev techniques.
Unreal Engine is the free-to-use powerhouse behind everything from AAA blockbusters to indie hits. Yes - it’s massive. But in this course, we break it down step-by-step so you can tame the beast and start creating your own games.
No prior experience? No problem. We start from scratch, guiding you from opening Unreal Engine for the first time to building your own playable games in C++.
What You’ll Build
You’ll create four complete Unreal Engine 5.6 games, each introducing new tools, techniques and game genres:
Obstacle Assault - A fast-paced platformer that introduces core C++ movement and game logic.
Dungeon Escape - A first-person puzzle adventure where you’ll master line tracing, the enhanced input system, C++ delegates, components, pressure plates, item pickups, dynamic lighting and more.
Battle Blaster - A tank battler where you’ll program vehicle controls, shoot projectiles, create enemies that fire back and build a working HUD with Unreal’s UI tools.
Shooter Sam - A third-person shooter featuring advanced AI, particle effects and animation blueprints to polish your gameplay to a professional standard.
Each project builds on the last - giving you a strong foundation in both Unreal Engine 5 and C++, while challenging you to think like a game developer.
Why Learn Unreal C++?
“Any serious game programmer needs to know C++.” - Jason Gregory, Lead Programmer at Naughty Dog (Uncharted, The Last of Us)
This course teaches you C++ from scratch while building real, playable projects - so you’re not just learning syntax, you’re mastering the language that powers the world’s biggest games.
More Than Just Tutorials
Project-based learning - build, test, and polish real games as you learn.
Best-in-class support - from both instructors and a thriving student community.
All resources included - code, assets, diagrams, and more to keep you moving.
Whether you dream of working in AAA, launching your own indie hit, or just making games for fun, this is where your Unreal C++ journey begins.
Note: We’ve rebuilt this course to bring you our best teaching style yet — smoother, slicker, and packed with fresh content. You’ll find both the new material and the original course included. Once the remaster is complete, the original content will be moved to a separate archive course, which you’ll continue to have full access to.