Reverse the Verse – Object Container Streaming

Reverse the Verse ist zurück, gibt einen kleinen Rückblick auf die aktuelle Woche sowie speziell auf das Format AtV und beantwortet weitere Fragen zu diesen Themen. Der Stream kann jede Woche live auf dem CIG Twitch Channel angesehen und Fragen können direkt im Chat übermittelt werden.

Gastgeber dieser Episode ist Community Content Manager Jared Huckaby und als Gäste dabei sind unter anderem Gameplay Programmer Gordon McLean und Lead Network Programmer Clive Johnson und Lead Technical QA Chris.


Zusammenfassung

  • Was wollten wir am Anfang mit Object Container Streaming (OCS) erreichen?
    • Das Ziel war und ist immer noch Star Citizen für viele PCs spielbar zu machen. Die Masse an Planeten und Systemen wäre sonst nicht zu händeln und alles ohne Ladebildschirme zu realisieren.
  • Dabei muss man beachten, dass es einmal OCS für Server und für Clients (PCs/Spieler) gibt, richtig?
    • Korrekt, da der Server weiß, wo sich gerade der Client im Spiel befindet  und somit die Daten in den Speicher des Servers hinein lädt. Wenn der Spieler nun im System ankommt, gibt der Server dem Client an, welche Daten gestreamt werden müssen. Wenn der Spieler das System verlässt, wird der Speicher des Servers freigegeben, damit andere Daten hinein geladen werden können.
  • Diese Art der Technologie, mit dem Laden und Freigeben von Daten, ist aber nicht neu bzw. extra für Star Citizen entwickelt worden?
    • Das ist richtig. Diese Technologie gibt es schon einige Jahre, nur wird sie eher bei kleineren Karten genutzt in Multiplayer-Spielen oder Singleplayer-Spielen. Damit kann der Client alle Daten vom Server laden und es kommt zu keinem Einbruch der Framerate oder ähnlichem und die Daten müssen nicht gestreamt werden. Aufgrund der Größe von Star Citizen muss man Anpassungen vornehmen.
  • Nun geht aktuell um das Client OCS. Wie sieht es aus, wenn auch das Server OCS fertig ist?
    • Es sollte eine bessere Performance bringen, auch wenn es nicht das Allheilmittel ist. Der Client soll nur die Daten laden, die auch in seiner Umgebung relevant sind und den Speicher für die Daten dementsprechend wieder freigeben, wenn der Spieler selbst das System verlässt bzw. andere Spieler das System verlassen. Das von Serverseite aus zu registrieren und alles aufrechtzuerhalten ist dann die Sache des Servers, was dann auch nicht so rechenintensiv sein soll.
  • Was sind die Kriterien für das Laden in bzw. aus dem Speicher?
    • Hauptsächlich die Nähe zum Spieler und die Größe des Objektes.
  • Wird das dann vom Server oder vom Clients geregelt?
    • Das wird vom Server aus geregelt.
  • Bitte eine kurze Erklärung was Bind Culling ist.
    • Die Idee hinter Bind Culling ist, dass Objekte, die zu weit weg sind, nicht vom Client komplett geladen werden, sondern dass ein Marker gesetzt wird, der weniger Performance kostet. Zusätzlich schickt der Server in größeren Abständen Updates über das Objekt an den Client, anstatt den Client in kurzen Intervallen zu informieren, was mit dem Objekt ist. Anpassungen müssen sie noch für die Scanner-Mechanik machen, da zwar das Objekt vom Spieler nicht zu sehen ist, aber vom Radar schon und damit die Daten beim Client geladen sein müssen.
  • Was sind Serialized Variables?
    • Diese machen es möglich, dass die verschiedenen Technologien kommunizieren und effektiver zusammen arbeiten können. Dadurch ist es möglich, die Marker zu aktualisieren und an den Client zu senden. Dessen Serialized Variables werden dann entsprechend geändert. Marker, die sich nicht ändern, werden nicht an den Client gesendet. Da die Datenmenge dadurch gering gehalten wird, gibt es beim Spielen keine Einbrüche der Framerate.
  • Was bedeutet Full Client Streaming?
    • Hier muss man unterscheiden zwischen Client OCS und Bind Culling. Client OCS ist auch wichtig für Squadron 42. Auf dem Server sind alle Objekte allgegenwärtig, deswegen brauchen sie die Berechnungen der Entfernung für die verschiedenen Objekte, die dann vom Client geladen werden. Bind Culling hat die Kontrolle über OCS von Server-Seite aus auf die Clients.
  • Wenn wir bereits Bind Culling haben, warum dauert es dennoch so lange mit OCS?
    • Die Herausforderung ist, dass sobald Bind Culling dem Client die Daten senden will, da Objekte für den Spieler auftauchen, die Daten aktuell in den Main Thread geladen werden und alles andere geblockt wird. Da die Daten synchron übermittelt werden, werden erst alle Daten geladen, alles andere geblockt und dann auf dem Client dargestellt. Die Entwickler sind dabei, die Daten asynchron zu senden. Es wird also ein Teil an den Client gesendet und wenn dieser die Daten verarbeitet hat, folgen weitere Daten bis der Client alle Daten hat und dann das Objekt darstellt.
  • Wie testet man im QA das OCS?
    • Man fliegt viel umher, da die verschiedenen Objekte hinein und hinaus geladen werden sollen. Als Beispiel geben sie an, man befindet sich im Dogfight und im Laderaum ist ein Spieler der eine Box in den Händen hält und diese hinter dem Schiff hinaus wirft. Zeitgleich wird das Raumschiff zerstört und es kommt ein dritter Spieler zurück, der einen vorher im Dogfight gesehen hat. Nun ist für ihn die Situation anders. Die Kollegen vom QA Team prüfen jetzt, ob der Client die Änderungen korrekt anzeigt, ob die Box im Weltraum schwebt, ob die Spieler am Leben sind etc. Komplizierter wird es wenn es größere Gruppen an Spielern sind, die sich zum Beispiel auf GrimHex oder Port Olisar aufhalten.
  • Wie ist die Erfahrung mit Client OCS?
    • Ihnen ist bekannt, dass die Performance bisher nicht so gut war. Alle vom QA Team machen diese Erfahrung tagtäglich. Aber aktuell melden so gut wie alle Kollegen eine spürbare Verbesserung, manche sogar eine drastische Steigerung der Performance.
  • Wird es durch OCS möglich sein, mehr Spieler auf den Servern zu haben?
    • Nein, mehr Spieler werden durch Client OCS nicht möglich sein. Erst mit dem Server OCS werden mehr Spieler pro Server möglich.
  • Warum werden Server und Client OCS getrennt bearbeitet?
    • Für das Server OCS haben sie noch nicht die benötigten Technologien, deswegen arbeiten sie zuerst am Client OCS.
  • Wird OCS die Sichtreichweite beeinflussen?
    • Nicht wirklich, es könnte zu leichten Pop-Up Effekten kommen.
  • Welche Fortschritte kann man aus Entwicklersicht erkennen?
    • Im Allgemeinen lässt sich die aktuelle Version schneller laden und auch Stationen wie Port Olisar mit allen Objekten lassen sich schneller laden.
  • Was war die größte Herausforderung bei der Entwicklung von OCS?
    • Einerseits die asynchrone Datenübertragung im Netzwerk. Auch die Kommunikation zwischen den vielen Teams, welche von OCS betroffen sind. Für das QA Team war die Herausforderung, auf so vielen PCs wie möglich die aktuellste Version zu testen, um so viele Bugs wie möglich zu finden.
  • Werden Hardwarekomponenten wie CPU, GPU, RAM etc. von OCS profitieren?
    • Am meisten wird der RAM davon profitieren, ansonsten in Maßen die CPU und GPU. Dabei muss man sagen, dass noch viele Anpassungen gemacht werden müssen.
  • Hat OCS einen Nachteil?
    • Für das QA Team ist es die Zeit, die es dauert, die Neuerungen beim OCS zu testen. Ansonsten muss bei mehr Objekten die in Spiel kommen die Wechselwirkungen immer mehr beachten und die Kommunikation zwischen Server und Client muss richtig funktionieren, damit der Client nur das an Daten bekommt, was notwendig ist.
  • Kann man Bugs, die verursacht werden, durch OCS erkennen?
    • Allgemein soll man einfach weiter vermeintliche Bugs melden. OCS Bugs könnten sein, dass Objekte oder Personen hin und her springen.
  • Was ist der Unterschied zwischen asynchronem Spawning und normalem Spawning?
    • Der Unterschied ist, dass asynchrones Spawning nicht im Main Thread passsiert, sondern secondary Thread.

