Ich möchte einen Multiplayer-Top-Down-Shooter erstellen. Während ich über verschiedene Themen gelesen habe, kann ich sehen, dass ich einige echte Herausforderungen vor mir habe, aber ich bin alle bereit dafür.
Eine Sache, die ich nicht verstehen kann, ist, wie soll ich das Spiel vor Leuten schützen, die versuchen, Bots zu erstellen?
Ich meine, soweit ich weiß, ist es unmöglich, den Netzwerkverkehr so zu schützen, dass die Spieler keine Programme erstellen können, die die Vorgänge anhören und verstehen.
Was mich also beunruhigt, ist, dass die Leute Bots erstellen können, die den aktuellen Standort der Rivalen abhören und eine Kommunikation senden, die so aussieht, als würde der Spieler genau an dem "perfekten" Ort schießen, um das Match zu gewinnen.
Welche Techniken werden also verwendet, um Echtzeitspiele vor solchen Bots zu schützen?
Ich möchte auch erwähnen, dass ich versucht habe, nach Diskussionen zu suchen (das hört sich nach etwas an, mit dem viele Leute zu kämpfen haben), aber nichts darüber speziell finden konnte, nur als Teil allgemeinerer Fragen zum Networking in Echtzeitspielen . Wenn ich härter ausgesehen haben sollte, zögern Sie nicht, mich an meine Stelle zu setzen :)
quelle
Antworten:
Es gibt zwei Ansätze, um Bots entgegenzuwirken. Sie sind clientseitiger Schutz und serverseitige Analyse.
Client-seitiger Schutz ist der naheliegendste Ansatz - gewissermaßen Brute Force. Sie unternehmen alle Anstrengungen, um sicherzustellen, dass der Spielclient vollständig legitim ist, nicht manipuliert wurde und von keinem anderen Programm betroffen ist. Dies ist ein schwieriges Problem, das nicht vollständig zu lösen ist. Aber viele Spiele versuchen es und haben einige Erfolge mit dieser Methode. Ich weiß, dass es einige vorgefertigte Lösungen für den Kundenschutz gibt, und schlage vor, dass Sie nach ihnen suchen. Eine selbst umzusetzen ist eine entmutigende Aufgabe.
Client-seitiger Schutz ist nicht nur weniger als 100% effektiv, sondern hat auch den Nachteil, dass er für Ihre Spieler äußerst ärgerlich ist. Normalerweise impliziert dies Dinge wie das Deaktivieren der Umschaltung von Alt-Tab-Aufgaben, Antivirenprogramme usw.
Die serverseitige Analyse ist weniger aufdringlich. Bei diesem Ansatz verfügen Sie über einen Servercode, der Muster im Verhalten der Spieler analysiert. Meistens spielen Bots nachweislich anders. Beispielsweise haben menschliche Spieler eine unterschiedliche Zeitspanne zwischen den Aktionen (z. B. Schießen), und diesmal wird eine Glockenkurvenverteilung eingehalten. Primitive Bots haben eine konstante Zeit oder sind gleichmäßig über ein bestimmtes Intervall verteilt. Tolles Faktum: Auf diese Weise haben wir einmal einen Spieler mit einem mechanischen Bot erwischt - einem cleveren Gerät, das Tasten auf seiner Tastatur gedrückt hat. Unnötig zu sagen, kann nicht Menge an Kundenschutz fangen , dass . Dennoch ist diese Analyse nicht perfekt. Fortgeschrittenere Bots täuschen Ihre Systeme, und je mehr Prüfungen Sie implementieren, desto fortgeschrittenere Bots werden.
Für einen optimalen Schutz können Sie beide Methoden kombinieren. Der Client-Schutz erschwert die Entwicklung von Bots, und die Server-Analyse stoppt einfache Bots, die schnell entwickelt wurden. Aber was auch immer Sie tun, Sie können Bots nie ganz stoppen. Nun, es sei denn, Sie schicken Ihre Vertreter zu den Häusern der Spieler, um deren Spiel zu überwachen und Verstöße zu melden. (Was übrigens nicht ungewöhnlich ist. Ich habe definitiv eine Geschichte über ein Online-Poker-Unternehmen gelesen, das Leute zu einem sehr erfolgreichen Spieler nach Hause geschickt hat, um zu bestätigen, dass er legitim gespielt hat. Aber ich kann es anscheinend nicht finden.)
Es gibt zwei weitere zweifelhafte Empfehlungen für den Kampf gegen Bots. Erstens, verschlüsseln Sie Ihren Netzwerkverkehr. Ich glaube nicht, dass das funktionieren wird. Befindet sich Ihr Client in der Hand eines Feindes, kann und wird der Datenverkehr entschlüsselt ... oder Ihr eigener Client wird für die Verschlüsselung verwendet. Andererseits führt die Verschlüsselung zu einer Verzögerung, was für einen "Echtzeit-Shooter" sehr schlecht ist. Die zweite Empfehlung lautet "Gestalte dein Spiel einfach so". Obwohl dies eine gute Idee zu sein scheint, habe ich noch kein einziges Spiel gesehen, das dies geschafft hat.
quelle
Ich würde nicht erwarten, dass einer der großen Spieler darüber spricht, was sie tun, um ihre Spiele zu schützen. Je weniger die Leute wissen, was sie tun, desto schwieriger ist es für die Leute, sich darum zu kümmern. Ich denke, Steam sucht unter anderem nach bestimmten Anwendungen, die auf einer schwarzen Liste stehen.
Persönlich würde ich versuchen, die Kommunikation zwischen kommunizierenden Maschinen so gut wie möglich zu verschlüsseln und zu verschleiern. Es könnte sich lohnen, über die Funktionsweise von https / ssl nachzulesen, um einige Ideen zu erhalten. Wenn die Hosts einen zufälligen öffentlichen / privaten Schlüssel generieren und den öffentlichen Teil nur an andere Clients senden würden, wäre es nicht einfach, den Inhalt der zu sendenden Pakete abzufangen und zu ändern, obwohl Sie Zugriff auf den Client haben Maschine ist dann nichts mehr völlig sicher.
Sie müssen auch sicherstellen, dass die Client-Exe nicht manipuliert wird.
quelle
Gestalten Sie Ihr Spiel so, dass Teamarbeit und tatsächliche intelligente Entscheidungen wichtiger sind, als perfekt zielen zu können. Es wird exponentiell schwieriger, anständige Bots zu machen.
quelle
Und stellen Sie sich die alles entscheidende Frage, ob sich die Mühe lohnt. Cheater und Botters können zwei Dinge tun:
Die beiden schließen sich natürlich nicht gegenseitig aus.
In der Regel ist dann das größte Problem 3+ (da ein Mensch mit dem Training 2 Tastaturen oder andere Eingabegeräte gleichzeitig verwenden kann, aber nicht mehr, da er nur 2 Hände hat) Clients mit den gleichen oder eng verwandten IP-Adressen (oder MAC) Adressen), die im direkten Gleichlauf Befehle innerhalb von Millisekunden voneinander ausführen. Wenn Sie also feststellen, dass 5 Clients von derselben IP-Adresse stammen und Befehle mit einer ungewöhnlich hohen Rate und einer ungewöhnlich engen Koordination geben, haben Sie wahrscheinlich Ihren Botter gefunden. Normalerweise ist dies in PvP-Szenarien am schädlichsten, in denen diese Bot-Armee aufgrund ihrer höheren Koordination und Geschwindigkeit ein Engagement gegen eine ähnliche Anzahl von von Menschen kontrollierten Toons dominieren kann. In PVE-Szenarien ist der Schaden des Spiels in der Regel begrenzt (mit der Ausnahme, dass eine Person mehrere Toons schneller auf hohe Level trainieren kann).
quelle