Pixel Streaming leicht gemacht

Technik

Kurzbeschreibung

Das Präsentieren von performancelastigen Unreal Engine 4 Applikationen zwingt häufig leistungsschwache Geräte in die Knie. Große und grafisch hochwertige Projekte eignen sich deshalb nicht für jedes Endgerät. Mit Pixel Streaming können leistungsintensive Unreal Engine Anwendungen für nahezu jedes Endgerät zugänglich gemacht werden. Wie soll das gehen? Dieser Artikel zeigt wie.

Was ist Pixel Streaming

Beim Pixel Streaming werden Unreal Engine Anwendungen gestreamt, vergleichbar mit YouTube oder anderen Streaming-Diensten. Im Gegensatz zu herkömmlichen Streaming Diensten, kann dieser Stream per Maus und Tastatur gesteuert und die Applikation mittels Cloud-Computing auf einer virtuellen Computer-Instanz starten. Der Endverbraucher kann die Applikation ohne zusätzliche Software bequem vom Webbrowser bedienen. In den nachfolgenden Abschnitten wird der Vorgang am Beispiel einer Windows 10 (64-bit) Instanz und Amazon Web Services (AWS) erläutert.

Cloud-Computing

Unter Cloud-Computing versteht man die Verlagerung von Rechenleistung. Diese Computerressourcen werden nicht lokal (auf dem eigenen PC) genutzt. Sie werden in Form eines virtuellen Computers über das Internet bereitgestellt und sind geräteunabhängig. Es stehen viele Cloud-Computing-Anbieter zur Auswahl. In diesem Artikel wird auf die Einrichtung mit AWS (Amazon Web Services) eingegangen. AWS ist ein etablierter Cloud-Computing-Anbieter, dessen Dienste von Unternehmen wie Netflix oder Dropbox genutzt werden.

Applikationen für Pixel Streaming vorbereiten

Aktivieren des Pixel Streaming Plugins

Um eine Unreal Engine Applikation streamen zu können, sind einige einfache Schritte notwendig. Das Pixel Streaming Plugin ist standardmäßig nicht aktiv und muss manuell aktiviert werden.

Hierfür wird im Unreal Engine Editor das „Plugins“ Menü unter dem Reiter „Edit“ geöffnet. Unter der Kategorie „Graphics“ befindet sich das Pixel Streaming Plugin. Nachdem das Häkchen bei „Enabled“ gesetzt wurde, muss der Editor neu gestartet werden.

Packaging der Unreal Engine Applikation

Damit die Applikation unabhängig vom Unreal Engine Editor genutzt werden kann, muss ein „Package“ aus dem Projekt erstellt werden. Dieses „Package“ beinhaltet alle nötigen Dateien für die Einzelanwendung. Ein „Package“ wird im Hauptmenü unter: File - > Package Project - > Windows (64-bit) erstellt. Im Anschluss wird ein Zielort für die Applikation gewählt. Die Dauer des Vorgangs variiert je nach Projektgröße.

Einrichtung der AWS Instanz

Damit Pixel Streaming möglich ist, muss eine AWS Computer-Instanz eingerichtet werden. Dazu wird zunächst ein Benutzerkonto bei AWS erstellt. Zwar ist AWS ein Tochterunternehmen von Amazon, wird jedoch mit separaten Accounts behandelt.

Ist der Account erstellt, kann die Region geändert werden. Im besten Fall wird der nächstmögliche Standort des Servers ausgesucht. Im Fall von Studio Merkas wurde „eu-central-1“, dessen Standort in Frankfurt ist, gewählt. Hierfür wird oben rechts auf dem Dashboard zu dem Punkt „Region“ navigiert. Das Dashboard ist das Hauptmenü nach dem erfolgreichen Login. Dort kann der gewünschte Standort im Drop-Down Menü ausgewählt werden.

Die Auswahl der gewünschten Hardware

Bei der Wahl der Computer-Instanz ist es wichtig, den Anwendungsbereich der Applikation zu kennen. Bevor eine Computer-Instanz gestartet wird, muss der gewählte Instanz-Typ im Vorfeld bestimmt werden. Über die verschiedenen Instanz-Typen erfahren Sie mehr in "Amazon EC2 Instance-Typen - Amazon Web Services (AWS)". Neue AWS Accounts starten ohne verfügbare virtuelle Prozessoren. Die Anzahl dieser vCPUs bestimmt die Rechenleistung der Instanz. Da Applikationen aus der Unreal Engine meist Performance lastig sind, eignen sich Gaming-Computer-Instanzen dafür. Für den Test wird eine „g4dn.xlarge-Instanz“ gewählt, welche für grafikintensive Workloads entwickelt wurde. Sie beinhaltet 4 vCPUs und 16GB RAM.

Eine Erhöhung der vCPU Begrenzung anfragen

