This repository has been archived and is now read-only.
Current status:
- This open-source version is no longer actively maintained
- The repository remains publicly accessible in read-only mode
- You can continue to fork, clone, and use the code under the MIT License terms
If you wish to continue receiving updates and support, the commercial version is available on the Unreal Engine Marketplace:
The commercial version includes:
- Ongoing development and updates
- Official support
- Additional features
If you plan to continue using this open-source version:
- Please fork or clone this repository for your own use
- All existing code remains available under the MIT License
- You are free to maintain your own fork
Thank you for your support and contributions to this project.
ObjectDeliverer is a flexible data communication library for Unreal Engine. It's available for both C++ and Blueprint.
- Overview
- Supported UE Versions
- How to Obtain
- Installation Guide
- Quick Start
- Feature Details
- Usage Examples
- Detailed Documentation
- License
- Contributing
ObjectDeliverer excels as a data communication library with these key advantages:
- Easy Protocol Switching - Seamlessly switch between TCP/IP, UDP, shared memory, and other protocols
- Flexible Data Division Rules - Support for fixed size, header+body, terminal symbol, and more
- Various Serialization Methods - Handle byte arrays, UTF-8 strings, JSON objects, and more
- C++ and Blueprint Support - Use your preferred development method
It simplifies network communication logic, allowing you to focus on application development.
Note: This plugin is updated and maintained only for the latest 3 versions of Unreal Engine.
| UE Version | Support Status | Branch Name |
|---|---|---|
| UE 5.7 | ✅ Supported | UE5.7 |
| UE 5.6 | ✅ Supported | UE5.6 |
| UE 5.5 | ✅ Supported | UE5.5 |
| UE 5.4 | ❌ End of Support (v1.8.0) | UE5.4 |
| UE 5.3 | ❌ End of Support (v1.6.1) | UE5.3 |
| Others | 🔄 Check docs | master |
master (latest UE version) ──┐
├─ UE5.5 (UE5.5 specific)
├─ UE5.4 (UE5.4 specific)
└─ UE5.3 (UE5.3 specific)
- master branch: Always compatible with the latest Unreal Engine version
- UEX.X branches: Stable versions for specific UE versions
- Note: Older version branches may not include the latest features
https://www.fab.com/ja/listings/b6ffd7d7-80da-483f-a7fa-09cb46b72651
If you acquire this plugin through the Marketplace, you will be charged the specified fee.
You can clone this repository and use it for free.
- Purchase and download the plugin from the Marketplace
- Add it to your project from the "Library" section in the UE Launcher
- Open your project and enable ObjectDeliverer from "Edit" → "Plugins"
- Clone this repository:
git clone https://github.com/ayumax/ObjectDeliverer.git - Copy the
Pluginsdirectory from the cloned repository to your project folder - Build the plugin (requires C++ build environment)
- Open your project and enable ObjectDeliverer from "Edit" → "Plugins"
Choose the appropriate branch based on your UE version:
# Example for UE5.4
git checkout UE5.4- Create an ObjectDelivererManager
- Set up event handlers (connect, disconnect, data receive)
- Configure communication protocol and packet rule, then start
The following protocols are available by default (you can also add your own):
- TCP/IP Server - Connects to multiple clients
- TCP/IP Client - Connects to a server
- WebSocket Client - Connects to a WebSocket server
- UDP (Sender) - Sends UDP data
- UDP (Receiver) - Receives UDP data
- Shared Memory - Process-to-process communication in Windows
- File Writer - Saves data to a file
- File Reader - Reads data from a file
Rules for appropriate packet division and reconstruction of received data:
Example) When using a fixed size of 1024 bytes

Example) When the size area is 4 bytes

Uses the received buffer as-is without any packet splitting or combining operations.
- Byte Array - Raw binary data
- UTF-8 String - Text data
- Object (JSON) - Structured data
void UMyClass::Start()
{
auto deliverer = UObjectDelivererManager::CreateObjectDelivererManager();
// Set up event handlers
deliverer->Connected.AddDynamic(this, &UMyClass::OnConnect);
deliverer->Disconnected.AddDynamic(this, &UMyClass::OnDisConnect);
deliverer->ReceiveData.AddDynamic(this, &UMyClass::OnReceive);
// Start communication
// Protocol: TCP/IP Server
// Data division rule: Header(Size) + Body
// Serialization method: Byte array
deliverer->Start(UProtocolFactory::CreateProtocolTcpIpServer(9099),
UPacketRuleFactory::CreatePacketRuleSizeBody());
}
void UMyClass::OnConnect(UObjectDelivererProtocol* ClientSocket)
{
// Send data
TArray<uint8> buffer;
deliverer->Send(buffer);
}
void UMyClass::OnDisConnect(UObjectDelivererProtocol* ClientSocket)
{
// Handle disconnection
UE_LOG(LogTemp, Log, TEXT("closed"));
}
void UMyClass::OnReceive(UObjectDelivererProtocol* ClientSocket, const TArray<uint8>& Buffer)
{
// Handle received data
}For detailed usage of each feature, please refer to the Wiki:
- This plugin is provided under the MIT License
- However, if you download and use it from the Epic Games Marketplace, the Epic Games license terms will apply
We welcome contributions from everyone who wants to improve ObjectDeliverer!
- Fork the repository
- Create your feature branch from the
masterbranch - Make your changes
- Submit a pull request targeting the
masterbranch
- All pull requests should be directed to the
masterbranch - For major changes, please open an issue first to discuss what you would like to change(English or Japanese)
- Follow the code style of the existing codebase
- Add or update tests when possible
ObjectDeliverer includes automated tests for WebSocket functionality. To run tests with a real WebSocket server:
| Variable | Description | Example |
|---|---|---|
OBJECTDELIVERER_TEST_WS_URL |
WebSocket server URL for testing | wss://your-websocket-server.com |
OBJECTDELIVERER_TEST_WS_TOKEN |
Authentication token for WebSocket server | your-secure-token |
-
Without WebSocket server (default):
# Tests will use ws://localhost:8080 as mock server /path/to/UnrealEditor-Cmd YourProject.uproject -ExecCmds="Automation RunTests ObjectDeliverer.ProtocolWebSocket; quit"
-
With WebSocket server:
export OBJECTDELIVERER_TEST_WS_URL="wss://your-server.com" export OBJECTDELIVERER_TEST_WS_TOKEN="your-token" /path/to/UnrealEditor-Cmd YourProject.uproject -ExecCmds="Automation RunTests ObjectDeliverer.ProtocolWebSocket; quit"
For GitHub Actions or other CI systems, set the environment variables as secrets:
env:
OBJECTDELIVERER_TEST_WS_URL: ${{ secrets.WEBSOCKET_TEST_URL }}
OBJECTDELIVERER_TEST_WS_TOKEN: ${{ secrets.WEBSOCKET_TEST_TOKEN }}When adding new features, please try to make them work across multiple UE versions when possible. If a feature is specific to a particular UE version, please note this clearly.
We appreciate all contributions - bug fixes, feature additions, documentation improvements, suggestions, and more!

