How to Make a Multiplayer Game in Unreal Engine 4 [Blueprint Tutorial] (Unreal) - Part 1 - by DevAddict
April 27, 2021
Multiplayer
Unreal
Title: How to Make a Multiplayer Game in Unreal Engine 4 [Blueprint Tutorial] By: DevAddict Youtube - Tutorial Description: A tutorial extension to the previous Unreal platformer tutorial that shows multiplayer implementation.
Summary
This tutorial extends the previous tutorial on making a platformer in Unreal found here: Youtube - Lets Make a Platformer - Unreal Engine 4.26 Beginner Tutorial
The original tutorial follows one created by Unreal with some extra steps added. This tutorial is an expansion made by DevAddict specifically to show how to add multiplayer to this project.
Lesson 1: Introduction to Multiplayer
Play Modes
When going into Play Mode in Unreal, there are many options for testing and debugging multiplayer.
- Play Modes: Net Modes:
- Play as Offline (Standalone): (Default) You are the server
- Play as Listen Server: Editor acts as both the Server and the Client
- Play as Client: Editor acts solely as Client and a Server is started behind the scenes for you to connect to
Testing Multiplayer Settings
Approach #1
- Set Number of Players to: 2
- Set Play Mode to: Play as Client
Approach #2
- Set Number of Players to: 2
- Set Play Mode to: Play as Listen Server
Editing Blueprints
Editing Game Mode
The Game Mode class only exists on the Server. It does NOT exist on any of the Clients.
This fact is why transitioning this tutorial to multiplayer causes many issues, the first of which is fixing the UI so it displays for all players. It originally only displays for the Server player because much of the programming for it is within the Game Mode class. Similarly, the respwan code is also only in the Game Mode.
Use "Event OnPostLogin" node -> "Cast To BP_PlatformerController" node -> Client Draw HUD (Event we created in the BP_PlatformerController class)
This tells the Game Mode (Server) that when a new player logs in and has their own Player Controller created, that that specific instance will create its own HUD for that individual Client. Note that they intially tried the "Event Handle Starting New Player" node in place of the "Event OnPostLogin" node, which did create the UI, but it did NOT create the character (so in the Unreal editor you just moved around as a camera). This approach may work with some extra modifications, but it did not direclty work in this instance.
Player Controller
The Player Controller is very powerful in multiplayer because it is replicated on the Server and the Client. They like to keep UI on the Player Controller because it exists throughout the play session. While the character may be destroyed in some instances, the Player Controller generally persists. This makes the Player Controller beneficial for respawning mechanisms as well.
Building a Player Controller: Right-Click -> Blueprint Class -> Player Controller Named: BP_PlatformerController
You need to connect the Player Controller and your Game Mode, as they work together to realy information between players and the Server. In the Game Mode class (ThirdPersonGameMode) Event Graph -> Details -> Classes -> Player Controller Class -> Use dropdown to select new Player Controller (BP_PlatformerController)
Common Error - Event BeginPlay to Initialize Player Controller Blueprint
When initializing their Player Controller class, many may try using the "Event BeginPlay" node. This works for single player, which is why it may be prevalent, but it does not work for a multiplayer project. Instead you want an event that will run on the Client ONLY.
Moving HUD from Game Mode (Server) to Player Controller (Client): Add Custom Event Connect Custom Event to start of class In Details of Custom Event -> Graph -> Replicates: Run on owning Client -> Replicates: Check ON Reliable
Comments
Post a Comment