Massenaktionen für ein gesamtes Spielersegment

Dieses Tutorial führt Sie durch die Schritte, die zum Erstellen einer Aufgabe erforderlich sind, um eine oder mehrere Aktionen für jeden Spieler in einem Segment auszuführen.

Aufgaben sind ein wichtiger Bestandteil von Live-Vorgängen für jedes Spiel. Sie bieten Ihnen eine reihe leistungsstarke Tools für die Interaktion mit Ihren Spielern.

Beispiele hierfür sind:

  • Geben Sie allen Spielern, die sich während der letzten 2 Wochen angemeldet haben, ein besonderes Neujahrsgeschenk.
  • Belohnen Sie Spieler, die in der letzten Woche Geld ausgegeben haben (basierend auf Ausgabenebenen), wobei je mehr Geld sie ausgeben, desto wertvoller das Geschenk.
  • Korrektur des beschädigten Spielerzustands für alle Spieler, die von einem aktuellen Spielfehler betroffen sind.

In diesem Tutorial, basierend auf unserer Einhorn-Beispiel-Beispiel-App, geben wir allen Spielern mit mehr als 2.725 XP ein besonderes Geschenk.

Voraussetzungen

Sie müssen die Unicorn Battle-Beispiel-App installieren, um dieses Tutorial ausführen zu können. Weitere Informationen hierzu finden Sie in unserem Blog, oder wechseln Sie direkt zum GitHub-Repository , und folgen Sie den Anweisungen dort.

Einhorn-Kampf – Startbildschirm

Du wirst mehrere Kämpfe spielen möchten, um deinen Charakter auf mindestens Level 2 zu leveln, die du bei 2.725 XP-Punkten erreichst.

Einhorn-Kampf – Level 2

Schritt 1: Erstellen des Segments

Der erste Schritt besteht darin, das Segment zu erstellen, das die Gruppe der Spieler definiert, die von dieser Aktion betroffen sein werden. In diesem Fall müssen wir das High XP-Segment erstellen, das als alle Spieler definiert ist, die mehr als 2.725 XP haben:

  • Wählen Sie im Menü auf der linken Seite PlayStream aus.
  • Wählen Sie die Registerkarte Segmente aus.
  • Wählen Sie dann die Schaltfläche Neues Segment aus.
  • Legen Sie den Segmentnamen fest: High XP Player.
  • Definieren Sie ihn als Player, wobei der StatistikwertTotal_XP Gained größer als 2725 ist.

HINWEIS: Das aktuelle geplante Aufgabensystem kann 10 bis 15 Vorgänge pro Sekunde und Segment verarbeiten. Planen Sie beim Entwerfen Ihrer Segmente voraus, wie groß sie sein werden und wie lange die Taskausführung ausgeführt wird. Es gibt keine Beschränkung für die Dauer der Ausführung eines Tasks, aber wenn die Aufgabe in einem bestimmten Zeitraum ausgeführt werden muss, muss das Segment richtig dimensioniert werden.

Game Manager – PlayStream – Segmente – High XP-Spieler

Schritt 2: Erstellen einer Aufgabe für dieses Segment

  • Wählen Sie die Registerkarte Segmente aus.
  • Wählen Sie dann TASK AUSFÜHREN ... aus.

Game Manager – PlayStream – Segmente – Task ausführen

Dadurch gelangen Sie zur Ansicht Aufgabe erstellen auf der Registerkarte Server-Aufgaben> und füllen verschiedene Felder basierend auf dem ausgewählten Segment vorab auf.

Game Manager – Server – Aufgabe – Aufgabe erstellen

Schritt 3: Hinzufügen von Aktionen zur Aufgabe

Als Nächstes können Sie die Einrichtung der Aufgabe abschließen.

  • Ändern Sie den Namen in Reward High XP Players
  • Fügen Sie diese Beschreibung hinzu: Verschenkt Spieler mit Stufe 2 oder höher.
  • Wählen Sie AKTION HINZUFÜGEN aus.
    • Geben Sie im angegebenen Feld virtuelle Währung gewähren ein.
    • Virtueller Währungscode : GM (Kurzform für Gems).
    • Betrag: 20
  • Lassen Sie die Zeitplanung vorerst auf Manuell festgelegt.
  • Wählen Sie die Schaltfläche SPEICHERN UND AUSFÜHREN aus, um die Aufgabe auszuführen.

Game Manager – Server – Aufgabe – Aktion hinzufügen – Speichern und Ausführen

Schritt 4: Überwachen ihrer Aufgabe

In der Ansicht Aufgaben wird Ihre ausgeführte Aufgabe angezeigt. Anfänglich lautet die Aufgabe status InProgress, ändert sich jedoch schnell in Erfolgreich, da das Segment klein ist.

Game Manager – Server – Aufgaben – Aufgabe erfolgreich

Sehen wir uns nun die Details zur Aufgabenausführung an. Wählen Sie die abgeschlossene Aufgabe in der Liste der zuvor ausgeführten Aufgaben aus. Es werden wichtige Informationen angezeigt, z. B.:

  • Wie viele Spieler verarbeitet wurden.
  • Wann die Aufgabe gestartet wurde.
  • Wie lange die Ausführung gedauert hat.
  • Die Parameter, die beim Start vorhanden waren.
  • Wer hat es ausgeführt.
  • Wenn es manuell geplant wurde usw.

