Ghost Replay Plugin logo Ghost Replay Plugin

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.

  1. Check Your GameMode: Open your project’s default GameMode (e.g., BP_ThirdPersonGameMode) and check which class is set as the Player Controller Class.

  2. 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 the AGhostPlayerController class.

    Multiplay (1).png

    Multiplay (2).png

    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.

  3. 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’s AGhostPlayerController.

    Multiplay (3).png

Step 2: Optimize Network Settings

For stable multiplayer performance, we strongly recommend configuring a few key options.

  1. Set Up Variable Replication: Select the BloodStainActor variable you created in the BP_ThirdPersonCharacter during the Quick Start guide. In the Details panel, change its Replication option to Replicated. 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.

    Multiplay (4).png

  2. 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.

Result in Multiplayer