Hinter den Kulissen von Skyforge Closed Beta



    Heute möchte ich über den ersten Teil des Closed Beta Testing (PTA) von Skyforge sprechen. Dies ist nicht das erste CBT, aber es ist am weitesten verbreitet. Die meisten Spieler sind keine Angestellten des Unternehmens und ihrer Freunde, sondern Fans des Spiels, die zufällig aus denjenigen ausgewählt wurden, die sich für die Teilnahme am Test angemeldet haben, und frühzeitig Kits gekauft oder gewonnen haben. Ab Freitagabend, dem 6. Februar, und bis zum Ende des Wochenendes wird ein spezielles Beta-Wochenende organisiert, an dem alle Benutzer, die ein Konto bei Mail.Ru besitzen, Zugang zur PTA erhalten. Dieser Beitrag ist narrativer Natur und vermittelt meinen persönlichen Standpunkt zu Ereignissen vor und während des PTA.

    Vorbereitung für PTA


    Die ersten Skyforge-Tests wurden ausschließlich im Entwicklerteam durchgeführt, sie haben alles selbst durchgeführt. Mit der Zeit wurde das Spiel jeweils stabiler und der Kreis der zu testenden Personen vergrößerte sich. Zuerst haben wir das Spiel den Kollegen des Allods-Teams gezeigt. Dann - zur Gaming-Abteilung der Mail.Ru Group. Dann - an das gesamte Team des Unternehmens. Ab diesem Zeitpunkt wurden alle Tests bereits von einem separaten Team durchgeführt - dem Betriebsteam. Am Stand wurden externe Tests durchgeführt, die sich auf die CBT und anschließend auf die MBT vorbereiteten.

    Damit Closed Beta-Tests produktiv sind, haben wir unsere Infrastruktur sorgfältig vorbereitet. Dirigiert StresstestsAuf CBT-Servern haben wir die Erfassung verschiedener Metriken, den Empfang von Abstürzen, die Protokollanalyse und vieles mehr konfiguriert. Und so, als alles fertig war, öffneten wir den Shutter und ließen die ersten echten User rein.

    Erste Momente


    Sobald die Spieler anfingen einzutreten, suchten wir sofort nach einer Sendung auf Twitch, um die Reaktion der Benutzer zu sehen, um zu verstehen, wie gut der Server läuft, und nur aus Neugier. Die meisten Studios sahen sich die Sendung eines ahnungslosen Spielers an, und selbst der Qualitätsdirektor gab ihm als normaler Benutzer Ratschläge. Wir erhielten die ersten Berichte von Kampfservern - Probleme mit der Autorisierung im Webportal, Client-Abstürze, Verbindungsfehler für einzelne Spieler. Im Allgemeinen war der Start jedoch erfolgreich: Der Kontoserver wurde verwaltet, und die Spielmechanikserver wurden nicht verlangsamt. Dies ist jedoch nicht verwunderlich, da die Leistungsfähigkeit von Eisen nach unseren Angaben für eine viel größere Anzahl von Anwendern ausreichen dürfte.

    Live-Patch


    Wir haben das Glück, dass der Skyforge-Server in Java geschrieben ist. Diese Sprache unterstützt von Haus aus den HotSwap-Mechanismus, bei dem Code im laufenden Betrieb ausgetauscht wird, ohne die Anwendung zu stoppen. Wir haben sogar ein spezielles Hilfsprogramm geschrieben, das sie und Patches durchläuft. Dieses Tool hat uns bereits beim Start des PTA geholfen. Als wir feststellten, dass beim Laden benutzerdefinierter Avatare für den Chat ein Fehler aufgetreten war, haben wir diese Funktion einfach kommentiert.



    Für die Benutzer blieb der Verlust eines Avatars fast unbemerkt, aber für einige Server wurde es viel einfacher zu leben. Im nächsten Patch wurde diese Funktionalität sofort deaktiviert.

    Grundsätzlich ist die Technik des Spot Patching genauso cool wie beängstigend und ohne volles Vertrauen in den Erfolg ist es besser, sie nicht zu verwenden.

    Kundenschwierigkeiten


    Aus der Sicht des Testens war der Server glücklicherweise viel glücklicher als der Client. Wir kennen die Hardware-Spezifikation, auf der der Server arbeiten wird, wir kennen die genaue Umgebung, wir konfigurieren selbst die Einstellungen. Der Kunde ist in dieser Hinsicht viel schwieriger. Während der Entwicklung haben wir 10-20-30 verschiedene Konfigurationen des PCs, auf dem der Client läuft. Dies sind die Computer der Entwickler. Nach der Veröffentlichung geht die Anzahl der Konfigurationen auf Tausende. Und jede von ihnen hat möglicherweise ihre eigenen Eigenschaften: exotische Treiber, Grafikkarten und andere Komponenten. Daher war die erste Welle neuer Spieler das Opfer massiver Abstürze und Leistungsprobleme. Dank unseres Systems zur Erfassung von Statistiken über Hardware und Leistung konnten die erforderlichen Verbesserungen jedoch schnell vorgenommen werden. Jetzt zielt die gesamte Arbeit des Teams auch darauf ab, die Stabilität zu verbessern und die FPS zu erhöhen.



    Auf solchen Heatmaps bewerten wir die FPS von Spielern in offenen Gebieten.

    Server Schwierigkeiten


    Das Testen außerhalb des Freundes- und Familienkreises führte das Serverteam in einige der Kuriositäten der realen Welt ein. So litten beispielsweise mehrere Benutzer unter den Besonderheiten ihrer Netzwerkinfrastruktur - eine neue Verbindung erhielt eine neue externe IP. Wenn also ein Spieler von einer Karte zur anderen teleportiert, ändert sich seine IP. Und wir haben es ehrlich gesagt vom Server getrennt, weil hielt diese Situation für ungültig. Aber nach mehreren gelieferten Tickets musste ich die IP-Überprüfung in derselben Spielsitzung deaktivieren, da sie zu paranoid war. Andere von uns hinterlassene Überprüfungen der Benutzervalidierung.

    Wenn Sie einen Artikel über Architektur lesenVon unserem Server wissen Sie, dass er aus vielen verteilten Servern besteht, von denen jeder auf seinem eigenen Host lebt und eine bestimmte Rolle ausübt: Berechtigungsserver, Spielmechanikserver, Datenbankserver und so weiter. Während der Entwicklung haben wir versucht sicherzustellen, dass der Ausfall eines einzelnen Servers nicht tödlich war und die meisten Benutzer weiter spielen konnten. Aber die Realität stellte sich als schwieriger heraus, als wir dachten.



    Manchmal fallen Server in ganze Racks. Zum ersten Mal hatten wir „Glück“, als das Rack mit dem Portal und mehreren Spielmechanik-Servern komplett stromlos war. Wir dachten, dass sich die Spieler so verhalten würden: Diejenigen, die das Pech hatten, auf stromlosen Servern zu sein, betreten das Spiel ruhig wieder und spielen weiter, haben jedoch den Fortschritt verloren, persönliche Karten weiterzugeben, die auf den toten Mechanikern verblieben sind. Da das Herunterfahren nicht normal war und die Hosts des Mechanikers vollständig verschwanden, erhielt der koordinierende Server leider keine Nachricht über die Trennung. Für mich persönlich war dies nicht das am meisten erwartete Verhalten von TCP-Keep-Alive. Es stellte sich heraus, dass Keep-Alive nach einem bestimmten (standardmäßig sehr langen) Timeout beginnt, Pakete über inaktive TCP-Verbindungen zu senden. Dies geschieht, um den Kanal nicht zu verschmutzen, wenn alles in Ordnung ist. Im Prinzip, Es war möglich, den Timeout-Wert für jede Verbindung einzeln festzulegen, dies würde jedoch fehlerhafte Hacks erfordern. Daher haben wir uns darauf geeinigt, unsere Entscheidung zu treffen: einen einfachen Ping-Pong-Server-Polling-Mechanismus. Das Plus ist, dass Administratoren in Remotegebieten diese Funktion nicht versehentlich deaktivieren können, im Gegensatz zu TCP Keep-Alive. Wir können jedoch Server deaktivieren, die beispielsweise zur Full GC-Serie gehören.

    Nachdem wir diese Idee besprochen hatten, einigten wir uns darauf, sie vor MBT umzusetzen. Trotzdem werden die Gastgeber nicht jeden Tag freigeschaltet.



    Als wir das obige Diagramm in Echtzeit sahen, dachten wir, dass ein starker Rückgang der Anzahl aktiver Benutzer ein Zeichen für das Ende des Arbeitstages ist. Aber es stellte sich heraus, dass der Gastgeber mit der Mechanik Nummer 13 gefallen ist. Zwei Tropfen in einer Woche sind immer noch ein Zufall. Aber bereits ein bedeutender Teil des Serverteams untersucht die Protokolle, wo und was am Wintergarten verbessert werden kann. Und hier, am letzten Freitag des Jahres, wenige Stunden vor der Firmenfeier, fällt der Gastgeber mit der Mechanikernummer 13 wieder. Und vor dem neuen Jahr und den 12 Urlaubstagen, die Sie außerhalb der Arbeit verbringen möchten. Wir beschlossen, die unglücklichen Mechaniker auszuschalten. Und seitdem gab es keine derartigen Vorfälle mehr. Damit das neue Jahr jedoch ruhiger wird und der Ausfall einzelner Mechaniker nicht zu dringenden Wartungsarbeiten führt, haben wir am selben Unternehmensabend die erste Version des Updates vorbereitet. Wir haben es ehrlich getestet: Wir haben eine verteilte Version des Servers auf lokalen PCs gestartet und das Stromkabel aus dem mechanischen Teil gezogen. Fix wurde als Arbeiter anerkannt und trat während der letzten vorbeugenden Arbeit von 2014 in den Kampf. Die Neujahrsfeiertage verliefen am Ende ruhig.

    Fehler 107


    107 - Dies ist genau der Code für einen Timeout-Fehler beim Herstellen einer Verbindung zum Server. Leider hat dieser Fehler bei den am PTA teilnehmenden Spielern große Popularität erlangt. Und damit sind gleich mehrere recht interessante Tatsachen verbunden.

    Ein Fehler oder sogar Fehler, die zu Fehler 107 führten, wurde lange Zeit - einige Monate vor dem Start des PTA - in die Netzwerk-Engine eingeschleust. Und die ersten, die über das Timeout stolpern, sind die Bots. Aber dann fehlte entweder die Zeit, oder ich konnte die Gründe nicht herausfinden, aber in den Bots wurden am Ende alle Arten von Timeouts einfach ausgeschaltet. Infolgedessen erreichte der Fehler leider das Schlachtfeld.

    Außerdem haben wir gesehen, wie mehrere aktive Benutzer die Illusion der Wichtigkeit eines bestimmten Problems erzeugen können. Wie die Studie gezeigt hat, konnte der Fehler 107 nur bei Benutzern auftreten, die Ping im Bereich von ~ 3 ms haben, und zwar zusammen mit der Verarbeitung im Code sowohl auf dem Server als auch auf dem Client. Leider hat das Update die Situation nur verschlechtert: Das Verschwinden des Fehlers wurde bei einem sehr kleinen Prozentsatz der Benutzer festgestellt, aber bei einer viel größeren Anzahl von Spielern.

    Dies waren Benutzer, die Skyforge über 3G / 4G-Modems und / oder schwache PCs spielen. Wir konnten diesen neuen Fehler nicht lokal wiederholen. Zum Glück haben wir Bots. Wir haben Zeitüberschreitungen eingefügt und den Code für deren Verarbeitung korrigiert, sodass sofort nur eine Welle von Fehlern 107 angezeigt wurde. Außerdem war die Behebung des Fehlers bereits eine technische Angelegenheit. Nachdem ein Fix für die Kampfpopularität herausgegeben worden war, wurde Fehler 107 zunichte gemacht. Derzeit ist nur eine Beschwerde offen.

    Tatsächlich gab es mehrere Fehlerursachen 107:
    • zu gute Netzwerkverbindung und schneller Client (Ping <3 ms);
    • Instabiles und / oder schlechtes Ping (3G- und 4G-Modems);
    • langsame Clients oder zu viel Systemlast (Kopieren von Dateien);
    • zufriedene Besitzer von CD / DVD-ROM (beim Start sammelt der Client Statistiken über die Hardware).

    Die Lehre aus Fehler 107 hat erneut gezeigt, wie wichtig es ist, unvollständig verstandenes Verhalten im System zu untersuchen. Und auch, wie wichtig es ist, objektive Statistiken über die Ausbreitung bestimmter Fehler unter den Spielern zu haben. Solche Statistiken sollten übrigens schon zu Beginn von MBT auftauchen.

    Trockene Statistiken über den Fortschritt der Spieler, die an den Tests teilgenommen haben:

    X - Registrierungen insgesamt
    0,96 * X - Z1. Dunkit Island
    0,84 * X - Z2. Ausgrabungen von Isola
    0.58 * X - Z3. Lanber Forest 0.37
    * X - Z4. Naori Island
    0,11 * X - Z5. Milensky Caves

    Absolutwerte können leider nicht veröffentlicht werden. Obwohl sie meiner bescheidenen Meinung nach mehr als würdig sind.

    Rechts auf Abschluss


    Closed Beta-Tests sind einer der wichtigsten Schritte, bevor ein Spiel für ein breites Publikum gestartet wird. Meiner Meinung nach hat unser Team die letzte Etappe des CBT mit Würde gemeistert. Ich möchte mich bei allen Benutzern bedanken, die an der CBT teilgenommen haben und daran teilnehmen. Ihre Berichte tragen zur Verbesserung des Spiels bei. Und ich lade alle zu einem Stresswochenende ein. Ich hoffe, dass wir zusammen den Server aus allen Nähten knacken lassen können :)

    Jetzt auch beliebt: