Chris Roberts Erklärung für die Client-Seite

Well, on a client you just can't render 500 people. Just won't happen. What we will probably do is, besides having aggressive Level of Details, at some point we just cull out people beyond a certain area. They will all be sort of tagged and known there. As you move around as a client people will come in and out of your visibility - basically your sphere of visibility. I think it will be pretty seamless.

On top of that, you know, getting down to your friends which is one key parts of this question. We will know, who are sort of your acquaintances, who is your person of interest, who you play with, who is on your friend list, stuff like that. If you are making decisions of who you can see: Like as in at some point there are to many people and the client saying: "I can't just render that many people. I have to choose some entities and people to not see."



It would not be the people you as a player has sort of tagged as your friends or the ons you are interested in. They would get preference in terms of the algorithm that determines who you see and who is culled out.







Die Grundlagen des Systems

Raumschiffe um das eigene Schiff

Zu viele Raumschiffe im Sichtbereich

Rund um die großen Planeten (Erde, Terra)

Strategisch günstig gelegene Planeten Raumstationen

Start- und Landebuchten sowohl auf Planeten als auch Raumstationen

Quests- bzw. Missionshubs sowie die Orte wo die Missionen hinführen

Jede Art von größerer Raumschlacht (Dogfighting mit vielen kleinen Schiffen + Trägerschiffe etc.)

und vieles mehr





Dazu kommt noch das normale Spielerverhalten in MMOs. Viele Gilden treffen sich im Spiel an zentralen Punkten. Meist wo es genug Shops gibt, um die nötigen Vorräte für die kommenden Aufgaben aufzufüllen. In Star Citizen wird das selbstredend um Raumstationen und vor Planeten sein. Fliege ich jetzt also auf eine solche Raumstation zu, wo sich zig Gilden gerade auf einen "Raid" vorbereiten, dann kann es dort sehr schnell im Sichtbereich komplett überlaufen sein.





Was sieht Chris Roberts in diesem Fall vor? Wie Ihr oben lesen konntet, sagt er, dass dann der Client (mit den Daten des Servers zusammen) Raumschiffe im Sichtbereich ausblenden wird. Das folgende Bild zeigt Euch, wie das dann aussehen könnte. Den Scannerbereich und die Ränder habe ich hier der Einfachheit halber weggelassen.





Ausblenden von Raumschiffen im Sichtbereich





Das ist selbstverständlich die logische Konsequenz, wenn zu viele Spieler an einem Ort versammelt sind, und es keine Instanzen gibt. Jeder von Euch hat sicher in einem anderen MMO mal einer riesigen Ansammlung an Spielern beigewohnt. Ab einer bestimmten Zahl an Spieler bewegt sich einfach nichts mehr. Das liegt ganz oft daran, dass das Netzwerk und die CPU (die die Pakete zu verarbeiten hat), einfach nicht mehr hinterherkommen.





Wenn Ihr jetzt noch bedenkt, dass Star Citizen riesige Schiffsmodelle hat, die Dutzende Komponenten haben, die alle übers Netzwerk übertragen werden müssen (ein kleines Schiff wie die Hornet hat um die 70 Komponenten), dann sollte schnell klar sein, dass bei Star Citizen schon eine wesentlich kleinere Zahl an Spielern (Schiffen) für eine Überlastung des Netzwerkes sorgen könnte, als bei normalen MMOs. Insofern sehe ich hier gar nicht die Grafikkarte als Hauptproblem (sie würde es aber werden, wenn die Netzwerklast gestemmt werden könnte).





CIG hat also keine andere Möglichkeit, als Spieler auszublenden, um stabile Frameraten zu erreichen.





Jetzt stellt sich aber die Frage, wie entscheidet das Spiel, welchen anderen Spieler ich sehe und wen nicht. Dafür soll die Freundesliste, die Organisation und weitere Kriterien genutzt werden (wahrscheinlich Ping, aktuelle Gruppe, ...). Chris Roberts sagt, dass dies sicherstellen sollte, dass nicht die falschen Spieler im Sichtbereich ausgeblendet werden.





Probleme mit der Immersion

Zwei Spieler im Sichtbereich sehen sich nicht

Angezeigte Schiffe für die beiden Spieler

Lösungsmöglichkeiten









Ich hatte oben schon die ein oder andere Idee angeführt, die ich für kaum zielführend halte. In diesem Abschnitt soll es um mögliche Systeme gehen, welche die Hauptursache für das Ausblenden von Schiffen (zu viele Spieler im Sichtbereich) reduzieren können.

Landebereiche, im Orbit über einer Stadt auf der Planetenoberfläche

Schlusswort

