Branch | Status |
---|---|
master | |
UE5.5 | |
UE5.4 | |
UE5.3 |
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.
UE Version | Support Status | Branch Name |
---|---|---|
UE 5.5 | β Supported | UE5.5 |
UE 5.4 | β Supported | UE5.4 |
UE 5.3 | β Supported | 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
Plugins
directory 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
- 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
master
branch - Make your changes
- Submit a pull request targeting the
master
branch
- All pull requests should be directed to the
master
branch - 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
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!