Anti-Cheat für MMOs Probleme und Lösungen? [geschlossen]

14

Die meisten Online - Spiele leiden unter diesem Problem, und es gibt einige Softwarefirmen, die dieses Problem behandeln. Vor kurzem haben die meisten Unternehmen jedoch versucht, zu vermeiden, dass diese Programme ihr eigenes System erstellen (Blizzard mit Warden, Aion mit eigenen Überprüfungen usw.) ...) aber es ist ein sehr schwieriger Fall, solche ...

Ich wollte nur sagen, dass ich als Community-Wiki ein weiteres Fragethema erstellt habe, das speziell für das Posten von Anwendungen gedacht ist. Es handelt sich dabei um Funktionen und die Ideen, die hinter dieser Frage stehen, sind nicht, diese aufzulisten, sondern mehr über Ihre Versuche, Probleme auf dem Weg und mögliche Lösungen zu erfahren , Stück von Codes, wenn Anwendung und so weiter.

Welche Art von Schutz benutzt ihr, um solche Handlungen zu verhindern (zu versuchen):

  1. Anti-Cheat-Software? (Bitte geben Sie an, auf welche, warum und welche möglichen Probleme Sie gestoßen sind, zum Beispiel, dass Aion GameGuard in der Beta-Phase aufgrund einer Vielzahl von Kompatibilitätsproblemen nicht mehr verwendet hat und beschwert sich bei seinen Nutzern.)
  2. Dein eigener Code? (Welche Art von Überprüfung führen Sie normalerweise durch, um sicherzustellen, dass die bösen Absichten der Spieler beachtet werden, z. B. Speedhack, Überprüfung des neuen Standorts gegen Geschwindigkeit + letzter Standort usw.)
  3. Keine, ist mir egal? (Irgendwelche persönlichen Gründe oder Anregungen, die Sie gerne geteilt haben?)

Haben Sie einen interessanten Code zu dem Thema, das Sie veröffentlichen möchten?

Fühlen Sie sich frei, um meinen Text mein Englisch inst so großartig zu überarbeiten? **

Prix
quelle
1
Tag gemacht. Wenn Sie damit rechnen, dass es eine große Anzahl von Antworten gibt, machen Sie es bitte zu einem Community-Wiki. Dadurch können mehrere Personen einzelne Antworten bearbeiten, anstatt sie ständig neu zu formulieren.
Jesse Dorsey
1
Ein Beispiel, wie dies nützlich sein könnte. Schauen Sie sich dies an: gamedev.stackexchange.com/questions/480/…
Jesse Dorsey
Vielen Dank für den Kommentar und die Links, ich werde es jetzt überprüfen und sehen, aus meiner Sicht ist diese Art von Frage für die Spieleentwicklung ein sehr guter Diskussionspunkt, aber die meisten für die MMO-Spiele glaube ich, also bin ich mir nicht sicher, auch die Community ist im Moment ziemlich klein und ich hatte Angst, für eine solche Frage zunächst negativ bewertet zu werden, daher bin ich mir nicht sicher, danke für die Erstellung des Tags :)
Prix

Antworten:

22

Leider ist es sehr schwer, die Leute vom Betrügen abzuhalten, weshalb Software wie Punkbuster entwickelt wurde, um zu versuchen, einige von ihnen zu fangen.

Für ein MMO können Sie nur nichts vertrauen, was der Kunde Ihnen schickt . Der Client sollte nicht in der Lage sein, Ihnen mitzuteilen, wo der Spieler hingezogen ist, wie viel Schaden er an wen zugefügt hat usw. Stattdessen sollten Sie dem Server Steuereingaben übermitteln und bestätigen, dass dies praktikabel ist (Drücken der "Angriff" -Taste) 1000-mal in 1 Sekunde ist beispielsweise ungültig), dann aktualisieren Sie die Simulation auf dem Server. Sie würden dann die relevanten Teile des neuen Status des Spiels an den Client zurücksenden.

Während Sie Benutzereingaben validieren, können Sie auch nach Trends in deren Eingaben suchen. Wenn Sie keine Makros zulassen, können Sie sie hier abfangen, indem Sie feststellen, dass der Benutzer in den letzten 30 Minuten an genau denselben Pixelkoordinaten im Intervall von 1 Sekunde auf dieselbe Schaltfläche geklickt hat.

Der Client selbst ist der wichtigste Ort, an dem die Leute betrügen können, daher können Programme wie Punkbuster Wallhacks, Aimbots usw. reduzieren. Wenn Sie dem Client nicht vertrauen und alles validieren, was Ihnen vom Client gesendet wurde, hilft dies, das Betrügen zu reduzieren.

Sean James
quelle
Vielen Dank für Ihren Beitrag. Ich hoffe, mehr Leute zu sehen, die ihren Beitrag leisten. In der Tat ist dies ein sehr schwieriges Problem ... Es gibt auch diejenigen, die das Spiel durchgreifen, um die Anti-Cheat-Engine zu deaktivieren, und es wird von ihr aufgerufen ... was die Dinge noch schwieriger macht ... es sei denn, Sie haben eine Online-Engine GM, um die von Ihnen angegebene Person oder andere Überprüfungen zu überprüfen. was haltet ihr von dieser frage für community wiki soll ich es behalten oder etwas ändern, um es fit für es zu machen;
Prix
Wahrscheinlich Community-Wiki, es sei denn, Sie suchen nach einer bestimmten Antwort.
Sean James
Haben Sie weitere Einzelheiten zur Funktionsweise von Punkbuster, um eine vollständigere Antwort zu erhalten?
Chris Lloyd
Gute Antwort - es gibt keine "einzige Lösung, um alle zu regieren" - die meisten Spiele haben mehrere "Angriffsvektoren". Oft geht es vor allem um die Risikobewertung, dh um die Auswirkungen auf die Community, wenn jemand System X usw. betrügen kann
zebrabox
Ich glaube, Hacking ist unvermeidlich, sogar das stärkste Anit-Cheat-Programm. Betrug ist in Ordnung, wenn technisch offline, aber nicht online. Online spielen bedeutet mehr Fairness. Ist das so?
David Dimalanta
8

