Commodité ActorComponent UDP wrapper pour Unreal Engine.
Ce n'est peut-être pas le wrapper le plus judicieux pour votre cas d'utilisation, mais il est destiné à coexister avec https://github.com/getnamo/SocketIOClient-Unreal avec un flux de travail similaire.
Encapsule la fonctionnalité udp Unreal intégrée en tant que composant d'acteur ( UDPComponent ) avec des capacités d'envoi et de réception. Fonctionne via le wrapper c++ FUDPNative qui peut être inclus et lié à nouveau dans une classe de composant non acteur personnalisée si vous le souhaitez.
Confirmé de travailler avec le dgram node.js (voir l'exemple essentiel du serveur d'écho pour les tests).
Serveur Discorde
Sélectionnez un acteur de votre choix. Ajoutez un composant UDP à cet acteur.
Sélectionnez le composant nouvellement créé et modifiez les paramètres par défaut
Par défaut, le composant udp Actor ouvrira automatiquement les sockets d'envoi et de réception au début de la lecture. Si vous souhaitez uniquement envoyer, décochez la case pour ouvrir automatiquement la réception ; à l'inverse, décochez l'envoi à ouverture automatique si l'envoi ne vous intéresse pas.
De plus, si vous souhaitez vous connecter/écouter à votre rythme, décochez l'une ou l'autre et connectez-vous manuellement via, par exemple, un événement clé.
L'adresse IP de réception de 0.0.0.0 écoutera toutes les connexions sur le port spécifié.
Une fois votre socket d'envoi ouverte (socket préparé plus précisément pour l'envoi, puisque vous ne recevez pas de rappel en UDP comme en TCP), utilisez submit pour envoyer des données, conversion utf8 fournie par le plugin socket.io. NB : si vous oubliez d'ouvrir votre socket, émettra s'ouvrira automatiquement sur les paramètres par défaut et émettra.
renvoie vrai si l'émission est traitée. NB : udp n'est pas fiable donc ce n'est pas un retour que les données ont été reçues à l'autre bout, pour une connexion fiable pensez à TCP.
Une fois que vous avez ouvert votre socket de réception, vous recevrez des données sur l'événement OnReceivedBytes
que vous pouvez convertir en chaînes ou structures pratiques via socket.io (facultatif et nécessite que votre serveur envoie des données sous forme de chaînes JSON).
Depuis la version 0.9.5, lorsque vous ouvrez un socket d'envoi, cela génère un port d'envoi lié que vous pouvez utiliser pour écouter les événements udp du côté réception. Cela devrait aider à percer le NAT en raison du comportement attendu.
Pour utiliser cette fonctionnalité, vous pouvez utiliser Should Open Receiver To Bound Send Port , ce qui entraînera la liaison automatique de toute réception ouverte à votre adresse IP d'envoi et à votre port d'envoi lié.
Ou si vous souhaitez le faire manuellement, vous pouvez décocher Doit ouvrir automatiquement la réception , puis ouvrir avec vos propres paramètres, par exemple envoyer un événement d'ouverture de socket avec le port lié.
Chaque version inclut le plugin client socket.io, ce plugin est destiné à être utilisé pour un contrôle fiable, puis les composants de données en temps réel/les plus récents de votre réseau peuvent être acheminés à l'aide de ce plugin udp. Pensez à horodater vos données afin de savoir quels paquets supprimer/ignorer.
Fonctionne hors de la boîte.
Si vous l'utilisez comme plugin de projet, vous devrez convertir votre projet uniquement en projet mixte (bp et C++). Suivez ces instructions pour ce faire : https://allarsblog.com/2015/11/04/converting-bp-project-to-cpp/
Par exemple, en utilisant l'option de menu Fichier pour convertir votre projet en projet mixte en ajoutant un fichier C++.
Licence MIT.
Largement inspiré de https://wiki.unrealengine.com/UDP_Socket_Sender_Receiver_From_One_UE4_Instance_To_Another.