C&C Feedback-Montag | Teil 2 - Peer-to-Peer oder Serverbasiert?

freezy

Staff member
Administrator
Clanleader
UF Supporter
Joined
Sep 26, 2002
Messages
62,145
Points
615
C&C Feedback-Montag #2 - Peer-to-Peer oder Serverbasiert?

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.

Ich fasse mal kurz die 2 bekanntesten Lösungen und deren Auswirkungen zusammen:

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:

Serverbasiertes Netzwerk

  • 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 :)
 
Ich bin ganz klar für die Server Lösung.
Heutzutage ist der Lanmodus (Leider) eh am aussterben, daher wage ich noch nicht einmal zu hoffen.

Was dann aber gegeben sein MUSS ist ab Release eine vernünftige Zahl an gut laufenden Servern und die Möglichkeit eigene für Turniere oä. einzurichten. Clanserver halte ich prinzipiell mal für überflüssig, ist zwar ne schöne Sache für claninterne Spiele aber ich denke, dass das zu weit führt, zumal sowieso nicht mit solch einer unfassbar hohen Zahl an Spielern zu rechnen ist.
Wichtig weiterhin ist die Pflege der Server, Updates und evtl. ein Ausbau des Netzwerkes ist wichtig um das Spiel dauerhaft interessant zu halten. Und für den Fall einer Abschaltung sollte es Projekten wie XWIS möglich sein einzuspringen, sodass auch ein späteres Spielen möglich ist. (Ist aber arg weit in der Zukunft :D)
Und für Lans sollte es die Möglichkeit geben Server zu bestellen, bei BC2 gibbet das ja, dass dann ein netter Mitarbeiter von Dice mit nem verplompten Server vorbeischaut um ein Kerzenheim Netz nicht zu überlasten hrhr.
 
Last edited:
Wie Kasi schon sagte.
Serversystem und guten Support.
 
Irgendwie ein blödes Thema.
Das P2P in der C&C Comm so ein wahnsinnig schlechten Ruf hat, liegt ja eigentlich nicht an dem P2P selbst, sondern an der übelst schlechten Umsetzung seitens EA. Der Code war ja dermaßen schlecht, da hat sogar in KW die Custom game lobby gelaggt wie Sau. Wäre in all den Jahren, zB die Problematik mit dem DC=Loss gelöst worden, dann hätte es ein riesigen Reizpunkt weniger gegeben. Das P2P funktioniert und das sogar verdammt gut, zeigt Starcraft 2.

Aber nun zum eigentlichen Thema:
Jetzt stellt sich natürlich die Frage, was ist nun besser. Möchte fast behaupten, dass die meisten hier "Server" schreiben. Ich persönlich würde wohl eine art Hybrid bevorzugen, vergleichbar mit dem Battle.net von Blizzard. Sprich, Stats, History, Achievement, Maps (+Custom) Laddern,Gegnerzuweisung etc liegen/läuft alle auf/über den Servern und die Spiele selbst halt P2P.

Letzlich ist es aber vollkommen egal was...es muss gut programmiert sein.
 
Servermodell.

Man muss aber sagen, dass so ein Server auch extrem teuer wird und die Wartung auch noch berechnet werden müsste.
Ich weiß nicht wie weit da Gamespy hineinarbeitet, da die in CnC ja sowieso nur den 'Stats- Server' gespielt haben.

Ich wusste garnicht, dass SC2 über P2P läuft, mir fällt aber grade ein, dass ich in der Beta mir mal 10k Mineralien gegeben hatte und das Spielz gefreezed ist.
Es wurde auch nicht gewertet.
Ich CnC konnte man mit zwei Klicks ein Desynch verursachen, klar, Disconnect mit dem Stecker ziehen ect.

Eine Verbindung wieder herzustellen hört sich gut an, nur etwas schwer umsetztbar wie ich finde.
Zumindest was den 24h DC angehet.
 
Ich möchte noch hinzufügen :D
KEIN GAYSPY! ^^
Aber hattens in TT ja auch nicht mehr ...
 
Server, nothing more to say
 
Also ich hatte mit Gamespy bisher einfach keine besodners guten Erfahrungen. Imo ist das ganze Ding total instabil und schnell überfordert. In den CnCs hat es sehr oft gesponnen, dann die ganzen DDos Attacken auf sie damals (Hat alles lahmgelegt, CnC, BF, NFS...) <- sicher kein grundsätzliches GameSpy Problem, dennoch erwarte ich da einfach eine bessere Absicherung^^
Auch wenn man mal FlatOut anschaut, unfassbar nervig, kaum möglich dort ein Rennen mit allen Teilnehmern zu beenden oder man findet die Spieler direkt nicht.
Hab auch schon von Leuten gehört, dass sie bei GameSpy Servern grundsätzlich einen sehr hohen Ping haben.

