Wieviele menschliche Gegner würde ein MP Spiel verkraften, wenn die Bandbreite des Internets kein limitierender Faktor w



  • äre?

    Woran liegt das also, dass bis zu 64 Spieler bei z.B. Echtzeitmultiplayerspielen wie z.B. Egoshootern immer noch der Normalzustand sind?

    1. Liegt es an der Leistung der Rechner auf denen der Spielserver läuft?
    2. Liegt es an der Leistung der Rechner der Spieler?
    3. Oder liegt es an der durchschnittlichen Bandbreite die ein Internetzugang heutzutage liefern kann?

    Wären in Spiele wie z.B. BF4 1000 Mitspieler möglich, wenn man bis zu jedem Spieler eine Bandbreite von 10 GBit/s hätte und man in dem Spiel selbst die Limitierung auf max. 64 Spieler aufheben würde?



  • PS:
    Die 10 GBit/s sollen jeweils für die Uploadrate und Downloadrate gelten.

    Als DSL mit seiner 768 KBit/s Download und ca. 128 KBit/s Upload Leitung noch recht neu war, kann ich mich noch gut an Spieler erinnern, die in diversen MP Spielen selbst den Server stellten, dies allerdings auf der Maschine des Spielers und kein Dedicated Server der irgendwo in einer Serverfarm mit einer schnellen Internetanbindung stand.
    Als Fausformel galt damals z.B. für AFAIK BF1942, dass die Uploadrate bis zu 3 Spieler hergab. Sobald ein 4. Spieler den Server betrat, laggte es sofort für alle Spieler bis dieser 4. Spieler den Server wieder verlies oder vom Server gekickt wurde.
    Gute Admins reduzierten daher die maximale Anzahl der Spieler auf ihrem Server auf 3. Nur die Idioten die es nicht besser nutzen, gaben bis zu 16 Spieler an, obwohl es ihre DSL Leitung gar nicht hergab.

    Wenn eine Uploadrate von 128 KBit/s genügt um in BF1942 einen Server mit 3 Spielern zu ermöglichen, dann würde dies bedeuten, dass man ca. 42,667 KBit/s pro Spieler auf dem Server benötigt.
    Bei 64 Spielern bedeutet dies also, dass der Server bei diesem Spiel eine Anbindung mit einer Uploadrate von ca. 2731 KBit/s benötigt.
    Kommt das etwa hin, was für heutige MP Server in einer Serverfarm pro Server zur Verfügung steht?



  • Der Bandbreitenverbrauch steigt ja nicht linear an. Wenn ein Spieler eine Aktion an den Server sendet, muss diese ja an alle anderen Spieler weitergeleitet werden. Wenn also N Spieler M Aktionen pro Sekunde tätigen, muss der Server M * N * (N - 1) Pakete versenden. Das steigt also quasi quadratisch. (Wenn sich alle Spieler gegenseitig sehen.)



  • Da hast du recht, das habe ich übersehen.

    Im Worst Case Fall müsste man auch von der Situation ausgehen, dass sich alle Gegner gegenseitig sehen.



  • Die Bandbreite sehe ich selbst ohne Aufhebung nicht als Problem. Was über die Leitung geschickt werden muss muss zuvor aber auch berechnet werden.



  • Planetside 2 hat ja 2000 Spieler pro Server (auch wenn die Maps recht groß sind und wohl nicht alle Spieler auf demselben Fleck 'rumstehen). Grundsätzlich geht sowas also schon. Ich denke, bei Battlefield & Co spielen noch ganz andere Faktore eine Rolle. Rechenzeit, aber auch Dinge wie Balancing...



  • _matze schrieb:

    Planetside 2 hat ja 2000 Spieler pro Server (auch wenn die Maps recht groß sind und wohl nicht alle Spieler auf demselben Fleck 'rumstehen).

    Planetside 2 trickst hier ganz gewaltig, so wie auch alle anderen MMORPGs.
    Die 1000 Spieler bekommst du nämlich nie zu Gesicht, sondern jeder Spieler darf auf dem gleichen Gebiet in einer Spielweltblase bei der die Spieleranzahl dann wieder limitiert ist.
    Diese Blase läuft dann natürlich auf verschiedenen Rechnern mit einer gewährleisteten Anbindung.

    Grundsätzlich geht sowas also schon. Ich denke, bei Battlefield & Co spielen noch ganz andere Faktore eine Rolle. Rechenzeit, aber auch Dinge wie Balancing...

    Naja, bisher hat es niemand versucht.
    1000 Spieler gleichzeitig auf einem Beengeten Raum spielen zu lassen.

    Für so Maps wie der Angriff auf die Normandie in BF1942 wäre so etwas schon sinnvoll, weil da eben auch historisch so viele Soldaten auf beengtem Raum standen. Notfalls macht man die Map auch einfach größer, dann verteilt sich die spielerische Dichte.


  • Administrator

    Rechenleistung sehe ich eindeutig als grösstes Problem. Wenn man sich zum Beispiel WWIIOnline (Battleground Europe) anschaut, dort gab es Schlachten mit mehreren hunderten Spielern. Dabei war es immer wichtig eine gute CPU zu haben, deutlich wichtiger als eine gute GPU.

    WWIIOnline hat allerdings auch ab einer gewissen Anzahl Spielern diese einfach nicht mehr angezeigt. Ich glaube das Maximum lag irgendwo bei 128. Kein Computer war in der Lage mehr Spieler gleichzeitig zu verarbeiten. Das hat aber dazu geführt, dass recht frustrierende Situationen entstanden. Zum Beispiel bist du als Bomber über eine Stadt geflogen und hast deine Bomben abgeworfen, aber da es unfair wäre, wenn Spieler von einem unsichtbaren Spieler getötet werden, haben deine Bomben kaum etwas auf dem Boden getroffen, weil es halt "wichtigere" Dinge bevorzugt hat (z.B. die feindlichen Jäger, Flak anderswo am Boden, die restlichen Bomber in deiner Formation).

    WWIIOnline ist zudem ein altes Spiel mit alter Graphik. Battlefield dagegen kommt mit äusserst heftiger Graphik daher. Wenn es zu viele Aktionen auf dem Spielfeld geben würde, würde dein Client endgültig abrauchen. Auch die Grösse des Spielfeldes spielt da sicher eine Rolle. Die Battlefield-Karten sind nicht für mehr Spieler ausgelegt. Wenn die grösser gemacht werden müssten, heisst das nicht nur deutlich mehr Aufwand zur Erstellung, sondern auch mehr zu tun für deinen Computer.

    Und nicht zuletzt sollte man nie die Latenz vergessen. Updates müssen sehr schnell und oft sein und die Latenz sehr tief, sonst hast du ein schreckliches Spielerlebnis auf einem Server. Daher ist es sicherlich auch ein Rechenaufwandproblem auf dem Server. Dieser muss einfach die nötigen Kapazität haben, alle Updates schnell genug zu verarbeiten. Und nebenher müssen sie ja auch noch kontrollieren, Anti-Cheats prüfen, usw. 😉

    Ich glaube daher, dass es weniger mit dem Bandbreite zu tun hat. Es ist eher eine Kombination aus Rechenaufwand auf dem Client und Server und auch einem finanziellen Aufwand zum Erstellen entsprechender Karten oder dem bereitstellen entsprechender Hardware.

    Grüssli



  • Also Rechenleistung sehe ich nicht als Problem an. Um die 1000 Spieler sollte ein halbwegs moderner PC berechnen können. Wenn man die Spielmechanik simpel hält und der Rechenbedarf nur linear wächst dann wären denke ich sogar bis zu 50000 Spieler möglich.
    Der Bedarf an Bandbreite, der nun mal unweigerlich quadratisch mit der Anzahl der Spieler wächst wird hier eher das Problem sein.


  • Administrator

    Gruum schrieb:

    Also Rechenleistung sehe ich nicht als Problem an. Um die 1000 Spieler sollte ein halbwegs moderner PC berechnen können. Wenn man die Spielmechanik simpel hält und der Rechenbedarf nur linear wächst dann wären denke ich sogar bis zu 50000 Spieler möglich.

    Es wurde hier als Beispiel Battlefield genannt, bzw. Egoshooter. Das halte ich für keine sehr einfache Spielmechanik. Klar dürfte es bei Schach nicht so ein grosser Rechenaufwand sein. Allerdings habe ich auch noch nie ein Schachspiel mit 1000 Spielern gesehen 😃

    Gruum schrieb:

    Der Bedarf an Bandbreite, der nun mal unweigerlich quadratisch mit der Anzahl der Spieler wächst wird hier eher das Problem sein.

    Er wächst aber nur beim Server quadratisch. Beim Client ist dieser weiterhin linear. Und heutige Server werden mit Glasfaser bedient. Ich glaube nicht, dass da die Bandbreite wirklich eine grosse Rolle spielt. Diese Menge an Daten zu verarbeiten aber schon eher.

    Grüssli



  • Ok hab mal den Bedarf an Bandbreite überschlagen. 1000 Spieler müssten von der Seite aus auch möglich sein. Aber billig ist es nicht.



  • Gruum schrieb:

    Ok hab mal den Bedarf an Bandbreite überschlagen. 1000 Spieler müssten von der Seite aus auch möglich sein. Aber billig ist es nicht.

    Und auf welchen Bandbreitenbedarf bist du gekommen?



  • Bei 40 Bytes die pro Spieler anfallen und an alle geschickt werden müssen und das 4 mal in der Sekunde komme ich bei 1000 Spielern auf etwa 150 Megabytes/s.


  • Mod

    Gruum schrieb:

    Wenn man die Spielmechanik simpel hält und der Rechenbedarf nur linear wächst dann wären denke ich sogar bis zu 50000 Spieler möglich.

    Beide diese Annahmen sind höchstwahrscheinlich falsch. Die Spielmechanik ist in der Regel nicht simpel und der Aufwand ist aus dem gleichen Grund nicht linear, wie die Bandbreite nicht linear ist: Die Spieler interagieren. Selbst wenn es nur auf niedrigstem Niveau die Berechnung ist, welcher Spieler welche Auswirkungen der Aktionen anderer Spieler sieht, so ist dies schon quadratisch. Der Code dahinter dürfte auch kaum oder gar nicht parallelisiert sein, weil:
    1. Ein Egoshooter kein MMO ist. Alle Spieler wechselwirken gleichzeitig miteinander. Das macht Parallelisierung sehr kommunikationsintensiv und damit ineffizient.
    2. Es besteht vermutlich auch kein großes Interesse, einen Shooter für Hunderte von Spielern zu optimieren.


  • Mod

    Gruum schrieb:

    Bei 40 Bytes die pro Spieler anfallen und an alle geschickt werden müssen und das 4 mal in der Sekunde komme ich bei 1000 Spielern auf etwa 150 Megabytes/s.

    Ping 250 ms? Inakzeptabel.



  • Ach blödsinn, die Spieler interagieren kaum und die Spieler zu finden die miteinander agieren geht auch schneller als quadratisch.
    Mal abgesehen davon war für Spiele wie Battlefield meine erste Schätzung von 1000 Spielern relevant, also schon deutlich weniger als bei einem simplen spiel mit linearem Rechenbedarf.
    Beim parallelisieren sehe ich auch keine besonderen Probleme. Aber keine Ahnung ob es gemacht wird. Wenn man viele Spieler will dann wird man es wohl tun, für 64 Spieler ist es eher unnütz.


  • Mod

    Gruum schrieb:

    Beim parallelisieren sehe ich auch keine besonderen Probleme.

    Ich schon. Wie willst du X gleichzeitig interagierende Objekte effizient parallelisieren? Übliche Strategien beruhen da drauf, dass solche Interaktionen eben nicht zwischen allen Objekten gleichzeitig stattfinden (zum Beispiel beim genannten MMORPG kann man die Welt in Zellen aufteilen und nur die (in der Regel wenigen) Spieler in einer Zelle werden von einer CPU berechnet), aber hier liegt dieser Fall ja gerade nicht vor.

    Ach blödsinn, die Spieler interagieren kaum

    Blödsinn ist höchstens die Annahme, dass wenig quadratisch nicht quadratisch wäre. Zudem ist egal, wie viel Interaktion tatsächlich stattfindet, wenn der Aufwand, dies heraus zu finden, quadratisch steigt.

    und die Spieler zu finden die miteinander agieren geht auch schneller als quadratisch.

    So? Wie? Ich kann mir ja mit Einschränkungen (begrenzte Wechselwirkungsreichweite, also begrenzte Sicht-, Schuss-, Hörweite) noch N*log(N) vorstellen, aber dann sind wir wieder beim MMORPG (siehe oben), bei einem typischen Egoshooter hat man diese Einschränkungen eben gerade wieder nicht.



  • Nehmen wir an es schießen grad mehrere Spieler. Das Problem ist nun zu berechnen was die einzelnen Schüsse treffen.
    Parallelisieren lässt sich das ziemlich einfach, jeder Schuss kann unabhängig voneinander berechnet werden.
    Selbst wenn man nur einen einzelnen Schuss parallelisieren will geht das. Für mehrere Objekte berechnet man unabhängig voneinander ob der Schuss das Objekt treffen würde. Das ist natürlich spekulativ wenn der Schuss nur das erste Objekt auf der Flugbahn trifft, kann man die Ergebnisse von den anderen Objekten verwerfen.

    Um nicht jedes einzelne Objekt auf Kollision mit dem Schuss überprüfen zu müssen kann man z.B. irgendwelche space partitioning trees benutzen. Dadurch ist die Komplexität eben nicht mehr n pro Schuss sondern nur noch log(n)² oder so.



  • Gruum schrieb:

    Bei 40 Bytes die pro Spieler anfallen und an alle geschickt werden müssen und das 4 mal in der Sekunde komme ich bei 1000 Spielern auf etwa 150 Megabytes/s.

    Nur 40 Bytes?

    Ich brauche von jedem Spieler mindestens eine Position und eine Blickrichtung.
    Also mindestens 3 Koordinatenpunkte für die x, y und z Achse zu je 16 oder schlimmer 32 Bit und wenn man es mit der Blickrichtung nicht so genau nimmt, nur einen Winkel, anstatt 3 weitere Koordinaten.
    Bei heutigen Spielen wird man aber wohl eher einen Vektor übermitteln wollen, also doch 6 Koordinatenpunkte, wobei für die Blickrichtung wohl auch 8 Bit je Achse genügen könnten.
    Das macht also 3*16 + 3*8 = 72 Bit
    bei 1000 Spielern also
    72 Bit * 999 = 71928 Bits bzw. 8991 Bytes.

    Und wenn die Spielwelt 32 Bit groß ist, vergrößert sich diese Zahl noch einmal für die Position.

    Andere Informationen, wie, welche Waffe er trägt, in welche Richtung der Kopf schaut bzw. sich bewegt (je nach dem, was oben nun die Blickrichtung war), ob er geschossen hat usw. sind hierbei noch gar nicht berücksichtigt.



  • Gruum schrieb:

    Nehmen wir an es schießen grad mehrere Spieler. Das Problem ist nun zu berechnen was die einzelnen Schüsse treffen.
    Parallelisieren lässt sich das ziemlich einfach, jeder Schuss kann unabhängig voneinander berechnet werden.

    Wen mit einem Laser geschossen wird.
    Wenn es Gewehrkugeln sind, dann muss der Schuss ballistisch berechnet werden und schafft das auch nicht in einem Augenblick, sondern das dauert bis er das Ziel trifft. In der Zeit kann das Ziel wieder ganz wo anders sein.


Log in to reply