EverNewJoy / VictoryPlugin

Rama's Victory BP Plugin
MIT License
867 stars 256 forks source link

DRAFT: Json, WebSocket, Http and Media Output Submodules #87

Open cpritchard-disney opened 1 year ago

cpritchard-disney commented 1 year ago

This is a draft work in process of code written by Charles Pritchard at The Walt Disney Company which has been approved for contribution to the VictoryPlugin under its current license as well as for contribution to Epic's Unreal repository.

It is not yet ready to merge, as it does not follow the code guidelines of either repository.

cpritchard-disney commented 1 year ago

@EverNewJoy Attached is round two for the JSON plugin, revised for 4.25+. It is not yet ready to merge. Blueprint tests are really helpful in this plugin - I think that a separate VictoryPluginTests (or examples) repository may be helpful to users as well as developers.

Known issues:

While this software has been in use for several years, starting from UE 4.22, there are some known issues.

Json: soft references (paths) are not perfectly handled, additional tests for serialization / deserialization of soft paths should be written to fix that item.

Websockets: There is a potential issue in UE5 on setting the protocol flag, a warning comes up with the program websocat, and there appears to be a connection issue with at least one of the popular websockets libraries for node. This issue does not appear in UE4.

Media Socket: The stop capture method of unreal signals the Stop Capture change event before calling the stop capture implementation. We close our pipe during stop capture implementation, and so the event is sent one frame too quickly. This may be fixed by listening for the event first, so that the pipe can block appropriately and not send a stop capture event until it has closed.

Http: As noted in the unreal source code, the http get buffer can not reasonably be reset during the request, which creates an unnecessary strain on memory. Thus, for large files, HTTP range requests are appropriate to use.

Several of these issues could be remediated upstream in the Epic code base. Victory has had many wins in improving Unreal through demonstrating new methods, and it is my hope that these modules will continue to push things forward in the community.

-Charles