Quelle: RSI
Übersetzung: StarCitizenBase
Social Media: FaceBook | Twitter | Community Hub

 

Paldur

Unterstütze uns und verwende den Referral Code beim Kauf von StarCitizen und starte mit 5.000 UEC extra!REFERRAL Code: STAR-V9QH-RXCB Werde ein Teil von Star Cititzen!

11 Kommentare zu “Reverse the Verse – Object Container Streaming

  • 10. September 2018 um 07:53
    Permalink

    Erstmal Danke für die Zusammenfassung, hier bin ich immer froh das es euch gibt … das ganze Thema ist ja hochkomplex und fachspezifisch.
    Und wenn man sich das alles so durchliest, würde ich mir doch wünschen … nochmal 20 Jahre zurück und nen anderen Berufszweig wählen 🙂
    Aber hätte, hätte, hätte liegt ja im Bette also weitermachen ^^

    Antwort
  • 10. September 2018 um 08:08
    Permalink

    Ich dachte, dass ocs mit 3.3 komplett ins Spiel kommt.
    Schade.
    Anscheinend ja doch nur ein Teil davon.

    Aber scheinbar dennoch ein wichtiger Teil!

    Antwort
    • 10. September 2018 um 08:24
      Permalink

      Naja von Anfang an haben sie ja kommuniziert, dass es vor allem um das “Client OCS” geht (zumindest was die Erklärungen angeht, was sie damit meinen).
      Das gute ist, dass wir für das Server OCS keinen Patch brauchen, sondern es einfach im Background auf die Server aufgespielt wird, wenn es dann fertig ist 😀

      Antwort
      • 10. September 2018 um 09:19
        Permalink

        Ja
        Nur leider wurde mit den Arbeiten am Server ocs noch nicht begonnen…
        ☹️

        Antwort
        • 10. September 2018 um 09:47
          Permalink

          Stimmt. Hoffentlich reicht der Performance-Boost vom Client-OCS schonmal aus.

          Aber da merkt man einfach, dass Netzwerk/Server-Programmierer im Vergleich zu anderen Disziplinen wirklich nicht auf Bäumen wachsen.

          Antwort
  • 11. September 2018 um 11:16
    Permalink

    Mir war bisher nicht bewusst, dass OCS zunächst mal nur Clientseitig erscheinen wird. Nicht mehr Spieler pro Server. Die Kerntechnologien für das Serverseitige OCS existieren noch nicht einmal. Dafür dass dieses OCS schon so lange auf dem Plan steht finde ich das nun nach der langen Verschiebung schon eine herbe Enttäuschung. Die Kernaussage von Chris Roberts, alle Spieler auf einen Server-Mesh zu kriegen, halte ich mittlerweile für sehr gewagt.

    Antwort
    • 11. September 2018 um 13:28
      Permalink

      Nun erstmal abwarten was mit 3.3 tatsächlich kommt und wie dann die Performance ist. Das OCS scheint ja wirklich ein riesen Brocken zu sein! Wenn alles klappt und wir mit 3.3 das Client OCS + Hurston und Monde kriegen und auch die Performance spürbar besser ist bin ich schon seeeeehr zufrieden! Den Rest schaffen sie gewiss auch noch. Bis jetzt hat CIG ja ganz gute Arbeit geleistet. Nur eben nicht so schnell wie wir es gerne hätten. Dann dauerts eben noch ein Weilchen. Damit kann ich leben, wenn – wie gesagt – Patch 3.3 alle Erwartungen erfüllt.
      Man hätte ja vor ein paar Jahren auch nicht gedacht, dass sie diese großen Monde hinkriegen, frei begehbar und so.

      Antwort
    • 11. September 2018 um 15:29
      Permalink

      Das ist alles eine Frage der Programmierung.
      Als Spieler kann man von einer Server Instanz zur anderen gelangen ohne es zu merken.
      Dazu kommt noch, dass sich die Masse der Spieler wegen der Menge an Systemen aufteilen wird.
      Es wird zwar Hotspots geben, bei denen die Performance in den Keller geht, aber dieses Problem teilen alle MMOS in denen viele Spieler auf engen Raum zusammen kommen.

      Antwort
  • 11. September 2018 um 14:31
    Permalink

    Ja
    Warten wir Mal ab, was jetzt mit Client ocs besser oder anders wird…

    Evtl. Reicht die die Client Seite erstmal aus um die Gemüter zu besänftigen ?

    Was ist denn die aktuelle Obergrenze für Spieler auf 1 Server?

    So oder so freue ich mich tierisch auf die Con und bin gespannt was dieses Jahr noch so passieren wird.

    Antwort
    • 11. September 2018 um 14:39
      Permalink

      50 Spieler sind es derzeit.

      Bin aber deiner Meinung. Vielleicht reicht Client OCS ja erstmal aus. Viele interne Tester scheinen ja signifikante Leistungsverbesserungen bekommen zu haben.

      Antwort
      • 11. September 2018 um 15:53
        Permalink

        50 Spieler empfinde ich eigentlich auch nicht gerade als wenig…. Zumindest für den aktuellen Stand des Spiels.
        Später sollen es natürlich mehr sein!

        Aber 50 Spieler, das ist doch im Moment schon was, womit man in der Alpha zufrieden sein kann.

        So viele auf einmal wird man eh eher selten zu Gesicht bekommen im Alltag.
        Auch später wenn sc mal final sein wird…

        Am Hotspots bestimmt, ja.
        Oder wenn wirklich Mal ne Raumschlacht ansteht…
        Aber bis dahin ist 50 erstmal okay, wenn die Performance dafür rund läuft, denke ich.

        Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert