This guide will walk you through setting up the Bloodstain Replay system in a multiplayer environment.
Prerequisite: Before proceeding, it is recommended that you first complete the Quick Start guide. This guide is based on the Third-Person Template in Unreal Engine 5.6.
Step 1: Change Player Controller Inheritance
First, you need to modify the inheritance structure of your project’s Player Controller to enable the network features of our plugin.
-
Check Your GameMode: Open your project’s default GameMode (e.g.,
BP_ThirdPersonGameMode
) and check which class is set as the Player Controller Class. -
Add Module Dependency (C++ Projects Only)
Before modifying any code, you must first add the
BloodStainSystem
module to the dependency list in your project’s.Build.cs
file (e.g.,YourProject.Build.cs
). This step allows the compiler to find theAGhostPlayerController
class.Note: After modifying the .Build.cs file, you must apply the changes by right-clicking your project’s .uproject file and selecting “Generate Visual Studio project files”. Afterward, you need to Rebuild the project in Visual Studio.
Important: If your classes are inherited across multiple modules (e.g., A -> B -> C), you must add the
BloodStainSystem
dependency to the .Build.cs file of every module in the inheritance chain. -
Change the Parent Class:
Now, open the Player Controller you identified and change its parent class. The key is to change the existing inheritance structure from (
... -> APlayerController
) to (... -> AGhostPlayerController -> APlayerController
).In other words, instead of having your Player Controller inherit directly from
APlayerController
, you need to modify it to inherit from the plugin’sAGhostPlayerController
.
Step 2: Optimize Network Settings
For stable multiplayer performance, we strongly recommend configuring a few key options.
-
Set Up Variable Replication: Select the
BloodStainActor
variable you created in theBP_ThirdPersonCharacter
during the Quick Start guide. In the Details panel, change its Replication option toReplicated
. This ensures that information about which bloodstain the player is interacting with is passed from the server to the client, allowing you to synchronize logic such as displaying a UI prompt. -
Configure Data Quantization:
Reducing the size of data sent over the network is crucial. In the
Bloodstain Subsystem
’s file save options, setting the Quantization Option lower can significantly reduce network load. For more details, please refer to the [Configuring Options] Section.Known Limitations: The system’s replay data transfer is based on Unreal Engine’s RPC (Remote Procedure Call) system. While this method is stable, it can have speed limitations when transferring large amounts of data at once. Therefore, recording and transmitting numerous replays simultaneously may lead to performance degradation. Please consider this system load during your project planning.
Results
After completing the setup, you can see the system working correctly in a multiplayer environment, as shown below.