Um eine Erhöhung der vCPU zu beantragen, kann im Dashboard in der Suchleiste nach EC2 (Elastic Computing Cloud) gesucht werden. Im EC2 Dashboard kann unter dem Reiter „Beschränkungen“ auf „Berechnen des vCPU-Limits“ geklickt werden. Hier wird im Drop-Down Menü die gewünschte „g4dn.xlarge-Instanz“ ausgewählt. Unter „Aktuelles Limit“ sollten 0 vCPUs verfügbar sein. Über „Erhöhung des On-Demand-Limits beantragen“ kann nun die Erhöhung angefragt werden. Bei On-Demand-Instanzen kommen Kosten nur durch das Starten einer Instanz zustande.

Nach Abschicken der Anfrage wird der Fall von AWS geprüft und kann einige Tage in Anspruch nehmen. Der aktuelle Stand sowie den entsprechenden Schriftverkehr kann auf der Support-Seite eingesehen werden. Hierfür kann in der Suchleiste „Support“ eingegeben werden.

Nach Akzeptierung der Erhöhung durch AWS

Wurde die Erhöhung akzeptiert, kann die Instanz gestartet werden. Auf dem EC2 Dashboard kann unter „Instances“ auf „Instances starten“ die Instanz gestartet werden.

Bist Du bereit, Deine Spielevision zum Leben zu erwecken? Setze Dich noch heute mit uns in Verbindung, um mehr darüber zu erfahren, wie wir Dir mit unseren Spieleentwicklungsdiensten dabei helfen können, deine Vorstellungen und Ideen erfolgreich zu verwirklichen!

Um an die gewünschte Instanz zu gelangen, wird in der Suchleiste nach dem Schlagwort „Gaming“ gesucht. Dort können die Suchergebnisse des AWS Marketplaces angezeigt werden. In den Suchergebnissen befindet sich nun der gewünschte „NVIDIA Gaming PC – Windows Server 2019“ Computer. Dieser kann ausgewählt werden. Die Abbildung zeigt eine Preisübersicht dieser Instanz an. Die Kosten der „g4dn.xlarge“ Instanz belaufen sich auf 0,842$ pro Stunde. Der Preis des Speichers beträgt 0,119$ pro GB. Danach wird die Instanz aus der Liste ausgesucht und markiert.

Unter „Konfigurieren von Instance-Details“ werden die Standardeinstellungen übernommen. Im nächsten Schritt wird der Speicher bestimmt. Für den Test werden hier 30 GB des Allzweck-SSD Volume-Typs gewählt. Der Schritt „Tags“ kann übersprungen werden.

Security Groups und Sicherheitsschlüssel erstellen

Damit die Instanz aus dem Internet erreichbar ist, muss eine Security Group erstellt werden. Diese Security Groups sind mit einer virtuellen Firewall vergleichbar und kontrollieren den Datenverkehr. Von der folgenden Abbildung können die verschiedenen Ports übertragen werden. Bei den Einstellungen handelt es sich um eine Standardkonfiguration, um eine Unreal Engine Applikation zu streamen.

Die Ports 80/8888 sind für das Pixel Streaming über die Unreal Engine notwendig. 19302-19303 ist für den STUN Server nötig. 3389 wird für den Fernzugriff auf den Desktop verwendet. Im nächsten Fenster können alle Einstellungen überprüft werden. Der Button „Starten“ ist nun verfügbar und kann nun betätigt werden.

Danach wird aufgefordert, ein Schlüsselpaar zu erstellen. Dafür wird ein Schlüsselpaarname gewählt und anschließend heruntergeladen. Diese „pem“ Datei muss gut aufgehoben werden, da sie für den Fernzugriff benötigt wird. Die Instanz kann nun gestartet werden.

Erster Boot der virtuellen Instanz

Unter „Instances“ im EC2 Dashboard kann der aktuelle Status der Instanz geprüft werden. Die Statusüberprüfung kann bei dem Start der Instanz etwa 10 Minuten dauern.

Bevor eine Remote Verbindung zum Desktop aufgebaut wird, sollte eine Elastic IP erstellt werden. Diese IP Adresse wird genutzt, um auf die Instanz zugreifen zu können. Dafür wird im EC2-Dashboard unter dem Reiter „Elastic IP“ zu „Elastic IP-Adresse zuweisen“ navigiert. Die Standardeinstellungen können übernommen werden.

Im Instances Tab kann die laufende Instanz markiert und unter Aktionen neu gestartet werden. Anschließend kann die Instanz unter Aktionen verbunden werden. Praktisch für die Verbindung ist die Remote Desktop File. Diese kann im Popup-Fenster heruntergeladen und im Anschluss ausgeführt werden. Unter „Passwort abrufen“ kann der heruntergeladene Key entschlüsselt werden.

