{"id":13485474,"url":"https://github.com/ayumax/ObjectDeliverer","last_synced_at":"2025-03-27T19:31:15.787Z","repository":{"id":36354618,"uuid":"164864304","full_name":"ayumax/ObjectDeliverer","owner":"ayumax","description":"ObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint). ","archived":false,"fork":false,"pushed_at":"2024-06-07T14:20:30.000Z","size":8859,"stargazers_count":163,"open_issues_count":15,"forks_count":36,"subscribers_count":14,"default_branch":"master","last_synced_at":"2024-10-30T20:44:44.712Z","etag":null,"topics":["blueprint","shared-memory","tcp","udp","unreal-engine"],"latest_commit_sha":null,"homepage":"https://www.unrealengine.com/marketplace/ja/slug/objectdeliverer","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ayumax.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-01-09T13:04:48.000Z","updated_at":"2024-10-25T07:49:48.000Z","dependencies_parsed_at":"2023-12-02T10:22:33.755Z","dependency_job_id":"be4a3793-33ed-457c-8ce4-38cef0c763bb","html_url":"https://github.com/ayumax/ObjectDeliverer","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayumax%2FObjectDeliverer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayumax%2FObjectDeliverer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayumax%2FObjectDeliverer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayumax%2FObjectDeliverer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ayumax","download_url":"https://codeload.github.com/ayumax/ObjectDeliverer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245910770,"owners_count":20692498,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blueprint","shared-memory","tcp","udp","unreal-engine"],"created_at":"2024-07-31T18:00:23.808Z","updated_at":"2025-03-27T19:31:15.097Z","avatar_url":"https://github.com/ayumax.png","language":"C++","funding_links":[],"categories":["Networking","Awesome Unreal Repositories","Game Development"],"sub_categories":["Networking","Unreal Engine: Resources"],"readme":"# ObjectDeliverer\n\n## UE Marketplace\n[https://www.unrealengine.com/marketplace/ja/slug/objectdeliverer](https://www.unrealengine.com/marketplace/ja/slug/objectdeliverer)\n\n## Description\nObjectDeliverer is a data transmission / reception library for Unreal Engine (C ++, Blueprint).\n\nIt has the following features.\n\n+ Communication protocol, data division rule, serialization method can be switched by part replacement.\n+ Available for both C ++ and Blueprint\n\n## Relationship between branch and UE Engine version\n\nThe master branch is buildable with UE5 5.0 or later; UE4 requires some modifications to build.\n\n\n## Communication protocol\nThe following protocols can be used with built-in.\nYou can also add your own protocol.\n+ TCP/IP Server(Connectable to multiple clients)\n+ TCP/IP Client\n+ UDP(Sender)\n+ UDP(Receiver)\n+ Shared Memory(Windows Only)\n+ LogFile Writer\n+ LogFile Reader\n\n## Data division rule\nThe following rules are available for built-in split rules of transmitted and received data.\n+ FixedSize  \n\tExample) In the case of fixed 1024 bytes\n\t![fixedlength](https://user-images.githubusercontent.com/8191970/56475737-7d999f00-64c7-11e9-8e9e-0182f1af8156.png)\n\n\n+ Header(BodySize) + Body  \n\tExample) When the size area is 4 bytes  \n\t![sizeandbody](https://user-images.githubusercontent.com/8191970/56475796-6e672100-64c8-11e9-8cf0-6524f2899be0.png)\n\n\n+ Split by terminal symbol  \n\tExample) When 0x00 is the end\n\t![terminate](https://user-images.githubusercontent.com/8191970/56475740-82f6e980-64c7-11e9-91a6-05d77cfdbd60.png)\n\n## Serialization method\n+ Byte Array\n+ UTF-8 string\n+ Object(Json)\n\n# Installation\n+ Please clone this repository\n+ Please copy the Plugins directory to the project folder\n+ Please activate ObjectDeliverer from Plugins after launching editor\n\n# Quick Start\n1. Create an ObjectDelivererManager\n1. Create a DeliveryBox(If you wish to send and receive data other than binary)\n1. Set the send / receive protocol and PacketRule, then start the ObjectDelivererManager\n\n![gallery 1](https://user-images.githubusercontent.com/8191970/52522481-48075700-2cc9-11e9-92a0-067992f56042.png)\n\n\n\n```cpp\nvoid UMyClass::Start()\n{\n    auto deliverer = UObjectDelivererManager::CreateObjectDelivererManager();\n\n    // bind connected event\n    deliverer-\u003eConnected.AddDynamic(this, \u0026UMyClass::OnConnect);\n    // bind disconnected event\n    deliverer-\u003eDisconnected.AddDynamic(this, \u0026UMyClass::OnDisConnect);\n    // bind receive event\n    deliverer-\u003eReceiveData.AddDynamic(this, \u0026UMyClass::OnReceive);\n\n    // start deliverer\n    // + protocol : TCP/IP Server\n    // + Data division rule : Header(BodySize) + Body\n    // + Serialization method : Byte Array\n    deliverer-\u003eStart(UProtocolFactory::CreateProtocolTcpIpServer(9099),\n                     UPacketRuleFactory::CreatePacketRuleSizeBody());\n}\n\nvoid UMyClass::OnConnect(UObjectDelivererProtocol* ClientSocket)\n{\n    // send data\n    TArray\u003cuint8\u003e buffer;\n    deliverer-\u003eSend(buffer);\n}\n\nvoid UMyClass::OnDisConnect(UObjectDelivererProtocol* ClientSocket)\n{\n    // closed\n    UE_LOG(LogTemp, Log, TEXT(\"closed\"));\n}\n\nvoid UMyClass::OnReceive(UObjectDelivererProtocol* ClientSocket, const TArray\u003cuint8\u003e\u0026 Buffer)\n{\n    // received data buffer\n}\n```\n\n# How to use each function\nLook at the Wiki\nhttps://github.com/ayumax/ObjectDeliverer/wiki\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayumax%2FObjectDeliverer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayumax%2FObjectDeliverer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayumax%2FObjectDeliverer/lists"}