ObjectDeliverer icon indicating copy to clipboard operation
ObjectDeliverer copied to clipboard

ObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint).

ObjectDeliverer

UE4 Marketplace

https://www.unrealengine.com/marketplace/ja/slug/objectdeliverer

Description

ObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint).

It has the following features.

  • Communication protocol, data division rule, serialization method can be switched by part replacement.
  • Available for both C ++ and Blueprint

Relationship between branch and UE4 Engine version

The master branch supports UE4 4.25 and above. 4.24 and below cannot be built. if you use 4.24 or below, please use the "lessthan_425" branch.

Engine Version branch
4.25 or adove master
4.24 or less lessthan_425

Communication protocol

The following protocols can be used with built-in. You can also add your own protocol.

  • TCP/IP Server(Connectable to multiple clients)
  • TCP/IP Client
  • UDP(Sender)
  • UDP(Receiver)
  • Shared Memory(Windows Only)
  • LogFile Writer
  • LogFile Reader

Data division rule

The following rules are available for built-in split rules of transmitted and received data.

  • FixedSize
    Example) In the case of fixed 1024 bytes fixedlength

  • Header(BodySize) + Body
    Example) When the size area is 4 bytes
    sizeandbody

  • Split by terminal symbol
    Example) When 0x00 is the end terminate

Serialization method

  • Byte Array
  • UTF-8 string
  • Object(Json)

Installation

  • Please clone this repository
  • Please copy the Plugins directory to the project folder
  • Please activate ObjectDeliverer from Plugins after launching editor

Quick Start

  1. Create an ObjectDelivererManager
  2. Create a DeliveryBox(If you wish to send and receive data other than binary)
  3. Set the send / receive protocol and PacketRule, then start the ObjectDelivererManager

gallery 1

void UMyClass::Start()
{
    auto deliverer = UObjectDelivererManager::CreateObjectDelivererManager();

    // bind connected event
    deliverer->Connected.AddDynamic(this, &UMyClass::OnConnect);
    // bind disconnected event
    deliverer->Disconnected.AddDynamic(this, &UMyClass::OnDisConnect);
    // bind receive event
    deliverer->ReceiveData.AddDynamic(this, &UMyClass::OnReceive);

    // start deliverer
    // + protocol : TCP/IP Server
    // + Data division rule : Header(BodySize) + 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)
{
    // closed
    UE_LOG(LogTemp, Log, TEXT("closed"));
}

void UMyClass::OnReceive(UObjectDelivererProtocol* ClientSocket, const TArray<uint8>& Buffer)
{
    // received data buffer
}

How to use each function

Look at the Wiki https://github.com/ayumax/ObjectDeliverer/wiki