Wenn die Aufgabe noch ausgeführt wird, können Sie in der Detailansicht der Vorgangsinstanz den Fortschritt überprüfen und die geschätzte verbleibende Zeit anzeigen.

Game Manager – Server – Aufgaben – Taskinstanzdetails

So überprüfen Sie, ob die Aufgabe erfolgreich ausgeführt wurde:

  • Navigieren Sie zur Registerkarte Spieler .
  • Wählen Sie Ihren Player aus.
  • Wählen Sie dann die Registerkarte Ereignisverlauf aus.
  • Das letzte Ereignis in der Liste sollte eine player_virtual_currency_balance_changed sein, die zeigen sollte, dass die Edelsteine Ihres Spielers um 20 ansteigen.

Notiz

Sie können dieses Ereignis erweitern, um die Details anzuzeigen.

Game Manager – Ereignisverlauf – Ereignisdetail

Nächste Schritte

Dieses Tutorial hat Ihnen die Schritte zum Ausführen einer Aktion für jeden Spieler in einem Segment vorgestellt, aber es gibt noch viel mehr, die Sie mit Aufgaben erledigen können.

Hier sind ein paar Ideen für andere Dinge, die Sie ausprobieren können...

Planen Ihrer Aufgaben

Sie müssen Tasks nicht manuell ausführen. Sie können eine Aufgabe so planen, dass er automatisch auf wiederkehrender Basis ausgeführt wird. Sie können beispielsweise ein Segment aller Spieler erstellen, die das Spiel in den letzten 24 Stunden gespielt haben, und dann jeden Tag eine geplante Aufgabe ausführen, um diesen Spielern eine XP-Verstärkung zu geben.

Game Manager – PlayStream – Segmente – Spieler in 24 Stunden

Game Manager – Server – Aufgaben – Geplante Aufgabe

Ausführen von CloudScript für jeden Player

Die leistungsfähigste Verwendung von Massenaktionen ist die Ausführung einer beliebigen CloudScript-Funktion für jeden Spieler. Dieser CloudScript-Code kann alles tun, was die PlayFab-Server-API tun kann: Elemente gewähren, Währungen gewähren, Spielerdaten überprüfen und ändern usw.

Angenommen, Sie verfügen über eine Ereignis-Bestenliste, die jede Woche zurückgesetzt wird, und Sie möchten alle Spieler durchlaufen und eine Belohnung basierend auf dem Wert des letzten Ereignisses vor dem Zurücksetzen vergeben. Im folgenden Beispiel wird Unicorn Battle verwendet.

  1. Erstellen Sie einen neuen Event_QuestsCompleted, der wöchentlich zurücksetzt und die Aggregationsmethode Last verwendet.

    Spieler – Bestenlisten – Bearbeiten der Bestenliste

  2. Erstellen Sie eine neue PlayStream-Aktion, die diesen Event_QuestsCompleted Stat bei jeder Total_QuestsCompleted Änderung inkrementiert.

    PlayStream – Ereignisaktionen – Ereignisaktion bearbeiten

  3. Schreiben Sie eine CloudScript-Funktion, die von einer Massenaktionsaufgabe aufgerufen wird, die Spieler durchläuft und Belohnungen basierend auf dem letzten Wert ausgibt.

// this function will be called as a bulk action by a scheduled task for players in a segment
handlers.GiveTieredReward = function (args, context) {
    var profile = context.playerProfile;

    var statVersion = 0;        // set to whatever version you need to use

    var getStatRequest = {};
    getStatRequest.PlayFabId = profile.PlayerId;
    getStatRequest.StatisticNameVersions = [{ "StatisticName": "Event_QuestsCompleted", "Version": statVersion }];

    try {
        getStatRequest.PlayerResult = server.GetPlayerStatistics(getStatRequest);
    } catch (e) {
    };

    if (getStatRequest.PlayerResult && getStatRequest.PlayerResult.Statistics.length > 0) {
        getStatRequest.lastScore = getStatRequest.PlayerResult.Statistics[0].Value
    }

    if (getStatRequest.lastScore && getStatRequest.lastScore > 2) {
        // give gift to all players with more than 2 quests completed in last event
        // in a real event we would want to use a lookup table of gifts
        // but here we are just hard-coding it
        var giftRequest = {};
        giftRequest.PlayFabId = profile.PlayerId;
        giftRequest.ItemIds = ["CrystalKey"];
        giftRequest.grantResult = server.GrantItemsToUser(giftRequest);
        return giftRequest;
    } else {
        return getStatRequest;
    }
}
  1. Legen Sie die neue CloudScript-Version auf Live fest, und erstellen Sie eine neue Aufgabe, die die GiveTieredReward Funktion für alle Spieler aufruft. Vergessen Sie nicht, die Aufgabe zu speichern und auszuführen .

    Server – Aufgaben – Neuer geplanter Task

  2. Sie sollten feststellen, dass Ereignisse aus dieser Aufgabe im PlayStream-Ereignisdebugger angezeigt werden.

    PlayStream – Dashboard – Ereignisdebugger

  3. Sie können ein beliebiges vom Spieler ausgelöstes CloudScript-Ereignis auswählen (indem Sie den Zeitstempel auswählen) und das detaillierte Ergebnis der CloudScript-Ausführung für jeden Spieler anzeigen. Dazu gehören nützliche Diagnoseinformationen wie die Momentaufnahme des Spielerprofils zum Zeitpunkt der CloudScript-Ausführung.

    PlayStream – Dashboard – JSON für unformatierte Ereignisse