Mit einer Cloud permanent kommunizieren

  • Hallo Leute,


    gibt es in der Unreal Engine die Möglichkeit (Gerne auch mithilfe eines PlugIns) eine Anwendung zu schreiben, die permanent mit einer Cloud kommuniziert und sich von dort Daten abgreift, welche dann in meiner lokalen Anwendung dargestellt werden?


    Als Beispiel: Man hat ein fast komplett leeres Level, lokal auf meinem Rechner. Irgendwo in einer Cloud liegen Gelände, Gebäude, Bäume usw.. Wenn ich jetzt die Anwendung starte, füllt er meinen lokalen leeren Level mit den Gegenständen aus der Cloud, ohne dass diese bei mir lokal abgelegt werden müssen. Ist das umsetzbar?


    Viele Grüße :)

  • Hallo


    Ja das ist möglich. Du kannst die Objekte aus der Cloud laden, zum Beispiel mit diesem Plugin.

    Dann liegen die Objekte irgendwo in der Cloud und werden von da geladen und anschliessen gespawnt. Das funktioniert mit StaticMesh, aber auch Skeletal Mesh mit Animation und Materials. Ist relativ simpel, das laden kann allerdings ein bisschen dauern.


    Alternativ, kannst auch Pixel Streaming verwenden. Dort renderst du die Dinge einfach auf dem Server und überträgst einfach das Bild. Hier hast du wirklich die volle Kontrolle auf dem Server. Per default läuft deine Applikation dann im Web Browser. Der Vorteil ist, dass du nichts laden musst und einfach das fertige Bild überträgst. Cool auch, der User braucht keinen starken Pc. Das rendern übernimmt der Server.


    Gruss

  • Hallo Phoenix,


    wow, erstmal vielen Dank für die super schnelle und sehr fachliche Antwort.

    Die Plugins werde ich mir mal ansehen. Du meintest eben noch, dass die Applikation "per default" im Web Browser läuft. Wurde der Service für das Packaging in HTML 5 nicht abgesetzt und somit die Version 4.24 die letzte Verbliebende ist, die das kann? oder verstehe ich etwas falsch an dieser aussage?

  • Es ist richtig, das Packaging für HTML5 wird nicht mehr offiziell unterstützt. Es ist aber nicht zu vergleichen mit Pixel Streaming. Pixel Streaming wird in den aktuellsten Version vollständig unterstützt.


    Das HTML5 Packaging, hat die Applikation für den Browser exportiert, das Rendern wird aber auf dem Client gemacht. Die Last liegt also beim Client, genau wie bei ganz normalen Spielen.

    Bei Pixel Streaming, wird das Bild auf dem Server gerendert und lediglich auf dem Client gestreamt Das rendern findet auf dem Server statt. Da die Hauptlast liegt also auf dem Server, können auch sehr schwache Geräte tolle Grafik erhalten. Einfach gesagt wird nur ein Video vom Server auf den Client gesendet. Entsprechend ist die Last auf dem Server aber viel höher.


    Das sind zwei fundamental verschiedene Dinge.

  • Hallo Phoenix,

    danke erneut für deine Antwort. PixelStreaming hat funktioniert und läuft einwandfrei. Ich habe aber noch eine richtig dämliche Frage diesbezüglich, zu der ich im Netz keine Antwort finden konnte:


    Ist es mit Pixel Streaming möglich das mehrere Personen zwar auf den Server zugreifen können, aber jeder sein eigenes individuelles Bild sieht? Aktuell ist es natürlich so, dass alle Personen ein- und demselben Character sehen und bedienen können und jeder sieht sozusagen, was die Anderen machen

  • Hallo


    Es gibt im Grunde zwei Szenarien. Das erste ist, dass alle zwar das gleiche Bild haben, aber verschiedene Möglichkeiten der Kontrolle. Das ist auf einer Instanz auf dem Server möglich und du kannst in JavaScript verschiedene Interaktionsmöglichkeiten erstellen für verschiedene User, im Grund bleibt es aber eine Instanz und das findet damit irgendwo dann Grenzen. Um dein Beispiel aufzugreifen, es bleibt bei einem Character.


    Das andere Szenario ist, dass du möchtest dass alle Nutzer unabhängig ein eigenes Bild haben. Dazu musst du aber für jeden Nutzer auf dem Server eine Instanz erstellen. Du kannst mehrere Instanzen auf einem Server haben, wie beim "normalen" Client-Server Multiplayer braucht die Instanzen einfach einen eigenen Port.

    Das Problem dabei ist natürlich, dass das ohnehin schon relativ GPU aufwändig ist und du nicht duzende Instanzen / Server im "Wartemodus" halten möchtest, weil teuer.

    Dank Cloud computing ist das aber auch nicht nötig. Mittels dem Cloud Anbieter deines Vertrauens kannst du einfach je nach Nachfrage hoch und runter skalieren ("Scaling on Demand"). Also je nachdem, wie viele zugreifen möchten, fügt der Anbieter dann automatisch Server hinzu und schaltet diese wieder ab, wenn die Nachfrage nachlässt

    Die aktuell verfügbaren Server werden von einem Matchmaking Server verwaltet, die Unreal Engine hat davon auch eine Beispielimplementation.


    Problematisch sind die Kosten (zumindest aus meiner Sicht).

    Du brauchst Server mit starker GPU und die sind verhältnissmässig teuer. Ob das wirtschaftlich möglich ist, hängt stark von deinem Anwendungszweck ab.


    Gruss

    • Offizieller Beitrag

    Lalilu Was hast du den genau vor ?


    Um zu wissen ob dass was du vorhast der Optimale Weg ist, wäre gut zu wissen was du konkret vor hast.

    Sonst bekommst du zwar eine Lösung aufgrund deiner Fragen präsentiert aber die muss dann nicht beste sein.


    Grundsätzlich solltest du so viele dinge wie möglich Lokal auf dem Clint berechnen und nicht jede Änderung an den Host schicken.