Replikation. Ich habe hier schon des öfteren über Replikation geschrieben und warum es das Herzstück eines Multiplayer Spiels ist - und warum ein Spiel daran zerbricht oder nicht. Um mich nicht immer wieder zu wiederholen fasse ich es hier zusammen. Wie schon zuvor - ich könnte ein Buch darüber schreiben und habe das überlegt - aber auch hier will ich euch die Kosten für ein Buch sparen und versuche mich kurz zu fassen.
1. Was ist Replikation und warum ist es so wichtig?
OK um es kurz zu machen - der Grund nennt sich Cheating. Cheating - also "Schummeln" ist schon älter als Videospiele - das gab es sicherlich schon vor tausenden von Jahren als die ersten Spiele aufkamen. Spiele haben regeln und wer sie bricht ist Schummler. Vor 500 Jahren waren es vielleicht gezinkte Würfel oder so. Heute in Videospielen sind es eher Tools und Programme die den Spielablauf manipulieren. In Single Player Spielen ist das nicht so schlimm - wenn ihr euch im allerersten Doom von 1993 im Single Player unendlich Gesundheit oder Munition verschafft habt dann war das Spiel vielleicht ein bisschen langweiliger für euch aber OK - das stört ausser euch niemand.
Heute spielt man gerne Muliplayer und wenn jemand in "Counter Strike" unsterblich ist dann ist das für die ehrlichen Spielernicht nur frustrierend - es zerstört das Spiel und führt dazu daß ein Spiel für ehrliche Spieler sinnfrei ist und sie aufhören zu spielen. Bei kostenlosen Spielen vielleicht nur ärgerlich - wenn ihr dafür bezahlt habt - eine Zumutung und Betrug!!!
Was hat Replikation damit zu tun? In UE4 bestimmt Replikation welche Werte im Spiel wie festgehalten und übertragen werden.
Bewegung und Gesundheit sind so typische Werte die repliziert werden. Ja in den meisten Ballerspielen seht ihr die Gesundheit des Gegners und klar wenn er sich bewegt oder schiesst. Doch wie geht das im Detail und wie setzt man das um? Was ist ein Client und was ist ein Server und wer repliziert wohin? Kommen wir zum nächsten Kapitel...
2. Client Server Konzept - wer hat die Hosen an?
Traditionell gibt es einen Server - bei guten Spielen vom Betreiber gestellt -der hat die Hosen an und bestimmt praktisch alles. Aber was hat das mit Replikation zu tun und wer repliziert wohin?
Grundsätzlich seit ihr wenn ihr ein Online Spiel zockt der Client, sozusagen der "Kunde", der grosse Server ob nun von Rockstar, Origin oder Bethesda der "Server", also der "Betreiber". Klar der "Server" sagt wo es lang geht, ob ihr noch in einer Partie mitmachen könnt oder ob es schon "voll ist". Der Server hat die Hosen an, der sagt wo es langt geht. Aber was hat das mir Replikation zu tun?
Bei UE4 ist der fatale Punkt - das bestimmt ihr. Hier könnt ihr alles falsch machen oder alles richtig. Wichtig ist es zu verstehen daß der Server das sagen hat.
Replikation kann vom Client aus gehen -alsovom Spieler oder vom Server. Klar der Server soll das sagen haben - aber kann der alles machen? Wenn der Client nur Zuschauer ist -ja.Aber er Client will ja auch spielen, also muß er schon was replizieren. und hier beginnt die Denkarbeit.
3. Was repliziert der Client? Best practices
Klar erstmal denkt man es macht Sinn alles vom Client zu replizieren. Bewegung, Gesundheit, evtl welche items er hat. Aber genau hier setzt ein Cheater an. Ihr repliziert gesundheit an den Server? Toll ein Cheater repliziert immer 100% Gesundheit. Auch wenn euer Spiel das nicht hergibt - der Cheater baut ein programm um den Speicherbereich zu manipulieren der die Gesundheit festhält und überschreibt es immer mit 100%. Schon ist man unsterblich. Macht das Spiel viel einfacher. Und alle ehrlichen Spieler beissen ins Keyboard weil man den Typ nie abknallen kann.
Aber Gut was repliziert man dann? Goldene Regel? Nur die TASTATUR (Und Maus) Eingaben des Client. Nur das!!! Niemals mehr. Der Server kennt die Gesundheit des Spielers. Der Spieler schiesst? Dazu repliziert er die aktuelle Position und den Winkel. Hat er getroffen? Der Server errechnet das! Der Server zieht dann Gesundheit vom Gegner ab. Im Grunde wird alles vom Server festgehalten und replizieren tut der Client nur die Eingaben die er macht, also 3.5 Sekunden "W" gedrückt gehalten um vorwärts zu laufen, dann das Fadenkreuz 63 Grad nach Links gedreht und linke Maustaste gedrückt und zu schiessen. So ungefähr. Mehr repliziert der Client nicht!!!
4. Reicht das? Mehr cheats?
Ja das reicht an Client Replikation. Welche Items der Spieler hat, welche davon aktiv sind, wieviel Gesundheit, ob er getroffen hat usw - das repliziert alles der Server. Was ein Gener an Items spawnt wenn er stirbt, was der Spieler tatsächlich einsammelt usw - alles Server Sache. Vom Client - nur Eingaben! Ist das sicher? Nein!!!!! Hier braucht es sogenannte Plausi Prüfungen. Ist die Eingabe plausibel? z.B. dreht sich der Spieler schneller als das mit der besten 1200 dpi optical Mouse möglich ist? Dann ist es evtl. ein Aimbot - also ein Programm daß das Fadenkreuz des Spielers immer in Richtung des Kopfes eines Gegners dreht. Ob man hier automatisch den Client bannt wegen cheating oder nur einen Alarm auslöst bleibt einem selber überlassen, aber klar auch hier gibt es noch Material für Cheater. Wenn der normale Spieler maximal 120 Eingaben pro Minute macht und da ist plötzlich einer der 500 überschreitet dann ist das vielleicht ein Cheater? Hier muß man nicht direkt einen Ban aussprechen sondern erstmal im Beta Test Werte sammeln - können das Spieler legitim überschreiten? Hat vielleicht einer eine neumodische Maus oder Tastatur die solche Werte zulässt? Hier braucht es Fingerspitzengefühl - aber Cheater kann man evtl überführen wenn solche Werte total aus dem Ruder laufen.
5. Fazit?
Siehe Punkt 3. Repliziert man nur ds notwendigste vom Client ist man auf der sicheren Seite. Hat man nur Eingaben zu replizieren stehen auch die härtesten Cheater mit leeren Händen da. Je weniger der Client repliziert desto weniger Angriffspotential. Früher dachte man oft "Lass den Client mehr replizieren, dann ist der Server weniger busy und ich kann mehr Leute darauf spielen lassen." Führt aber nur zu mehr Cheatern und zu regelrechten Kriegen zwischen Admins und Cheatern. Die regulären Spieler sind hierbei die Verlierer - und die bezahlen ja für das Vergnügen.