Unreal Engine C++ The Ultimate Game Developer Course
4.5 (1,335 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
9,616 students enrolled

Unreal Engine C++ The Ultimate Game Developer Course

Learn how to develop, code and package a complete video game in Unreal Engine
4.5 (1,335 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
9,616 students enrolled
Created by Stephen Ulibarri
Last updated 8/2020
English [Auto]
Current price: $139.99 Original price: $199.99 Discount: 30% off
5 hours left at this price!
30-Day Money-Back Guarantee
This course includes
  • 34.5 hours on-demand video
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • How to program in Unreal Engine with C++.
  • How to create a complete UE4 game from start to finish.
  • Those with no experience in Unreal Engine will master Unreal.
  • Combat, adventure game mechanics, platforms, game saving/loading and menu design.
  • Those already experienced in game development will further expand their skills.
  • Those who already develop in another engine such as Unity will master Unreal.
Course content
Expand all 100 lectures 34:23:05
+ Introduction to the Course
1 lecture 03:57

This intro video gives just a small sample of the many things students will learn in this course. This includes:

  • Conventions of C++ in Unreal Engine

  • Creating Objects, Actors, Pawns, and Characters

  • Scripting movement for Pawns and Characters

  • Floor switches

  • Floating platforms with interpolation

  • Hazards, bomb explosives

  • Pickups, coins and potions

  • Health bars, stamina and sprinting

  • Menu system

  • Game saving and loading

  • Level switching in game

  • Combat with melee weapons

  • Enemy behavior

  • Particles (blood, sparkles, fire) set from C++

  • Sounds played from C++

  • Force and Torque

  • Much, much more!

Preview 03:57
+ Download UE4, and Intro to the Engine
5 lectures 54:07

We download the engine and become familiar with the worldwide network of Unreal Engine developers on the Unreal Engine forums. Here, countless devs post questions about concerns and this is where you can likely find the answer to any problem you're facing on a previously answered post. If your issue hasn't been encountered before, you can post your own question!

Preview 16:26

We cover translating, scaling and rotating objects in the Unreal Engine Viewport. We cover how to enable snapping, change the snap increments, snap to the floor, and use the different widgets for these transformations as well as learn their hotkeys. This is essential before we can start programming games using C++.

Preview 08:08

We outline the different panels in the Unreal Engine editor.

Preview 09:53

The Level Blueprint gives you the opportunity to do some quick scripting/prototyping on this level-wide event graph while getting familiar with the different parts of the engine.

The Level Blueprint

We create an Actor Blueprint, add a static mesh to it, and bring it into the world. We then explore the Event Tick node in order to add an offset to the actor each frame.

Creating Blueprints
+ Intro to Unreal Engine C++
5 lectures 53:43

We refresh on some C++ topics you should understand for this course. If you're a bit rusty, don't worry! We will get plenty of practice throughout the course. If you haven't learned some of these topics, my first course on C++ teaches everything you need to know.

C++ Refresher and UE4 Hierarchy

We create a C++ class using Unreal Engine's class creation wizard. We look at the Character class and discover how to see what it's derived from.

Class Creation in Unreal Engine

We introduce the concept of Reflection and how it's used in Unreal Engine. We also cover Garbage Collection and explain why we don't need to worry about using new and delete keywords when dynamically allocating memory.

Reflection and Garbage Collection

We create the basic class UObject and look at creating simple variables and functions and expose those to Blueprints.

Creating a UObject

We discover how to use our UObject class in Blueprints, taking advantage of the reflection system and showing how our variables and functions can be used inside the Blueprint version of our C++ class.

Using UObject in Blueprints
+ The Actor Class
13 lectures 03:37:57

We step it up a notch by creating the Actor class. We see the Tick and BeginPlay functions on the C++ side.

Actors and Actor Components

We discover how vectors are used to describe position data in the world.

Position Vectors

Unreal Engine has its own container classes, each with a plethora of built-in methods we use in game development. The FVector is an important tool to have in your arsenal.

The FVector
FVector (continued)
FVector (continued)

We learn the difference between simple and complex collision and why we need simple collision to make it less computationally intensive on the machine.

Intro to Collision
Collision (continued)

Sweeping is a technique to detect overlap between meshes. We discover a way to use it.


We learn the difference between world and local space, as well as explore functions that allow us to move in both spaces.

Local vs World Offset

AddForce and AddTorque allow us to apply forces and torque respectively to objects in the world. Then we can let the physics engine do the rest!

Force and Torque

Random numbers play a part in nearly all video games. It's important to know how to generate them in Unreal Engine.

Random Numbers

FMath is a library of math functions that game developers use throughout gameplay. The sine function is an excellent way to get periodic behavior.

The Sine Function

Deleting classes can be tricky in Unreal Engine. In this video, we learn how to do it.

Deleting Classes
+ The Pawn Class
8 lectures 02:42:33

The Pawn class adds functionality that the Actor doesn't have. Pawns can be possessed by controllers and take user input.

The Pawn Class

We see how we can program movement input on a Pawn.

Pawn Movement Input
Pawn Movement Input (continued)
Pawn Movement Input (continued)

As a learning exercise, we code movement component functionality from scratch. This gives us an appreciation for what the movement component class does for us! This is only to gain an understanding of what the movement component does for us.

Pawn Movement Component
Pawn Movement Component (continued)

We have programmed movement input, now it's time to program the ability to control the camera.

Preview 14:05

There is no shortage of free assets online that we can use to learn game development. I show you some sources.

Environment Assets
+ The Character Class
9 lectures 02:57:45

In order to create a Character, we need assets (meshes, animations, materials, etc.) so we take the time to find all we need for our game.

Character Assets
Character Assets (continued)

We actually create a Character for our game, and take a look at what the ACharacter class inherits.

The Character Class
The Character Class (continued)
The Character Class (continued)
The Character Class (continued)

The Animation Blueprint is how we control the animations of the character. It acts as an interface for us to access C++ variables and allow them to drive our character's actions.

The Animation Blueprint
The Animation Blueprint (continued)
The Animation Blueprint (continued)
+ Gameplay Mechanics
17 lectures 07:50:01

One of the most common gameplay mechanics, the floor switch provides an interactive block that the player can stand on to activate doors, raise walls, or anything else in the game.

Floor Switch
Floor Switch (continued)
Floor Switch (continued)

A spawn volume can provide a way to spawn items and NPCs into the world.

Spawn Volume
Spawn Volume (continued)

Floating platforms are classic game mechanics in many games. They are must for game developers to know how to make!

Floating Platform

Pickups are present in nearly every video game. Pickups are items that exist in the world that the player can pick up to gain benefits in the game.

Pickups (continued)
Pickups (continued)

The HUD (Heads Up Display) involves all the icons, buttons and text you see in any video game. Since this is crucial to all games, we cover it here!

HUD (Heads Up Display)
HUD (continued)
HUD (continued)
HUD (continued)
HUD (continued)
HUD (continued)

The ability to draw a debug sphere is very useful when developing. We learn how to store locations into an array and draw spheres in the world for each of those locations.

Arrays and Debug Spheres
+ Combat
30 lectures 10:37:16

Combat is essential to any action game. We begin with the basics of combat and work toward a full-fledged melee system.

Attaching to Sockets

We learn how to attach a weapon to the skeleton of the character

Weapon Equipping
Weapon Equipping (continued)

Blendspaces must be changed depending on the situation. Equipping a weapon is a perfect example to learn this skill.

Switching Blendspaces

We can play animations with the use of Montages, which allow us to use C++ function calls to fire off attack animations.

Anim Montages (Attack!)
Anim Montages (continued)
Anim Montages (continued)

No combat game is complete without combat from the enemy! Here we make our enemies a bit more dangerous.

Enemy Combat
Enemy Combat (continued)
Enemy Combat (continued)
Enemy Combat (continued)

Not all games are made for mouse and keyboard. Here we learn how to map input to a console controller.

Console Controller Input

We get more involved in combat with more complex mechanics.

Combat Mechanics
Combat Mechanics (continued)
Combat Mechanics (continued)
Combat Mechanics (continued)

A smooth rotation for the character to face the enemy upon attacking is a common way games make the attack look more natural.

Interpolating to the Enemy

Usually the enemy doesn't just spawn attacks all the time in games. We learn how to randomize the attacking time for the enemy to make it look more realistic.

Enemy Attack Delay

Combat wouldn't be complete without the ability to deal and receive damage as well as death mechanics. We cover these topics here.

Damage and Death

We give the enemy a health bar so we can see its health.

Enemy Health Bar

We fine tune the death  mechanics a bit to polish things up.

Fine Tuning Character Death
Fine Tuning Character Death (continued)

We improve the pickup class so we can have a more versatile system.

Refining Pickups

We take care of any issues related to sprinting including switching to the sprinting animation at the appropriate time.

Refining Sprinting

We created an enemy class, now we can use that code to extend to different types of enemies!

Extending the Enemy Class

It's time to polish up our gameplay to give the player a smooth experience!

Refining Gameplay
Refining Gameplay (continued)

Weapon trails add that extra bit of special effects that make combat look amazing!

Weapon Trails

We improve on our SpawnVolume class by allowing it to spawn any type of item, as well as randomizing that item when spawned.

Spawn Volume Improved
+ Level Changing and Saving the Game
12 lectures 04:45:46

We learn how to change levels in game, so your game can have multiple environments!

Changing Levels in Game

No game is complete without the ability to save your progress! We cover this very important skill here.

Saving the Game

We must go about saving the weapon differently. We learn how to save all the information associated with a weapon, including sounds and particle systems.

Saving the Weapon

We learn how to create a menu that pops up when pausing the game, as well as how to disable inputs while the game is paused.

Pause Menu
Pause Menu (continued)
Pause Menu (continued)
Pause Menu (continued)
Pause Menu (continued)
Pause Menu (continued)

We put some finishing touches on the game and get ready to package!

Finishing Up

We go from a 31 GB project to just over 3 GB as we migrate only our used assets to a fresh project. We easily do this by migrating the maps and copying over the Config files as well as the C++ files. This allows us to keep the packaged project size at a minimum.

Removing All Unused Assets

We did it! We complete our game and package it into an executable file. Congratulations!!!

Packaging the Game
  • Basic understanding of C++ or a similar language (C#, Python, Java, etc.)
  • No experience in Unreal Engine needed.
  • Memory space on computer for Unreal Engine, Visual Studio or XCode, and game assets (meshes, animations, etc.)

In this series, you will learn Unreal Engine C++ programming from the basics all the way up to packaging a complete video game. You will learn all of the following and more:

  • Object, Actor, Pawn and Character creation, and the differences between these classes

  • Coding a complete character class, complete with animations and user input

  • Finding a nearly endless selection of free assets and how to download and use them for your game

  • Enemy movement and behavior

  • Combat with melee weapons

  • Picking up and equipping items

  • Damage, Hit Points and Death

  • HUD elements including Health and Stamina Bars as well as Icons

  • How to create menus, including a Pause menu

  • Saving and Loading game data even after turning off the computer or exiting the game

  • Switching levels in game

  • Floating platforms using interpolation

  • Timers for delays in game logic

  • Trigger volumes, pressure switches, and doors

  • Bombs, explosives and hazards

  • Logging and drawing spheres for debug purposes

  • Using C++ concepts applied to game development

  • Much much more!

This is a C++ course and some basic knowledge of the C++ (or a similar language) is needed. If you don't have the basics of C++ down, my first course teaches everything you need to know for this course.

Who this course is for:
  • Aspiring game developers.
  • Those wanting to enter the games industry as a game programmer.
  • Indie game developers who want to create their own games.
  • Anyone who wants a COMPLETE game in their portfolio!