Unreal Engine の便利な ActorComponent UDP ラッパー。
これは、あなたのユースケースにとって最も賢明なラッパーではないかもしれませんが、同様のワークフローで https://github.com/getnamo/SocketIOClient-Unreal と共存することを目的としています。
組み込みの Unreal udp 機能を、送信機能と受信機能の両方を備えたアクター コンポーネント ( UDPComponent ) としてラップします。必要に応じて、カスタムの非アクター コンポーネント クラスに含めて再リンクできる C++ FUDPNativeラッパーを通じて機能します。
node.js dgram で動作することを確認しました (テスト用のエコー サーバーの例の要点を参照)。
ディスコードサーバー
好みの俳優を選択します。そのアクターに UDP コンポーネントを追加します。
新しく作成したコンポーネントを選択し、デフォルト設定を変更します
デフォルトでは、udp アクター コンポーネントは、再生開始時に送信ソケットと受信ソケットの両方を自動的に開きます。送信のみに興味がある場合は、受信を自動的に開く必要があるため、チェックを外します。逆に、送信する必要がない場合は、自動オープン送信のチェックを外してください。
また、自分の時間に接続/視聴したい場合は、どちらかのチェックを外し、キーイベントなどを介して手動で接続します。
受信 IP が 0.0.0.0 の場合は、指定されたポート上のすべての接続をリッスンします。
送信ソケットが開かれたら (TCP のように UDP ではコールバックを取得しないため、より正確には送信用のソケットが準備されます)、socket.io プラグインによって提供される utf8 変換である Emit を使用してデータを送信します。注意: ソケットを開くのを忘れた場合、デフォルト設定でエミットが自動的に開いてエミットされます。
エミットが処理された場合は true を返します。注意: udp は信頼性が低いため、これはデータが相手側で受信されたことを示すものではありません。信頼性の高い接続については TCP を検討してください。
受信ソケットを開いたら、 OnReceivedBytes
イベントでデータを受信します。
これは、socket.io を介して便利な文字列または構造に変換できます (オプションで、サーバーがデータを JSON 文字列として送信する必要があります)。
v0.9.5 以降、送信ソケットを開くと、受信側で udp イベントをリッスンするために使用できるバインドされた送信ポートが生成されます。これは、予想される動作による NAT ピアリングに役立ちます。
この機能を使用するには、「バインドされた送信ポートに受信をオープンする必要がある」を使用します。これにより、開いている受信が自動的に送信 IP とバインドされた送信ポートにバインドされます。
または、これを手動で行う場合は、「受信を自動的に開く必要がある」のチェックを外してから、バインドされたポートでソケットオープンイベントを送信するなど、独自の設定で開きます。
各リリースには、socket.io クライアント プラグインが含まれています。このプラグインは、信頼性の高い制御に使用することを目的としており、この udp プラグインを使用してネットワークのリアルタイム/最新のデータ コンポーネントをパイプすることができます。どのパケットをドロップまたは無視するかを知ることができるように、データにタイムスタンプを付けることを検討してください。
すぐに使えます。
これをプロジェクト プラグインとして使用している場合は、ブループリントのみのプロジェクトを混合 (bp および C++) プロジェクトに変換する必要があります。これを行うには、次の手順に従ってください: https://allarsblog.com/2015/11/04/converting-bp-project-to-cpp/
たとえば、[ファイル] メニュー オプションを使用して、C++ ファイルを追加してプロジェクトを混合プロジェクトに変換します。
MITライセンス取得済み。
主に https://wiki.unrealengine.com/UDP_Socket_Sender_Receiver_From_One_UE4_Instance_To_Another からインスピレーションを得ています。