Mag sein, dass das nicht die Schuld von GS ist, aber es ist doch auffällig. Und ich denke, dass es nicht einfach eine, Ladida, mir ist danach, Einstellung war, die EA damals dazu bewogen hat von GS wegzugehen. Beim Summit in LA wurde ja auch gesagt, dass man gerne viel früher von GS weggegangen wäre aber man im Vertrag festhing. Auch BF wird seine Gründe gehabt haben auf GS zu verzichten.

Just my 2 Cents
 
Ein Wort zu den Asyncs.

Es ist klar, dass man diese mit ein paar Mausklicks verursachen kann. Eben weil die Asyncs eine Art der Cheatprotection sind. Wenn jemand den Moneyhack anwirft, dann soll das Spiel crashen.
Was es aber auch können sollte ist rauszufinden welcher Spieler den Async verursacht hat, um eben seinem Gegner die Punkte zu geben und den 'Cheater' eine rote Flagge zu verpassen und letztendlich bei öfterem auftreten dann zu bannen.
 
Das gibt es aber in CnC noch nicht und in SC2 wurde ich auch damals nicht abgemahnt..
 
Bin ganz klar für die Server Lösung.

Und wenn soll es was eignes sein ohne Gayspy ...

nur sollte mehr als ein Server eingesetzt werden damit nicht der Traffic über nen Server in den USA geht ....
 
@zokker13

Einen Moneyhack?

Einen funktionierenden gibts bei CnC nicht, weil das Spiel dann immer in den Async geht. Aber Geldmanipulation war eine beliebte Version um den "Async Cheat" herzustellen. Also das Spiel per Async zu crashen um keine Punkte zu verlieren. Teilweise waren sie schlecht programmiert, so das man bei Ra2 erkennen konnte im Replaytool (von Olaf) wenn das Geld hochgeschossen ist. Aber ja, es gab sie. Verwendbar dann halt nur im Einzelspielermodus.
 
ich hab mal ne Frage:
Oben im Eröffnungspost steht das es im P2P nicht möglich sei den schuldigen eines Dc zu ermitteln (C&C)
weiter unten steht das Sc2 auch P2P verbindungen benutzt.wie machen die das denn das sie wissen wer d hat und wer nicht ,denn da gehts? also sollte es auch für ein C&c möglich sein oder hab ich da was übersehen??

grundsätzlich hätte ich nichts gegen P2P einzuwenden. alledings sollte im Game angezeigt werden was die Mitspieler für Verb./ping besitzen um möglichst vor Gamestart entscheiden zu können ob mann mit ihm spielen will.(ich glaube in generals war sowas möglich)
würde ich mir wünschen das man eine dc-rate im profil Ingame sieht .
 
@zokker13

Einen Moneyhack?

Einen funktionierenden gibts bei CnC nicht, weil das Spiel dann immer in den Async geht. Aber Geldmanipulation war eine beliebte Version um den "Async Cheat" herzustellen. Also das Spiel per Async zu crashen um keine Punkte zu verlieren. Teilweise waren sie schlecht programmiert, so das man bei Ra2 erkennen konnte im Replaytool (von Olaf) wenn das Geld hochgeschossen ist. Aber ja, es gab sie. Verwendbar dann halt nur im Einzelspielermodus.

In RA3 konnte man aber sein Geld fixieren, erhöhen ect.
Da gab es kein Asynch.

Es ist nur erkennbar, wenn man plötzlich 10k cash mehr hat. :D
 
In RA3 konnte man aber sein Geld fixieren, erhöhen ect.
Da gab es kein Asynch.

Es ist nur erkennbar, wenn man plötzlich 10k cash mehr hat. :D

OT
Gabs da nicht mal was mit dem ConYard? ich erinnere mich dunkel :D
/OT
 
ich hab mal ne Frage:
Oben im Eröffnungspost steht das es im P2P nicht möglich sei den schuldigen eines Dc zu ermitteln (C&C)
weiter unten steht das Sc2 auch P2P verbindungen benutzt.wie machen die das denn das sie wissen wer d hat und wer nicht ,denn da gehts? also sollte es auch für ein C&c möglich sein oder hab ich da was übersehen??

grundsätzlich hätte ich nichts gegen P2P einzuwenden. alledings sollte im Game angezeigt werden was die Mitspieler für Verb./ping besitzen um möglichst vor Gamestart entscheiden zu können ob mann mit ihm spielen will.(ich glaube in generals war sowas möglich)
würde ich mir wünschen das man eine dc-rate im profil Ingame sieht .
Es ist möglich indem die Spieler während des Games dennoch ne Verbindung zum Server behalten (im Fall von SC2 Battle.net), sodass dieses erkennt wenn einer disconnectet.
 
Generell würde ich ebenso eine serverseitige Verbindung bevorzugen.

Und zwar aus folgenden Gründen:
  • Die Spielgeschwindigkeit hängt nicht von den Mitspielern ab.
  • Es lassen sich Verbindungsabbrüche und asynchrone Zustände besser einem Spieler zuordnen.
 
Back
Top Bottom