Am vergangenen Montag haben wir uns darüber unterhalten, welche Automatchfunktionen das neue C&C bieten sollte. Nun wollen wir darüber diskutieren, welche Netzwerkarchitektur der neue C&C Teil im Multiplayer verwenden und welche features möglich sein sollten. Dabei geht es um Fragen, was bei einem Disconnect passiert, ob reconnecten möglich sein soll (Verbindung wiederherstellen), ob man beim Spielen eine Internetverbindung benötigt, und was im Falle von Lag und asynchronen Spielen passiert.
Peer-to-Peer Netzwerk bisher in C&C
- Die vergangenen C&C Teile nutzen ein Peer-to-Peer System, bei welchem sich alle Spieler vor dem Spielstart untereinander verbunden und während des Spiels alle Daten an alle Mitspieler direkt versendet haben.
- Dieses System ist recht anfällig für Verbindungsprobleme, wir erinnern uns an Situationen in Generals, wo viele Anläufe von Nöten waren ehe alle Verbindungen zustande kamen oder in C&C 3, wo nach jedem Game in den Optionen auf NAT-Refresh geklickt werden musste. Schuld waren meist auch die Router der Spieler.
- Ein weiteres Manko ist, dass sich bisher die Spielgeschwindigkeit am langsamsten Mitspieler orientiert hat, sprich ein Lagger hat zu Lag bei allen Mitspielern geführt.
- Problematisch ist ebenfalls der Reconnect, bisher hat es praktisch nie geklappt sich bei einem Disconnect erneut ins Spiel einzuklinken.
- Das System ist auch anfällig für Synchronisationsfehler (Async), da sich alle Spieler untereinander Daten zusenden und sobald ein Spieler nicht mehr synchron war oder Daten bei der Versendung verloren gingen, das gesamte Spiel abgebrochen wurde. Hier fehlte eben eine Instanz, die die Synchronisation der einzelnen Spieler überwacht und Fehler ausgleicht.
- Die Disconnecterkennung war ebenfalls problematisch, da, wenn die Spieler nur untereinander Verbindung halten und nicht zum Server verbunden sind, dieser nicht erkennen kann welcher Spieler bei einem DC der Schuldige ist, weswegen ein DC meist nicht mit einem loss gewertet wurde.
- Das System ist auch sehr cheatanfällig, da die Daten direkt an die einzelnen Spieler übermittelt werden. Als Anti-Cheat Maßnahme wären daher lokale Anticheatprogramme notwendig.
- Vorteil dieses Systems ist allerdings, dass keine Internetverbindung benötigt wird und dadurch auch ein LAN-Modus möglich wäre. Wird keine Internetverbindung benötigt, hat der Spieler zudem die volle Kontrolle über das Spiel und kann spielen wann er es möchte.
Da ich kein Techniker bin, habe ich eventuell einige Themen vergessen oder nicht zu 100% genau wiedergegeben, ich bitte dies zu entschuldigen . Auch glaube ich, dass nicht alle der oben genannten Probleme an Peer-to-Peer liegen und man durch intelligente Engineprogrammierung einige Probleme umgehen könnte ohne eine rein serverseitige Lösung anzuwenden, zum Beispiel indem die Engine mit einer fixen Geschwindigkeit läuft und selbst erkennt wenn der lokale Rechner diese nicht erreicht, sodass sie automatisch Frames skippt, damit der Lag nicht an andere Spieler weitergegeben wird. Auch könnte eventuell der Host als eine Art Miniserver und Kontrollinstanz bei der Synchronisation dienen, ebenso wie wie beispielsweise das Spiel selbst über Peer-to-Peer abgewickelt werden könnte, die Spieler aber trotzdem noch dauerhaft eine Serververbindung halten und an diesen einfache Pings senden, damit der Server bei einem DC weiß, welcher Spieler die Verbindung unterbrochen hat. Starcraft 2 ist ein gutes Beispiel, wie ein Spiel trotz Spieleabwicklung über ein Peer-to-Peer System viele der bekannten Probleme ausmerzen konnte (natürlich verwendet SC2 auch einige serverbasierte Funktionen, wie die Notwendigkeit der dauerhaften Onlineverbindung). Die Frage ist allerdings, wie aufwendig all diese Lösungen sind und ob es nicht sinnvoller wäre, direkt die serverseitige Variante anzuwenden:
- Serverbasierte Spiele sind beispielsweise sehr viele Shooter oder auch Spiele wie League of Legends oder Heroes of Newerth, bei denen sich die Spieler nur zum Server verbinden und der Server den kompletten Datentransfer unter den Spielern regelt.
- Der Vorteil ist, dass das Spiel sozusagen auf dem Server läuft und dieser genau weiß wie schnell das Spiel laufen sollte und welche verbundenen Spieler das Spiel aufgrund eines schwachen Rechners oder einer schwachen Verbindung nur langsamer wiedergeben können. Der Lag würde demnach nur die Lagverursacher treffen, während alle weiteren Mitspieler in realer Geschwindigkeit weiterspielen können.
- Ebenfalls weiß der Server genau, welcher der Spieler im Falle eines Disconnects Schuld ist, da dieser die Verbindung zum Server verliert. Es ist daher ohne weiteres möglich einen DC als loss zu bewerten.
- Der Server erkennt auch, wessen Spieldaten nicht synchron sind. Es ist nicht notwendig, dass die Daten zu allen Spielern synchronisiert werden müssen, sondern lediglich zum Server. Dadurch können diese Fehler während eines laufenden Matches einfacher ausgebügelt werden oder es wird nur der Verursacher des Sync-Fehlers aus dem Spiel geworfen, mit der Möglichkeit zum Reconnect nach einem erneuten Angleichen der Daten.
- Das Reconnecten stellt sich wohl ebenfalls als einfacher dar, da der Spieler die Verbindung nur erneut zum Server aufbauen muss, anstatt mehrere Verbindungen zu den anderen Spielern zu etablieren. Es wäre sogar möglich, dass das Spiel weiterläuft und der Spieler nachträglich reconnected und dass man serverseitige Pause-Votes einbindet, die das Spiel anhalten können.
- Ein Serverbasiertes System würde ermöglichen, dass auch die Replays automatisch auf den Servern mitgezeichnet und in einer zentralen Replaydatenbank gespeichert werden, sodass zu jedem Spiel online auch ein Replay sowie alle Matchinformationen hinterlegt wären, die sich jeder ansehen kann.
- Ein großer Vorteil ist auch, dass das Cheaten erschwert wird. So gibt es beispielsweise in Heroes of Newerth keinerlei Cheats, nichtmal Maphacks, und Cheaten wäre nur durch Hacken des Servers möglich. Natürlich gibt es aber nie eine 100%ige Sicherheit und die Tatsache allein, dass das Spiel serverbasiert ist, ist noch kein Garant für Cheatfreiheit (z.B. ist Cheaten in vielen Shootern dennoch möglich). Auch die Engine selbst muss hier Cheatprotection beitragen. Dennoch steigt mit dieser Variante wohl die Wahrscheinlichkeit, weniger Cheater online zu erleben.
- Ein Nachteil ist, dass ein serverbasiertes System den LAN Modus ausschließt und man auch davon abhängig ist, dass es Server gibt zu denen man verbinden kann (sicher werden die Server nicht bis in alle Zeiten online sein).
- Ein weiterer Nachteil könnte sein, dass ein Server überlastet ist und während des laufenden Spiels anfängt zu laggen.
- Schließlich ist es auch notwendig beim Hosten des Spiels den Serverstandort auswählen zu können, da natürlich Spieler in der Nähe des Servers einen besseren Ping zu diesem besitzen als weit entfernte Spieler.
Im Grunde ist die serverbasierte Lösung die sicherere und man kann mit ihr die gängigen MP Probleme mit dem geringsten Programmieraufwand lösen. Auch ist sie seitens des Herstellers der beste Schutz gegen illegale Kopien, wodurch Copyprotection wie SecuRom nicht angewendet werden muss. Natürlich setzt dies aber ein gutes Geflecht aus geschützen und zuverlässigen Onlineservern voraus, die EA bieten muss. Ärgerlich ist natürlich, dass LANs dann keinen LAN Modus nutzen können und eine Internetverbindung vorliegen muss. Wenn man aber davon ausgeht, dass der LAN Modus in der heutigen Zeit sowieso nicht mehr angeboten wird (selbst SC2 mit einem P2P System bietet keinen), ist dies wohl angesichts der Vorteile zu verschmerzen.
Aber das ist nur meine Meinung, wie seht ihr das? Ist das alte P2P System besser? Oder ein serverseitiges System? Oder irgendein Hybridsystem? Eventuell sind ja auch einige Technikexperten unter euch.