Wie wir gewöhnliche Spieler und für DDoS oder unsere Server kaputt gemacht haben: eine praktische Anleitung

Über neue Projekte zu sprechen ist natürlich gut, aber nicht immer läuft alles so, wie wir es wollen.

Im Allgemeinen erinnerten sie sich an Fakap aus der Vergangenheit, als die Lösung eines Problems neue hinzufügte, mitgerissen wurde und beschloss, ein Paar zu teilen. Wie man unschuldige Spieler verbietet, ihre eigenen Server tötet, einen Fehler in einem Buchstaben macht und jede Menge negatives Feedback von Benutzern erhält - das ist alles, was wir lieben.



Verloren - ein Verbot bekommen


Es gab eine Zeit, in der unser Spiel War Robots aufgrund von Architekturfehlern von Betrügern angegriffen wurde. Es gab Versorgungsunternehmen, die die Versorgung der kosmischen Werte mit Gesundheit erhöhten, was sie praktisch unsterblich machte. Infolgedessen haben wir die Aufgabe mit Betrügern abgeschlossen, aber nicht sofort.

Zunächst wollten wir das Problem auf technischer Ebene wunderbar lösen: Blockieren Sie die Möglichkeit, Roboterparameter auf dem Client zu ändern. Dies ist uns nicht gelungen (dann haben wir natürlich einen Weg gefunden). Und dann war die erste funktionierende Lösung ein Banhammer, der Betrüger nach einem einfachen Schema berechnete:

  1. Jeder Roboter nach dem Match wurde auf Beschädigungen getestet.
  2. Wenn der vom Roboter erlittene Schaden den Wert seiner maximalen Gesundheit überschritt, wurde der Spieler als Betrüger erkannt und sein Konto wurde gesperrt.

Die Lösung war eine Krücke, aber effektiv. Probleme wegen ihm begannen etwas später, aber zuerst müssen Sie ein wenig über einen anderen Fehler und die Funktionen der Entwicklung von synchronem mobilem PvP sprechen.

Wenn Spieler eine sehr ungezogene Internetverbindung haben (was bei mobilen Spielen normal ist), können beim Datenaustausch zwischen dem Client und den Servern absolut magische Dinge passieren. Kundenanfragen sind unvollständig, außer Betrieb oder mit großer Verzögerung. Im Allgemeinen erlaubte ein Serverfehler, dass der Client bei schlechter Verbindung die Ergebnisse des Kampfes zwei- oder sogar dreimal hintereinander senden kann. Dementsprechend könnten Spieler 2-3 mal mehr Belohnungen erhalten oder versehentlich doppelt so viele Ressourcen für Reparaturen ausgeben.

Wir haben dieses Problem ziemlich schnell gelöst: Das Serverprofil hat gelernt, unnötige Kampfergebnisse von einem Client zu ignorieren. Nach erfolgreichen Tests haben wir eine neue Version veröffentlicht.

Es war hier, was uns bedeckte.

Jeden Tag fing ich an, eine ganze Reihe von Spielern mit einem Banhammer zu verbieten, was wir sicher vergessen haben, weil Das Problem unzerstörbarer Roboter mit unendlich viel Gesundheit gehörte der Vergangenheit an. Es stellte sich heraus, dass der Banhammer, sobald der Kunde des Spielers die Ergebnisse eines Kampfes in doppelter Menge an den Server schickte, dies so wahrnahm, dass jeder tote Roboter zweimal getötet wurde - d. H. nahm doppelt so viel Schaden wie seine Gesundheit. Und nach jedem Kampf flogen die Spieler in Gruppen in das Verbot.

Jeder war natürlich unban und zahlte sogar eine Entschädigung, aber die Situation ist mittelmäßig, nicht sicher positiv.



So richten Sie DDoS selbst ein


Wir haben bereits über die Entwicklung unserer Serverinfrastruktur geschrieben und uns jetzt an einen Fall dieser Zeit erinnert.

Ende 2015 wurde das lang erwartete Feature in War Robots - Clans veröffentlicht. Als das Update herauskam (und es war spät am Abend), öffneten wir den Champagner und alles würde gut werden. Aber ich musste mich nicht lange freuen - die Server fühlten sich plötzlich schlecht an. Es stellte sich heraus, dass wir mit unseren eigenen Händen einen DDoS-Angriff durchgeführt haben.

Wie? Sehr einfach. Der Client auf dem Bildschirm mit den Kampfergebnissen stellte zu viele Anfragen, um Informationen über die Clans der Spieler zu erhalten. Und als der Server mit "Lass mich in Ruhe, Fehler" antwortete, kehrte der Client ohne Zeitüberschreitung zum Server zurück.