Im ersten Teil zum neuen Instanzierungssystem für Star Citizen ging es vor allem um die Server-Seite. In diesem Artikel wollen wir uns den Neuerungen auf der Client-Seite widmen. Hierfür hat Chris Roberts angekündigt, dass Raumschiffe anderer Spieler im eigenen Sichtbereich ausgeblendet werden, falls sich dort mehr Spieler aufhalten, als die PC-Hardware des Clients anzuzeigen im Stande ist.Bevor wir in die Details gehen, hier nochmal der Hinweis, auf den ersten Teil dieser Artikelreihe zum neuen System für die Instanzierung:Darin findet Ihr das komplette englische Transkript der Aussagen aus 10 for the Chairman. Außerdem - wie oben schon erwähnt - habe ich dort insbesondere die Server-Seite ausführlich beschrieben und einige Hürden, die CIG noch zu überspringen hat, erläutert.Nun aber zum eigentlichen Inhalt dieses Artikels. Chris Roberts hat in 10 for the Chairman deutlich gemacht, wie er das Problem auf der Client-Seite lösen möchte, wenn im Sichtbereich eines Schiffes zu viele andere Schiffe zugegen sind. Hier der Auszug aus der Folge:Und für alle von Euch, die jetzt das Video nicht nochmal schauen wollen (oder können) hier das englische Transkript:Zunächst geht Chris Roberts darauf ein, was passieren muss, wenn sich Schiffe außerhalb des Sichtbereichs des eigenen Schiffes aufhalten. Sie müssen nicht ausgeblendet werden, da man sie eh nicht sieht, sondern gar nicht erst als zu rendernde Objekte an den Client geschickt werden. Sie sollten lediglich als Punkte auf dem Radar oder Scanner zu sehen sein.Das obere Bild zeigt Euch wie das dann aussehen würde. Ihr seht die Schiffe im Sichtbereich (der innere Kreis). Das könnt Ihr in der Alpha ganz leicht sehen, wenn ihr zum Beispiel von Port Olisar wegfliegt und zurückschaut. Port Olisar wird immer kleiner und verschwindet irgendwann ganz. Das wäre dann das Ende des Sichtbereiches.Daran anschließen würde sich der Bereich, den das Radar oder vielleicht Scanner später im Spiel abdecken würden. Hier sieht man die anderen Schiffe nur auf einem Bildschirm des Schiffes als Punkte dargestellt.So kann sich der Client komplett auf die Schiffe im Sichtbereich konzentrieren und bekommt für die anderen Schiffe nur eine Liste der Position für das Radar oder vielleicht die Sternenkarte. Dann ist für die Grafikkarte nur noch ein Punkt zu zeichnen, was natürlich kein Problem ist. Selbst die Positionsangaben müssen nicht exakt sein, da man die Schiffe ohnehin nicht in 3D sieht. Eine ungefähre Position würde also völlig ausreichen.Ganz außen auf dem oberen Bild sind dann noch weitere Schiffe, über die der Client und damit der Spieler keine Informationen hat (Vielleicht gibt es dafür später Langstreckensensoren, die dann für einen kleinen Bereich auch weit entfernte Schiffe auf einer Karte sichtbar machen werden).Bewegen wir uns jetzt mit dem Schiff durch die Ansammlung anderer Schiffe hindurch, dann verschieben sich einfach die beiden Grenzen (die eigentlich Kugeln um das Raumschiff sind) und wir sehen andere Spieler im Sichtbereich und auf dem Radar.Mit diesem Vorgehen kann CIG sicherstellen, dass der Client nur die Daten übers Netzwerk bekommt, die er wirklich braucht, um Schiffe in der 3D-Umgebung darzustellen. Und diese Daten sind sehr umfangreich: genaue Positions- und Richtungsdaten, Zustand des Schiffes, Daten zu Komponenten, Geschütztürmen und vieles, vieles mehr. All dies wird ständig aktuell vom Server zum Client geschickt und dann muss es verarbeitet werden.Wie sieht das jetzt für die anderen Schiffe außerhalb des Sichtbereichs aus? Da sie nur durch Punkte auf dem Radar oder der Karte dargestellt werden (oder gar nicht), verbrauchen sie so gut wie keine Bandbreite übers Netzwerk. Zusätzlich müssen sie auch nicht ständig aktuell gehalten werden. Ein paar Sekunden Verzögerung bei der Übertragung und Verarbeitung ist überhaupt kein Problem.Insofern ist dies alles eine recht augenscheinliche Optimierung der Netzwerklast und wird spielerisch so gut wie keine Auswirkungen haben. Einziges Problem: Dies ist nicht das normale Verhalten der CryEngine, so dass CIG hier noch einiges an Arbeit bevorsteht, um dies auch so umzusetzen. Das ist zwar viel technischer Aufwand, aber ich sehe hier keinerlei fundamentale Probleme in der Umsetzung.Soweit so gut. Solange also im Sichtbereich des eigenen Raumschiffes niemals mehr Raumschiffe vom Client zu verarbeiten und anzuzeigen sind, als er leisten kann, gibt es keine Probleme mit größeren Ansammlungen von Raumschiffen. Leider wird dies natürlich nicht der Fall sein. Es gibt unzählige Möglichkeiten, in denen im Sichtbereich schnell zu viele Spieler sein könnten:Ich sehe das anders als Chris Roberts. Es gibt meiner Meinung nach viele Konstellationen, wo ein solcher Algorithmus schnell an seine Grenzen stößt und dann die falschen Entscheidungen treffen könnte. In der Folge möchte ich Euch einige solcher Beispiele näher bringen.Alle Beispiele beziehen sich natürlich darauf, dass im Sichtbereich zu viele Schiffe sind und so Raumschiffe ausgeblendet werden müssen. Nehmen wir also an, dass wir am Release-Tag von Star Citizen zwei Spieler haben, die sich das Spiel kaufen. Sie kommunizieren mit Skype oder TS direkt miteinander und wählen die gleiche Location für den Hangar aus, um dann zusammenspielen zu können.Wenn sie jetzt mit ihrem Schiff in den Weltraum starten, dann wird dort am Release-Tag die Hölle los sein. Das heißt, das Spiel wird bei beiden Spieler andere Schiffe ausblenden müssen. Da beide Spieler neu sind, hat der Algorithmus keinen Anhaltspunkt, dass sich die beiden Schiffe gegenseitig sehen müssten.Wie wahrscheinlich ist es, dass der Algorithmus die falsche Entscheidung trifft? Sind im Sichtbereich 500 Schiffe und der Client schafft 25 Raumschiffe, dann wären 95% der Schiffe die falsche Entscheidung.Also kann es in diesem Fall schnell passieren, dass die Spieler mit ihren Schiffen direkt voreinander stehen und dies dann auch über Skype/TS bequatschen, sich aber nicht sehen können.Natürlich könnte man jetzt sagen, das ist halt so, wenn man dem Spiel nicht mitteilt, dass man sich sehen will. Nach langem Suchen nach der Ursache finden auch unsere beiden Spieler heraus, dass sie eine Gruppe aufmachen müssen, um sich gegenseitig sehen zu können.Nach dem ersten Immersion-Reinfall (man sieht sich gegenseitig nicht) präsentiert ihnen das Spiel dann gleich den nächsten Lacher: Beide Spieler sehen den jeweils anderen aus dem Nichts erscheinen. Ich muss glaube nicht lange erklären, dass so etwas keine gute Werbung für das Spiel wäre, so mal es in den ersten paar Minuten Spielzeit passiert.Aber selbst wenn wir dem Spiel mitteilen, wer unsere Freunde sind, wir einer Gilde beitreten und das Spiel eine lange Reihe an anderen Spielern gespeichert hat, mit denen wir mal zusammengespielt haben, kann der Algorithmus genau so schnell zu falschen Entscheidungen kommen. Und noch schlimmer, hier kann es richtig fies mit der Immersion werden.Stellt Euch eine Raumstation wie Port Olisar vor. Dort bin ich gerade mit meiner Gilde dabei eine Aktion vorzubereiten. Wir sind eine kleinere Gruppe von 30 Schiffen. Ich kann mit meinem Client vielleicht gerade so alle Gildenmitglieder um mich herum sehen. Jetzt kommt ein Kumpel aus einer anderen Gilde online, die sich zufällig auch vor Port Olisar neben uns bereitmachen. Sie haben eine ähnliche Größe wie wir.Wir chatten kurz miteinander und da fällt uns ein, dass er mir noch ein Item geben wollte. Also kommt er kurz zu mir rüber geflogen, um über EVA kurz das Item auszutauschen. Das Problem ist jetzt natürlich, dass er nur seine Gilde sieht und ich nur meine. Vielleicht ist das Spiel schlau genug unsere Chat-Aktivität zu interpretieren, und uns gegenseitig zusätzlich anzuzeigen.Jetzt fliegt er also auf mich zu, aber dummerweise steht ein Schiff aus meiner Gilde ihm direkt im Weg. Er sieht das Schiff aber nicht, da er nur seine Gilde und mich sieht. Was logisch ist, warum sollte das Spiel ihm einen Spieler anzeigen, mit dem er keinerlei Kontakt hat.Schon haben wir das nächste dicke Problem, was die Immersion angeht. Stellt Euch nur vor wie ich ihm aufgeregt schreibe, er soll dem Schiff ausweichen, und er nur fragt "Welches Schiff?". Dann fliegt er einfach durch das andere Schiff hindurch (jedenfalls aus meiner Perspektive). Noch schlimmer wird es natürlich, wenn er jetzt genau in dem anderen Schiff anhält. Was dann?Ihr seht also, das personalisierte Ausblenden von Schiffen, führt unweigerlich zu solchen kuriosen Szenen. Die einzige Möglichkeit dies zu verhindern wäre, das wir beide exakt die gleichen Schiffe sehen. Das geht aber freilich nicht, denn dann müssten wir auch jeweils die anderen Gildenmitglieder sehen, was dann aber die Grenze übersteigt, welche der Client schafft.Jetzt könnte der ein oder andere vielleicht auf die Idee kommen, man könnte doch Schiffe einblenden, wenn es zu einer Kollision kommen würde. Prinzipiell schon, aber überlegt mal, was bei plötzlichen Richtungsänderungen passiert. Dann sieht man aus dem nichts auf einmal ein Schiff vor sich auftauchen. Da ist dann nicht nur die Immersion futsch, da bekommt man richtig Frust auf das Spiel, denn das Schiff war vor der Richtungsänderung augenscheinlich noch nicht da.Abschließend habe ich noch zwei Beispiele für Euch. Beim ersten haben wir einen Spieler mit einer extrem großen Freundesliste, der zu dem auch noch in einer 5000-Mann-Gilde Mitglied ist und sich aktuell in einem Bereich aufhält, wo viele dieser Bekanntschaften/Gildenkollegen online sind. Dann kann es schnell passieren, dass der Client zwar 25 Schiffe aus dieser riesigen Liste anzeigt, aber es könnten gerade die falschen sein.Und schlussendlich habe ich noch diesen Fall: Zwei Spieler, die sich über den Chat, RL, Forum oder auf welchen Weg auch immer kennenlernen und zusammenspielen wollen, kann auch wieder genau das gleiche passieren, was unseren beiden Release-Spielern im allerersten Beispiel passiert ist.Insbesondere für Planeten gibt es die Idee, mehrere Einflugschneisen zu den Landeplätzen des Planeten zu haben. Dies hat Chris Roberts in einer früheren Ausgabe von 10 for the Chairman auch schon einmal am Beispiel der Erde angedeutet. Das würde wie folgt aussehen: Nehmen wir New York als Landeplatz. Dann kann es im Orbit mehrere Bereiche geben, die gegenseitig außerhalb des Sichtbereiches sind. Von jedem von diesen kann man dann den Anflug auf die Stadt starten.Das obere Bild zeigt, wie das aussehen könnte. Prinzipiell könnte man eine Reihe solcher Landebereiche im Orbit der Planten einrichten, um den Andrang der Spieler besser bewältigen zu können. Ein solches System könnte dynamisch die Anzahl an Landebereiche über einem Landeplatz eines Planeten generieren, wie gerade benötigt werden.Das ganze hört sich auf den ersten Blick sehr gut an. Man kann je nach Spieleraufkommen mehr oder weniger dieser Bereiche vor einem Planeten erstellen und Spieler mit Hilfe der Landeerlaubnis, die eingeholt werden muss, entsprechend in diese Bereiche verteilen.Es gibt zwei Probleme bei diesem System. Erstens, ist der Platz im Orbit um New York (oder jeden anderen Landeplatz) begrenzt. Irgendwann wären weitere Bereiche auf der anderen Seite des Planeten, oder an den Polen. Dann würde auch wieder die Immersion leiden. Auch wenn das sicher nicht so schlimm wäre, wie die oben beschriebenen Probleme.Zweitens, das Spiel kann niemanden davon abhalten nicht doch in einen vollen Bereich zu fliegen. Wenn Ihr jetzt einfach nur einmal um die Erde fliegen wollt, dann fliegt Ihr auch durch solche Bereiche, obwohl Ihr vielleicht gar nicht landen wollt. Eine andere Variante wäre, Ihr wollt Euch mit einen Freund treffen, der gerade von der Erde startet.Dennoch ist dieses System für die Planetenorbits das Beste, was CIG machen kann, um die Spielerzahl im Sichtbereich so klein wie möglich zu halten.Leider gibt es wenig Möglichkeiten dieses System an anderer Stelle ebenfalls einzusetzen. Raumstationen zum Beispiel werden kaum größer sein, als der Sichtbereich selbst. Selbst wenn Port Olisar, Shipping Yard Station oder die FPS-Station die doppelte, dreifache oder vierfache Größe hätte, wäre dennoch alles im Sichtbereich.Die einzige Idee, die ich hätte wäre, dass die Raumstationen absichtlich so gebaut werden, dass man von einer Landeplattform nicht die anderen sehen kann. In Port Olisar könnte man sich vorstellen, dass es "oben" und "unten" die gleichen Aufbauten gibt. Dann könnte man nur die Schiffe auf seiner Seite sehen. Dafür müsste natürlich schon bei der Konzeption der Raumstationen darauf Rücksicht genommen werden.Aber wollen wir wirklich Raumstationen, die absichtlich eine Art von "Sichtschutz" haben, um dieses System einzubauen. Ich denke, dass will eigentlich niemand. Insofern sehe ich für Raumstationen kaum Möglichkeiten zu verhindern, dass es dort zu viele Spieler/Schiffe im Sichtbereich gibt.Das gleiche gilt auch für den letzten großen Bereich, die Schlachten. Dort wird man auch nur einen kleinen Teil der beteiligten Schiffe sehen. Und dort hat man keine Möglichkeit durch Tricks wie oben bei den Planeten. Eine große Schlacht im Weltraum bleibt eine große Schlacht im Weltraum.: In den Kommentaren kam die Frage auf, ob nicht die Verkleinerung des Sichtbereiches wie man sie in vielen Spielen (GTA, WoW, etc.) konfigurieren kann, eine Möglichkeit wäre, die beschriebenen Probleme zu lösen. Bei GTA zum Beispiel "ploppen" Hochhäuser ab einer bestimmten Entfernung aus dem Nebel auf.In diesen Spielen ist das zwar unschön, aber man kann damit leben, da es sich um passive Spielelemente handelt. In Star Citizen würde eine solche Herangehensweise aber aktive Spielelemente (andere Spieler) zum plötzlichen Erscheinen bringen.Habe ich also in einer großen Spielermenge den Sichtbereich so weit verkleinert, dass es für meinen Client reicht, dann sehe ich während des Fluges ständig andere Schiffe vor mir aus dem Nichts Erscheinen. Das so ein Verhalten der Immersion nicht gerade zuträglich ist, sollte klar sein.Wenn Ihr heute in der Alpha schaut, dann wäre ein Sichtradius von um die 1000m wahrscheinlich das Minimum, das der Sichtbereich sein könnte, da bei dieser Entfernung die Größe eines anderen Schiffes (ungefähr wie ein Mauszeiger) klein genug ist, dass ein plötzliches Erscheinen gerade noch übersehbar ist.Ein weiteres Problem wären Gefechte. Im Moment funktioniert die automatische Zielerfassung der Waffen bei etwa 2500m. Auf diese Entfernung kann man mit den Waffen treffen und Schaden anrichten. Sprich, so weit sollte der Sichtbereich im Kampf auf jeden Fall sein.Aber nehmen wir an, dass wir in einer großen Schlacht den Sichtbereich auf ein paar Hundert Meter begrenzen, damit es für den Client reicht, dann würden andere Spieler (die man vielleicht gerade beschießen will) auftauchen und wieder verschwinden. Wenn es ganz schlimm kommt, fliegen sie zigzack über die Grenze des Sichtbereichs und dann kann man sie nicht mal mit Raketen beschießen, da die Zielerfassung immer wieder unterbrochen wird, wenn sie aus dem Sichtbereich verschwinden.Zusammenfassend denke ich, dass man vielleicht bis ungefähr 5000m den Sichtbereich verkleinern könnte. Alles darunter schafft meiner Meinung nach wieder neue Probleme, die genau schlimm sind wie die Probleme, die man zu Beginn lösen wollte.Ich bin sehr gespannt, welche weiteren Informationen CIG uns zu diesem ganzen Themenkomplex noch geben wird. Insgesamt sehe ich sowohl auf der Server, als auch auf der Client-Seite des Systems noch viele Fragezeichen, die CIG zu lösen hat. Ich denke, dass wir zunächst abwarten müssen, welche Lösungen den Entwicklern einfallen. Sollte CIG irgendwelche Informationen Herausbringen, dann werdet Ihr hier auf dem Star Citizen Blog natürlich meine Erklärungen und Einschätzungen lesen können.Bis dahin plane ich noch einen Artikel, der den Unterschied zwischen Zonen und Instanzen (bzw. Game-Server-Mashes) im Detail erklärt, da ich immer wieder sehe, dass dies noch zu Konfusion führt und gerne durcheinander gebracht wird.