Unreal Engine Remote Control API / Webservers

  • Hallo ihr lieben,


    ich habe ein grundlegendes Verständnisproblem über die Prozesse in Unreal bezüglich Client-Server http Kommunikation. Ich glaube dass zumindest der Term "Server" mehrdeutig verwendet wird. Ich als Anfänger kann die einzelnen Bedeutungen noch nicht auseinanderhalten.


    Aufgabe:

    Ich möchte eine Companion App zu einem Unreal Projekt bauen, die über WebSocket mit Unreal at runtime kommuniziert. Die App soll Daten aus dem laufenden Unreal Projekt sammeln und speichern und zudem Prozesse in dem laufendem Projekt starten und stoppen können. Die App soll auf der gleichen Maschine laufen, wie das Unreal Projekt, oder wenn es geht über LAN mit der Maschine verbunden sein, die das Projekt fährt. Ich möchte aber keine Verbindung über das Internet herstellen. Ich will das Projekt + App einem Kunden geben, darum habe ich keine Kontrolle dafür, was der Kunde für Software auf dem Rechner installiert hat neben dem Betriebssystem.


    Hintergrund:
    Ich habe in der offiziellen Dokumentation gelesen, dass ein Unreal Projekt in der Lage ist HTTP requests at runtime zu senden und zu empfangen. Desweiteren habe ich gelesen, dass ein Unreal Projekt auch über WebSockets mit einem WebSocket Server kommunizieren kann:


    Zitat

    "The Remote Control system makes this possible by running a web server inside the Unreal Engine that services WebSocket messages and HTTP requests made by remote web applications through a REST-like API." (https://docs.unrealengine.com/…ontrol-for-unreal-engine/)


    Problem:

    Doch je tiefer ich hier einsteige, desto verwirrender wird es. Denn obwohl Unreal hier scheinabr selbst einen Webserver (Prozess) hostet, wird nirgendwo erklärt, was Unreal dafür eigentlich voraussetzt. Für das offizielle "Remote Control Web Interface-Plugin", dass mit diesem System interagiert und genauso funktioniert, wie man es erwarten würde, wird z.B. ein installiertes Node.js auf dem PC explizit verlangt. Das widerspricht meiner Meinung nach der Aussage, dass der Webserver von Unreal selbst gehostet wird.


    Frage 1:
    Ich weiß also grade überhaupt nicht, wie ich anfangen soll. Muss ich einen eigenen Webserver auf der gleichen Maschine aufbauen auf der das Projekt läuft, der sich dann mit Unreal als Client verbindet? Oder Ist Unreal mein Server, für den ich Clients erstellen kann?

    Frage 2:
    Wenn man nach Client-Server Dingen bezüglich Unreal sucht findet man auch die Begriffe "Dedicated Server" und "Listen Server". Ich verstehe das Konzept hinter einem Dedicated- und einem Listen-Server, aber 0 über deren konkrete Funktion. Wie genau funktioniert die Netzwerk Kommunikation zwischen einem Unreal Client und einem Unreal Server? Ich finde kaum offizielle Informationen dazu. Wer schickt hier wie genau HTTP requests und was für Software muss nebenbei um das Unreal Projekt herum laufen, damit das alles so funtkioniert? Was für Systeme sind implizit für all das vorausgesetzt?


    Über ein paar Tipps würde ich mich sehr freuen! :)

  • Sleepy

    Hat das Thema freigeschaltet.
  • Hallo


    Ja das Multiplayer Networking und Remote Control web server sind komplett verschiedene Dinge.

    Der Remote Controler Web Server sollte auch nicht offen für das Internet sein.


    1. Das macht alle die Engine für dich. Du musst nur noch den server starten mittels:

    WebControl.StartServer<br>

    Es ist wirklich nur ein lokaler web server. Du kannst diesen gut benutzen um mittels REST funktionen aufzurufen mittels JSON.

    Vergiss aber nicht das Plugin zu aktivieren. Der Server hört dann auf 127.0.0.1:30010.

    Dein Companion app könnte dann von mir aus relativ simpel einfach funktionen aufrufen und daten lesen.


    2. Die sind für Multiplayer games, auch über das Internet. Das ist vermutlich nicht was du willst. Aber auch hier brauchst du keine extra Software.


    Gruss