Protokollierung. Alles, was auf dem Server passiert, sollte protokolliert werden, und im Idealfall alles, was vom Client kommt. Der Client ist von Natur aus nicht vertrauenswürdig, aber selbst die Protokollierung nicht vertrauenswürdiger Daten kann aufschlussreich sein.

Sobald alles protokolliert ist, werden die Daten analysiert, um einen Cheat zu erkennen. Einige Cheats sind offensichtlich (Werte außerhalb des zulässigen Bereichs, z. B. die Möglichkeit, sich weit schneller zwischen Punkten zu bewegen, als es der Avatar normalerweise zulässt), andere sind heimtückischer (z. B. Zielbots, die eine pixelgenaue Ausrichtung in künstlich kurzen Zeiträumen ermöglichen). Einige sind noch schwerer zu erkennen (wie Wallhacks), aber wenn Sie so viel wie möglich aufzeichnen, können Sie diese sowohl automatisch als auch manuell erkennen. Es gibt verschiedene Artikel darüber, aber im Allgemeinen lassen sich Cheats bei der automatischen Erkennung sehr leicht erkennen, da sie genau so vorhersehbar / wiederholbar sind, wie es menschliche Spieler nicht tun.

Da es sehr wahrscheinlich nicht möglich ist, absolut alles aufzuzeichnen, ist eine gestufte Protokollierung nützlich. Zum Beispiel sind Berichte über das Betrügen durch Benutzer oder eine einfache Protokollierung, die die Möglichkeit des Betrugs erkennt (Punktzahl weit über der statistischen Kurve), ausreichend, um einen bestimmten Client / Account / CD-Schlüssel für eine ausführlichere Protokollierung zu kennzeichnen, die dies könnte dann verwendet werden, um zweifelsfrei zu beweisen, dass ein Cheat verwendet wird.

Was Sie tun, wenn Sie einen Cheat entdecken, ist eine ganz andere Sache. Das Sperren von Konten nachträglich ist gut, insbesondere wenn Sie über einen automatisierten Erkennungsmechanismus verfügen, der ausreichend zuverlässig ist. Ein frühzeitiges Sperren warnt die Betrüger, dass sie erkannt werden, und birgt das Risiko von Fehlalarmen aufgrund nicht eindeutiger Erkennungsmechanismen. Ein zu spätes Sperren kann das Spielerlebnis für andere beeinträchtigen. Dies ist ein sehr grauer Bereich, und die Entwickler müssen das Urteil fällen.

MrCranky
quelle
2

Vorausgesetzt, alle wichtigen Arbeiten in Ihrem Spiel finden serverseitig statt, sollte nur wenig oder gar kein Betrug möglich sein. Wenn Sie die Makrobearbeitung einschränken oder die Paketbearbeitung für die Benutzer unangenehm machen möchten, lassen Sie Ihr Programm regelmäßig nach aktiven Modulen suchen. Wenn Sie beispielsweise WpeSpy.dll finden, wissen Sie, dass WPE angeschlossen ist. Tun Sie dies für die anderen gängigen Werkzeuge. Dies kann umgangen werden und ist ein Wettrüsten und eine verlorene Sache, aber wenn Ihr Spiel relativ klein ist, können Sie die Anzahl der Leute, die herumdrehen, sehr leicht um den Faktor zehn reduzieren ... und das kann gut sein genug für dich.

James Bellinger
quelle
Vielen Dank für den Beitrag, haben Sie eine Anti-Cheat-Software verwendet oder hatten Sie ein solches Problem, um das Sie sich kümmern mussten? Wenn ja, wäre es schön, davon zu hören.
Prix
2
Ich habe keine Anti-Cheat-Software von Drittanbietern verwendet, nein. Als ich anfing, ein Online-Rollenspiel zu programmieren, nannte mein Server "Angriff", als der Client "Angriff" sendete, anstatt die Anfrage in eine Warteschlange zu stellen. Dies ist das Wichtigste, um Betrug zu verhindern. Speed-Hacks erledigen das gesamte Timing auf dem Server, damit sie nur einen geringen Vorteil erzielen. Sie senden jedoch auch Zeitstempel. Wenn Sie zu viele Abweichungen feststellen, wissen Sie, dass sie einen verwenden. Markieren Sie ihr Konto, aber treten Sie nicht sofort auf sie ein. Sofortiges Feedback ist eine großartige Möglichkeit, um zu erfahren, was Ihre Software erkennt.
James Bellinger
1
Ich mag diesen Teil, den but also send timestamps, and if you get too much drift, you'll know they are using one. Mark their account, but don't kick them immediately -- immediate feedback is a great way for someone to know what your software detects.ich kürzlich über die Implementierung eines Zeitstempel- und Warnsystems von markierten Benutzern nachgedacht habe. Derzeit habe ich den Player auf eine Liste gesetzt, an der ich gerade arbeite Ein Online-GM zur Überprüfung ...
Prix