Over 64 hours of content.
Over 64 hours of content.
Learn all about Unreal Engine multiplayer in this fully comprehensive C++ course. From scratch, we create a complete multiplayer shooter game, capable of creating and joining game sessions and connecting many players across the internet. We'll create our very own custom plugin that can be added to any Unreal Engine project to easily turn it into a multiplayer game.We learn how to optimize our game for the best performance, as competitive shooters require the highest performance possible. We'll implement lag compensation techniques such as client-side prediction and server-side rewind, so the game performs smoothly even in the presence of high lag. We learn how to use the proper game classes for each multiplayer mechanic. Custom match states, warmup/cooldown match timers, Elim announcements, HUD with health, shields, ammo and grenades, and more. We keep all important functionality on the server, to prevent cheating, and learn the proper way to use the Player Controller, Game Mode, Game State, Player State, Character and Game Instance classes.We make assault rifles, pistols, submachine guns, rocket launchers, grenade launchers, sniper rifles and throwing grenades. All functional in multiplayer, optimized for best performance.After this course, you'll be able to create any multiplayer game you want. If you can do a fast-paced shooter well, you can do any game, because fast-paced, competitive games require the best performance possible.
This course assumes that you have knowledge of C++ programming basics. Knowledge of variables, classes, inheritance, and object-oriented programming is recommended to have the best experience in this course.
Welcome to the Unreal Engine 5 C++ Multiplayer Shooter Course!
Jetbrains Rider is now free for non-commercial use!
We discuss important information you need to get the best out of this course
We learn about how multiplayer games are architected, and go over the peer-to-peer and client-server models, and learn which of these Unreal Engine uses.
We learn how to test multiplayer in the PIE
We connect two machines via a LAN connection
We learn about the Online Subsystem and how it provides an abstraction layer so we can use the same code for multiple online services
We learn about Online Sessions and how they work
We configure our project for Steam multiplayer
We learn how to access Unreal Engine's Online Subsystem from C++ code
We learn how to create an online session
We create the necessary setup for joining sessions
We discuss Steam Regions and why they can help improve our multiplayer network experience
We actually join a game session
We create our own plugin that can be added to any Unreal Engine project
We create our own custom Subsystem that is constructed alongside the Game Instance
We learn about delegates in the Session Interface
We create a Menu class
We access our own custom Subsystem
Read this important note on the OnLevelRemovedFromWorld function being replaced.
We create a multiplayer online session
We add function callbacks for our Subsystem's delegates
We create more delegates for our Subsystem
We implement joining sessions from our Menu
We track the number of incoming players in the Game Mode
We add a path to the Lobby level
We polish up our Menu Subsystem
A quiz on what you've learned about our Multiplayer Sessions Subsystem
We create our Multiplayer Project
Make sure you get this part right. If you can't create sessions, come back to this and make sure your DefaultEngine.ini matches this.
We test an Online Session in our new project
We get our hands on some free assets to use for our project
Follow the link in the resources to see how to retarget animations in Unreal Engine 5!
We retarget animations to our Character from the Epic Mannequin and the Mixamo Skeleton
We create the Blaster Character class
We add a Camera and a Spring Arm to our Blaster Character
We implement the basic movement functionality for our Blaster Character
We create the Anim Instance C++ class and a new Animation Blueprint for our Blaster Character
We learn about Seamless and Non-Seamless Travel and configure our game to use Seamless Travel
We learn about the concept of Network Role and how it works in Multiplayer
A quiz on what you've learned about Network Role and Seamless Travel in this section
We create the Weapon class, which will be the parent for each of our specialized Weapons in the game
We create a Widget that can inform the player when they can pick up a Weapon
We learn how to mark a variable for replication, and replicate the current Overlapping Weapon
We create a Combat Component class to handle combat-related functionality, and create an EquipWeapon function so we can equip Weapons
We learn about RPCs (Remote Procedure Calls), which are functions designed to be called on one machine and executed on another
We add an equipped pose to our Animation Blueprint
We make use of the Crouch function, and take advantage of the multiplayer crouching capabilities built-in to the Character class
We add the ability to aim, and replicate the aiming state to all clients so they can see our Character in the aiming pose
We create our running Blendspace and add axis values for leaning and strafing
We calculate the necessary values to pass into our Blendspace to lean and strafe
We round out our animation Blueprint with Idle and Jumping states
We add the ability to crouch walk
We add an Aim Walking state, allowing our Character to change its speed and pose as we aim while walking
We extract animation poses from the Aim Offset animation, and convert them to additive animations
We apply our aiming poses to an Aim Offset asset and test its functionality
We discuss how rotational values are serialized and compressed before being sent across the network
We implement our aiming and hip Aim Offsets in our Animation Blueprint
We use Inverse Kinematics to place the left hand on a socket on the Weapon so our grip is always correct
We implement an algorithm for turning in place when our Yaw exceeds 90 degrees
We use a Rotate Root Bone node in our Animation Blueprint to implement turning in place
We discuss the Net Update Frequency, a variable that determines how often an Actor will be considered for replication
We add crouching capability to our Character when unequipped
We create rotated running animations for leaning
We add footstep and jump sounds to our running and jumping animations, and make sure they have sound attenuations
A quiz testing your understanding of what you've learned in the Weapon Section
We discuss the difference between Hit Scan and Projectile Weapons, and create our first specialized weapon type: the Projectile Weapon
We create a weapon firing Animation Montage and play it in response to user input
We add Weapon firing effects so we can see and hear gunshots
We implement our fire effects in multiplayer so all machines can see when someone fires
We calculate a Hit Target vector so we can launch our projectiles precisely
We spawn projectiles when firing the weapon
We add a Projectile Movement Component to our Projectile class so it can fly through the air
We add a tracer to our projectile so we can see rapid-flying projectiles
We send the Hit Target data to the server so it knows where to launch the projectile
We bind a function to the OnHit delegate on our projectile's collision box
We create a class for bullet shells and spawn bullet shells from our weapon when we fire
We add an impulse to the crosshairs so we can launch them from the weapon, and play shells sounds with a Hit Event
A quiz on what you've learned about Firing Weapons
We create a Blaster Player Controller and a Blaster HUD class for our game
We create a function for drawing the HUD textures to the screen
We add the ability to spread and shrink the crosshairs based on in-game events
We transform the right hand so our weapon always faces the direction we're shooting
We zoom in while aiming our weapon
Shrink Crosshairs when Aiming
Change Crosshairs Color
We extend the starting point of our line trace so we never hit our own Character or shoot in the wrong direction
We implement hit reactions when our projectiles hit the Blaster Character
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.