In derselben Nacht haben wir die Flagge heruntergespült (wir hatten noch keine Zeit, den Champagner zu schließen), die vom Profilserver aus gesteuert wurde - sie hat den Betrieb der Hangar-Client-API vollständig blockiert. Für Spieler, die bereits den Clans beigetreten sind, haben wir diese Flagge aktiviert gelassen, dh, alles hat für sie funktioniert, da ihre Anzahl nicht ausreichte, um den Server zu DDoS zu machen.

Infolgedessen haben wir begonnen, Serverantworten im Spiel korrekt zu verarbeiten und im Fehlerfall das Zeitlimit für das erneute Versuchen der Anforderung zu erhöhen.

Bewertung "Kostenlos"


Eine andere Geschichte ist, wenn eine Implementierung von schlechter Qualität auf den menschlichen Faktor trifft. Erst jetzt haben sie niemanden verboten, aber im Gegenteil, sie haben die Bewertung links und rechts verteilt. Kurz gesagt, eines Nachts verzeichnete unsere Überwachung (und wir überwachen überhaupt alles ) ein zu schnelles Wachstum der Spielerbewertungen.

Dann stellte sich heraus, dass die theoretische Implementierung des Scorings das Duplizieren von Daten ermöglichte. Aber niemand hätte darauf geachtet, wenn der diensthabende Administrator aufgrund eines Tippfehlers in einem Buchstaben versehentlich einen Server neu gestartet hätte, der nicht funktionieren sollte. Er begann, die Spielerbewertungen zu verdoppeln.

Ich musste dringend einen Fix freigeben und durch die Basis gehen, um alle zusätzlichen Punkte zu entfernen, die Zeit hatten, sich zu sammeln. Um dies zu verhindern, haben wir auf allen Servern das alte Schema zur Berechnung von Punkten herausgeschnitten und die Möglichkeit eines fehlerhaften Starts von Diensten ausgeschlossen, bei denen sie nicht funktionieren sollten. Das war natürlich von Anfang an notwendig, aber es wäre zu langweilig.

Unbezahlbarer Preis


Es gab noch einen Fakap mit einem Tippfehler, aber viel ernster.

Irgendwie haben wir an Halloween eine neue Gacha ins Leben gerufen - eine Lotterie. Wenn jemand es nicht weiß, ist eine Gacha die Mechanik, um einen Gegenstand aus mehreren verschiedenen zufällig zu erhalten. In der Lotterie hatte der Spieler eine begrenzte Anzahl sichtbarer Preise mit unterschiedlichen Werten. Für jede Eröffnung erhielt der Spieler 1 Preis, dieser Preis wurde aus dem Set genommen und der Eröffnungspreis jedes Mal erhöht. Somit konnte der Spieler garantiert alle Preise der Lotterie kaufen, und die Glücklichen nahmen die wertvollsten Preise bei den ersten Eröffnungen heraus (und erhielten sie dementsprechend sehr billig).

Im Allgemeinen haben wir dann mit Blut ein Feature für das Ereignis abgespült, es getestet und es ausgelegt. Wir fangen an, wir aktualisieren Zeitpläne ... Hurra! Sie eilten herbei! .. Und gleichzeitig fallen Unmengen an Negativität in der Community auf uns, dass wir angeblich unsere Spieler täuschen.

Innerhalb einer halben Stunde musste die Lotterie ausgeschaltet werden. Ja, wir haben die Spieler wirklich reingelegt. Aber es ging nicht um Chancen oder Preise - es war in einem Brief.

Die Lotterie-Oberfläche zeigt die Kosten für die aktuelle Eröffnung (die jedes Mal erhöht wurde), z. B. PREIS: 100 Gold. So sah das Konzept aus (beachten Sie, dass laut Idee jede Karte auch einen zusätzlichen Eröffnungspreis hat):



Und so kam es zum Ende, als sich PRICE (Preis für die Teilnahme an der Lotterie) aufgrund einer Reihe von „Verbesserungen“ plötzlich in einen PREIS (Preis) für den Designer verwandelte:



Gleichzeitig ging aufgrund von Verwirrung vor der Veröffentlichung und schlechtem Scheck von jeder einzelnen Karte der Eröffnungspreis verloren, was die Spieler insgesamt verwirrte.

Und sie drückten reflexartig den Knopf, bis sie die ganze Härte verbraucht hatten. Nun, was, der "Preis" steigt mit jedem Kauf. Und so war es in 18 Sprachen. Gleichzeitig hatten wir auch "Gebietsschemas" auf dem Client, so dass es möglich war, auch nur einen Buchstaben über einen Hotfix zu reparieren.

Infolgedessen entfalteten sie die Situation, führten zusätzliche Kontrollpunkte ein, gaben das Gold an die Spieler zurück und speicherten die Gebietsschemas auf dem Server, damit nichts dergleichen wieder passieren würde.

Es ist Zeit, den Hashtag # Kosyakinaprode einzuführen

Source: https://habr.com/ru/post/de417441/


All Articles