Ready to make games in the amazing world of Unreal Engine 5?
This "critically-acclaimed" and "insanely successful" Unreal Engine course was created in collaboration with Epic Games.
The majority of the course has been fully updated and remastered to Unreal Engine 5. Existing students get all the new material for free.
Learn how to create and mod video games using Unreal Engine 5, even if you're a complete beginner. Unreal is a free-to-use game development engine used by AAA studios and indie developers worldwide. It is a massive and powerful beast, but we break it down step-by-step so you can tame it.
Ready to make games in the amazing world of Unreal Engine 5?
This "critically-acclaimed" and "insanely successful" Unreal Engine course was created in collaboration with Epic Games.
The majority of the course has been fully updated and remastered to Unreal Engine 5. Existing students get all the new material for free.
Learn how to create and mod video games using Unreal Engine 5, even if you're a complete beginner. Unreal is a free-to-use game development engine used by AAA studios and indie developers worldwide. It is a massive and powerful beast, but we break it down step-by-step so you can tame it.
We start super simple so no prior experience of Unreal or coding is needed. With our online tutorials, you'll be amazed at what you can achieve. We believe project-based learning is the best way to learn Unreal Engine, so you’ll create 5 Unreal games.
Already know Unreal and want to learn VR or Multiplayer? Check out our other Unreal courses, just look for the green leaf for our other world-class Unreal courses.
Learn C++, the powerful industry-standard language from scratch. By the end of the course, you'll be very confident in the basics of coding and game development, and hungry to learn more.
"Any serious game programmer needs to know C++"Jason Gregory, Lead Programmer at Naughty Dog (creators of Uncharted & The Last of Us)
Anyone who wants to learn to create games: Unreal Engine is a fantastic platform which enables you to make AAA-quality games. Furthermore, these games can be created for Windows, consoles, macOS, iOS, Android and Web from a single source.
Benefit from our world-class support from both other students, and the instructors who are on the forums regularly. Go on to build several games including a tank game, and a First Person Shooter.
You will have access to a course forum where you can discuss topics on a course-wide basis, or down to the individual video. Our thriving discussion forum will help you learn and share ideas with other students.
Get plugged into our communities of amazing developers on Facebook (nearly 20k), in our own TA-curated Community (17k views/day), and our student chat group (10k live at any one time).
Start to learn Unreal C++ now, you won't be disappointed.
In this video (objectives)…
Sam welcomes you to the course and shows you some of the games you will be creating.
In this video (objectives)…
We walk through the process of installing a version of Unreal Engine. We also get a few tips on how to follow along in this Early Access course.
In this video (objectives)…
We introduce the ways that you can get help, support and contribute to the community.
In this video (objectives)…
We create a new project in Unreal and learn about the core elements of the Unreal UI: The Viewport, World Outliner and Details pane. Then we learn to navigate the Viewport.
In this video (objectives)…
We learn that the objects in our level are “Actors”. We learn how to Translate, Rotate and Scale theses actors and add new ones. We use this to create a little platformer.
In this video (objectives)…
We learn what the Blueprint programming language is and when we would use it versus C++. We see the structure of the next couple of sections and when we might want to skip ahead.
In this video (objectives)…
Sam shares his tips on asking good questions and how to get more info to include in your question.
In this video (objectives)…
We overview what we want from our game and what concepts we will cover.
In this video (objectives)…
We create a new project using the “Starter Content” and learn to use the Content Browser to open different Maps. We then learn to open the Level Blueprint Editor from a given map.
In this video (objectives)…
A warning for anyone wanting to follow the course using UE5.1 or later.
In this video (objectives)…
We see the Blueprint Event Graph for the first time and print basic text to the screen in response to events.
In this video (objectives)…
We learn how to switch on Physics simulation and have a bit of fun.
In this video (objectives)…
We learn about Object, References and Components and use this knowledge in Blueprint to query objects in our scene and get info about them.
In this video (objectives)…
We use Blueprints to add an impulse to an object in our scene. We see how to trigger this with a key press.
In this video (objectives)…
We create a reusable Blueprint and see how updating it changes multiple instances.
In this video (objectives)…
We spawn an actor using our new blueprint and use the instance to add force.
In this video (objectives)…
We look into the different data pin colours and see that they are Types. We see what Types are and how they constrain our connections.
In this video (objectives)…
We see how the engine spawns a pawn for us to control at the player start. We see how to get access to the pawn in the Event Graph and use it’s Transform.
In this video (objectives)…
We see how the Pawn’s Actor Rotation doesn’t help much. We find out how to get the control rotation and apply that to the ball.
In this video (objectives)…
We learn how Vector addition, subtraction and multiplication work. We learn to do this with an arrow representation as well as coordinates.
In this video (objectives)…
We look at what the Forward Vector is. We learn to multiply it to give us an impulse that launches our Projectile in the right direction.
In this video (objectives)…
We see how to search the Marketplace for asset, especially free. And how to download and add these to our projects.
In this video (objectives)…
We create a new level and build some walls using additive and subtractive BSP brushes. We also bring our existing Blueprint functionality into the level.
In this video (objectives)…
We learn to add materials to our Geometry brushes and adjust the directional lighting of the scene.
In this video (objectives)…
We add in meshes to our scene and see how components can be used to make more complex actors.
In this video (objectives)…
We see what a collision mesh is and we see how we can generate a simplified mesh to behave well with physics simulations.
In this video (objectives)…
We learn how variables can be used to store values. We see how to use Blueprint to set and get these values. We use this to keep track of our ammo.
In this video (objectives)…
We learn how to use Comparison Operators to get true/false answers about a numeric relationship. We then use these “booleans” to execute different code using a Branch Node.
In this video (objectives)…
We learn why it’s important to write self documenting code. We see how we can use functions as a great alternative to comments. We also see how functions lead to code reuse by printing our Ammo in different cases.
In this video (objectives)…
We see how to create functions from scratch in the My Blueprint pane. We also see how to add inputs and outputs.
In this video (objectives)…
We learn what “side effects” are. We learn that a function without execution pins is “Pure” and how to mark a function as such.
In this video (objectives)…
We see how code can live in blueprint classes and have access to the instance. We use this to print a balls name and we move the “Launch” code there too.
In this video (objectives)…
We see how to load a level from Blueprint and we can reload the current level by using Get Current Level Name. We call this functionality after a Delay.
In this video (objectives)…
We review at all the concepts covered in this section and what could be extended in our game.
In this video (objectives)…
We overview the prototype for the game and our plan of action for creating it.
In this video (objectives)…
We start by downloading the asset packs we need and starting a project from one of these. We create our own map and bring in a different player character.
In this video (objectives)…
We create our own child character class and tweak the inputs to match our project.
In this video (objectives)…
We see why we need a compiler and source code editor and how they fit into the process of making games.
In this video (objectives)…
We show you how to install our compiler for PC: Visual Studio Community and which version and features are required.
In this video (objectives)…
We show you how to install our compiler for Mac: XCode.
In this video (objectives)…
We install the final piece of the puzzle, our source code editor, VSCode. Then install plugins that will help us with C++ development in Unreal.
In this video (objectives)…
We add a C++ file to our project and learn to compile the editor.
In this video (objectives)…
We learn how to add variables to a C++ class and how to make these visible in the editor. We then see how to compile our class using Live Coding.
In this video (objectives)…
Sam overviews some issues that can lose data with Live Coding and how to work around this.
In this video (objectives)…
We see how to use the Cpp files to implement our code. We encounter the BeginPlay function and use it to add up variables.
In this video (objectives)…
We learn to create FVector variables and how to construct a Struct as well as access it’s component parts using the dot operator.
In this video (objectives)…
We see what function calls look like in C++ and learn that their inputs are called Arguments. We learn how to SetActorLocation with both a variable and a constructor.
In this video (objectives)…
We learn about the Game Loop and how Tick allows us to update things every frame. We use this knowledge to make our moving platform move!
In this video (objectives)…
We introduce the concept of a local variable and understand the concept of scope.
In this video (objectives)…
We learn about Pseudo code and comments and use this to write a description of how we want our code to work.
In this video (objectives)…
We learn the difference between a statement and expression in C++. And we see how function calls can return values for us to use.
In this video (objectives)…
We update our current location from a vector and we look at how we can make this frame rate independent using DeltaTime.
In this video (objectives)…
We see how to use the :: operator to access functions within a class. We use this to calculate and visualise the distance moved by the platform.
In this video (objectives)…
We make the platform return along its path by using an If-Statement and comparison operators.
In this video (objectives)…
We use the member functions of FVector to GetSafeNormal() and calculate the direction of movement.
In this video (objectives)…
We make a Blueprint Child Class to get some configuration in Blueprint as well as C++.
In this video (objectives)…
We work around an issue with the character by forcing it to update it’s position each frame. We then build out our obstacle course with pushing platforms.
In this video (objectives)…
We see how to setup our own Game Mode as the project default and how this can allow us to use the “Play from here” menu item.
In this video (objectives)…
We see how to use the UE_LOG function for write text and float variables to the output log. We use this to print our overshoot distance.
In this video (objectives)…
We see how to put strings into C++ variables and then how to print these out in a log message. We use this to print the name of the actor doing the logging.
In this video (objectives)…
We see how we can refactor into functions to keep our code small and legible.
In this video (objectives)…
We learn how to make our own functions return values so that we can make our code even more legible.
In this video (objectives)…
We see how to use the const keyword to make const member functions that cannot modify members of the class. We also see how that change can require us to make other functions const.
In this video (objectives)…
We learn how to get and set the rotation of an actor using the FRotator type. We use this to create a new rotating platform Blueprint.
In this video (objectives)…
We sketch out a level design on paper using the elements that we can change. We then go ahead and implement this in the editor.
In this video (objectives)…
We overview the learning takeaways from the section and see how we could take our project further.
In this video (objectives)…
We download all the assets we need for the section and create a new first person project.
In this video (objectives)…
We look at the building blocks included in our asset pack and use these constraints to help us design our level on paper.
In this video (objectives)…
We put our paper design into practice by layout out our level. We learn to use grid snapping and the 4 viewport view to layout levels efficiently. We also learn about keeping our outliner organised in folders.
In this video (objectives)…
We go through the rest of the level design in this challenge solution video.
In this video (objectives)…
We encounter some of the main types of lighting: point, spot, rect, directional and skylight. We see how to setup a sky sphere with our skylight and directional light to create natural lighting.
In this video (objectives)…
We edit the materials in our scene to make them Lumen compatible. Then we block out any light bleeding into our dark dungeon.
In this video (objectives)…
We use the different types of light to light our level. We learn about core light settings such as intensity and radius. And we enable shadows for our lights.
In this video (objectives)…
We remove the mesh from the first person character and create a GameMode to spawn this by default.
In this video (objectives)…
We go over the benefits of composition and how we can use it in Unreal.
In this video (objectives)…
We create a C++ actor component and add it to our gate in our level
In this video (objectives)…
We learn what a pointer is and how to store one in a variable. We learn how to get a pointer to the owning actor and print this to the console.
In this video (objectives)…
We see how we can “dereference” a pointer and use this to access functions from a pointer class. We then see a shortcut using the arrow operator.
In this video (objectives)…
We learn how to include a header file so that we have access to more functionality. We look briefly into how the C++ compiler works.
In this video (objectives)…
We learn to use the FMath library and particularly the VInterpConstantTo function. We see the various variant of it and learn to read it’s documentation. We then make our Mover go with a boolean.
In this video (objectives)…
We create a new Scene Component and learn how they are different from Actor Components. We then attach this one to our player so that it rotates with the player view.
In this video (objectives)…
We learn what a line trace is and why it might be useful. We also see a helpful alternative, the shape sweep and why we might want to use this instead. We then see how to setup trace channels in the engine.
In this video (objectives)…
We learn about the UWorld type and what it represents as well as how to get and store a pointer to it. See see some of the functions it has available to us.
In this video (objectives)…
We see how to draw a line for debugging purposes to allow us to visualise our line trace or sweep.
In this video (objectives)…
We step back from our project to see the difference between a reference and a pointer and the pros and cons of each.
In this video (objectives)…
We see how references can be used to pass parameters without a copy. We see how const can be used to protect them and how out parameters can be used.
In this video (objectives)…
We learn how to do a Geometry sweep by creating a Shape object and using out parameters to get our results.
In this video (objectives)…
We see how to configure our input actions in the editor and how this gives us controller and mouse or keyboard support.
In this video (objectives)…
We learn how to make a function callable from Blueprint. We use this to call the “Grab” and “Release” function on a key event.
In this video (objectives)…
We are introduced to the PhysicsHandle component and why we want to use it. We then learn to use FindComponentByClass to get and store a pointer to it.
In this video (objectives)…
We learn to draw debug spheres to visualise points in space.
In this video (objectives)…
We learn to grab using a physics handle and set the target location and rotation. We take the opportunity to extract a function from repeated code.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.