Удобная UDP-обертка ActorComponent для Unreal Engine.
Возможно, это не самая разумная оболочка для вашего варианта использования, но она предназначена для сосуществования с https://github.com/getnamo/SocketIOClient-Unreal с аналогичным рабочим процессом.
Обертывает встроенную функциональность Unreal udp в качестве компонента актера ( UDPComponent ) с возможностями отправки и получения. Работает через оболочку C++ FUDPNative , которую при желании можно включить и повторно связать с пользовательским классом компонента, не являющегося актером.
Подтверждена работа с dgram node.js (см. пример сущности эхо-сервера для тестирования).
Дискорд-сервер
Выберите актера по вашему выбору. Добавьте компонент UDP к этому актеру.
Выберите вновь созданный компонент и измените любые настройки по умолчанию.
По умолчанию компонент актера udp автоматически открывает сокеты отправки и получения при начале воспроизведения. Если вас интересует только отправка, снимите флажок, чтобы автоматически открывать получение; и наоборот, снимите флажок «Автооткрыть отправку», если вы не заинтересованы в отправке.
Также, если вы хотите подключиться/прослушивать в свободное время, снимите флажок и подключитесь вручную, например, через ключевое событие.
Полученный IP-адрес 0.0.0.0 будет прослушивать все соединения на указанном порту.
Как только ваш отправляющий сокет открыт (более точно подготовленный сокет для отправки, поскольку вы не получаете обратный вызов в UDP, как в TCP), используйте для отправки некоторых данных, преобразование utf8, предоставляемое плагином Socket.io. Примечание: если вы забудете открыть сокет, Emit автоматически откроется с настройками по умолчанию и выполнит отправку.
возвращает true, если эмиссия обработана. Примечание: udp ненадежен, поэтому это не является подтверждением того, что данные были получены на другом конце. Для надежного соединения рассмотрите TCP.
Открыв сокет приема, вы получите данные о событии OnReceivedBytes
.
которые вы можете преобразовать в удобные строки или структуры через Socket.io (необязательно и требует, чтобы ваш сервер отправлял данные в виде строк JSON).
Начиная с версии 0.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.