ObjectDeliverer Log File Saving and Playback Feature

Recording Communication Content When implementing communication features, there are almost always times when you want to reproduce the situation later. This is especially essential when the environment of the communication partner is difficult to prepare. Therefore, I implemented a feature in ObjectDeliverer to save communication content to a log file and play it back. Sample Here is a sample using the save and playback features. The communication content here is a captured bitmap of 800px x 450px 32bit ARGB, so 1,440,000 bytes = (800 x 450 x 4) of data are sent and received every 60fps (=16.66ms). ...

2019-02-07 · 2 min · 274 words · ayumax

Got Stuck with BlueprintNativeEvent

What I Got Stuck On Today’s article is a memo recording a problem I encountered recently. By the way, I still don’t know the exact cause and am currently using a workaround. In the Plugin I’m currently creating, I wanted to override functions in both C++ and Blueprint, so I implemented the pattern below in various places. UFUNCTION(BlueprintNativeEvent, Category = "ObjectDeliverer") void Start(); virtual void Start_Implementation(); In the example above, Start() is expected to be called from another C++ class. ...

2019-01-31 · 2 min · 385 words · ayumax

Video Synchronization Using ObjectDeliverer Shared Memory

Sample Explanation This article explains the implementation of the shared memory sample I wrote about yesterday. ObjectDelivererの共有メモリのテスト題材作成中。 WPFアプリが毎フレーム自分のウィンドウを共有メモリに書き込んで、それをUE4側が読み込みテクスチャを更新してる。#ObjectDeliverer #UE4 #UE4Study pic.twitter.com/uWY2QhHnYP — ayuma (@ayuma_x) January 29, 2019 WPF App Side The WPF side writes the display content of its own window to shared memory. The complete source code is in the following repository. Creating Shared Memory Create shared memory named “SharedMemory” with a size of 800 * 450 * 4 + 5. This size can store a bitmap of 800 pixels width, 450 pixels height, and 32-bit BGRA format. The final +5 is for the header elements used by ObjectDeliverer shared memory. ...

2019-01-30 · 5 min · 866 words · ayumax

Adding Shared Memory Protocol to ObjectDeliverer

Shared Memory Feature I have added a shared memory protocol implementation to my custom UE4 library, ObjectDeliverer. This allows data transfer using shared memory in addition to the previously implemented TCP/IP and UDP. However, shared memory is Windows Only… How to Use Since it’s implemented as a protocol for ObjectDeliverer, you can use it simply by switching the protocol passed to the ObjectDelivererManager’s Start method. deliverer->Start(UProtocolFactory::CreateProtocolSharedMemory("memory_test", 1024), UPacketRuleFactory::CreatePacketRuleSizeBody()); Pass the shared memory name and memory size to CreateProtocolSharedMemory. These two values must be the same as the counterpart exchanging data. ...

2019-01-29 · 2 min · 385 words · ayumax

Easy Inter-Process Communication in UE4 with ObjectDeliverer

Inter-Process Communication in UE4 I often link applications developed with Unreal Engine to apps created with C# etc., and the most common method I use for this is socket communication like TCP/IP or UDP. Until now, whenever needed, I created features tailored to the specifications at that time. However, implementing this each time is tedious, and the communication part is delicate, making it prone to bugs if not built properly. ...

2019-01-28 · 5 min · 938 words · ayumax

Writing UE4 Automated Tests Easily Using Lambdas

UE4 supports testing as part of its development environment, allowing you to write automated tests without needing separate tools. Furthermore, by using Latent Commands, you can describe tests that span multiple frames, which is quite convenient. Automation Technical Guide However, when trying to perform delayed evaluation using multiple Latent Commands, I always found it cumbersome that I had to define a DEFINE_LATENT_AUTOMATION_COMMAND macro for each type of evaluation I wanted to perform. ...

2019-01-16 · 2 min · 316 words · ayumax

Dynamically Changing Logic with Unreal.js

This article is for the 20th day of the Unreal Engine 4 (UE4) Advent Calendar 2018. The previous day’s article was by 0xUMA: Trying out automated testing in UE4. Overview There are times when you want to switch behavior patterns after creating a package for Windows from UE4. Initially, I handled this by allowing parameter changes via external text files (like XML or JSON). However, eventually, the request came to change the logic itself. So, I will write about how I externalized the logic using JavaScript with Unreal.js. ...

2018-12-20 · 7 min · 1409 words · ayumax