Im folgenden Fenster wird die .pem Datei benötigt. Diese wird eingefügt und entschlüsselt. Der Schlüssel kann in der Remote Desktop Applikation eingefügt werden.

Nachdem das Passwort bestätigt wurde, öffnet sich ein neues Fenster mit dem Desktop der Instanz. Die Instanz kann nun wie ein normaler Desktop genutzt werden. Auf dem Remote Desktop kann jetzt die Firewall ausgeschaltet und node.js installiert werden.

Applikation am virtuellen Desktop einrichten

Das im Vorfeld vorbereitete Applikations-Package kann nun auf die Instanz übertragen werden. Hier stehen einige Möglichkeiten zur Verfügung. Im Test wird WeTransfer genutzt.

Im Hauptverzeichnis des Packages wird von der auszuführenden .exe Datei eine Verknüpfung erstellt. Dafür wird die .exe mit gedrückter ALT-Taste in einen freien Bereich des Ordners gezogen. Anschließend werden die Startoptionen für diese Verknüpfung bestimmt. Mit einem Rechtsklick auf die Verknüpfung werden die Startoptionen in den Eigenschaften unter „Ziel“ eingefügt.

-AudioMixer -PixelStreamingIP=[IP-ADRESSE]-PixelStreamingPort=8888

Anstelle von „IP-Adresse“ wird die öffentliche IP-Adresse der Instanz verwendet. Diese befindet sich auf dem Desktop im oberen Bereich auf der rechten Seite.

Im letzten Schritt muss der STUN und TURN Server eingerichtet werden. Dazu wird eine Kopie der Datei Start_AWS_WithTURN_SignallingServer.ps1 erstellt. Diese Datei befindet sich in WindowsNoEditor\Engine\Source\Programs\PixelStreaming\WebServers\SignallingWebServer.

Mit gedrückter STRG-Taste wird die Datei in einen freien Bereich des Ordners gezogen um eine Kopie zu erstellen. Diese Kopie dient nur zu einem Backup und ist optional. Die Datei kann nun in einem beliebigen Texteditor bearbeitet werden. Hier müssen lediglich drei Stellen abgeändert werden.

Als erstes wird der STUN Server eingefügt. Hierfür gibt es eine Liste von frei nutzbaren Servern auf GitHub. Danach wird der TURN Server hinzugefügt. Für den TURN Server wird die öffentliche IP-Adresse genutzt. In der folgenden Abbildung ist das korrekte Einfügen der Adressen gezeigt.

Als letztes wird der Invoke-WebRequest abgeändert, damit die öffentliche IP-Adresse zum Aufrufen der Applikation genügt. Die Adresse api.ipify.org (Für Niko: nur als Text und nicht als Link anzeigen lassen!) kann in der dritten Zeile abgeändert werden. Hierfür wird die bestehende Adresse überschrieben.

Anschließend kann die Datei gespeichert werden.

Im selben Ordner kann die Datei runAWS_WithTURN.bat ausgeführt werden. Nach kurzer Ladezeit sollte das Konsolenfenster drei grüne gefärbte Befehle anzeigen. Ist dies der Fall, kann die Verknüpfung der .exe im Hauptverzeichnis gestartet werden.

In einem beliebigen Webbrowser kann jetzt mit der öffentlichen IP-Adresse auf die Applikation zugegriffen werden.

Fazit

Pixel Streaming ist eine einfache Möglichkeit um Unreal Engine Spiele oder Applikationen über das Internet zu präsentieren. Gerade für Kunden, welche nicht über das nötige Knowhow oder die passende Hardware verfügen, ist Pixel Streaming eine hervorragende Art, um mit der Applikation zu interagieren. Wenn Pixel Streaming das Übertragungsmedium der Wahl sein soll, sollten einige Tage für die Einrichtung eingeplant werden. Das Freischalten der virtuellen Prozessoren durch AWS kann unter Umständen mehrere Tage dauern.

Fragen & Wünsche

Wir hoffen, dass Dir unser Artikel gefällt und möchten Dich dazu einladen, uns Deine Gedanken und Fragen zu dem Thema mitzuteilen. Wenn Du Fragen, Kommentare oder Feedback zum Inhalt dieses Artikels hast, zögere bitte nicht, uns auch diese im Kommentarbereich anzuvertrauen. Wir freuen uns immer, von unseren Lesern zu hören und uns an sinnvollen Diskussionen über die Spieleentwicklung zu beteiligen.

Frage uns einfach alles was Du wissen willst und wir werden unser Bestes tun, um die Antworten zu geben, nach denen Du suchst. Vielen Dank für Deine Unterstützung und wir freuen uns darauf, von Dir zu hören!

Kommentar Formular

Write comment

* These fields are required

Kommentare

Comments

No Comments

Weitere spannende Beiträge