Filialen und Verkäufe (Legacy Economy)
Wichtig
Economy v1-APIs befinden sich im Wartungsmodus und erhalten keine neuen Features, nur Fehlerbehebungen. Die v1-APIs werden auf absehbare Zeit beibehalten. Weitere Informationen zur nächsten Version von PlayFab Economy finden Sie in der Übersicht über Die Wirtschaft v2 !
In PlayFab basieren Stores auf Katalogen und Währungen. Ihr primärer Katalog sollte alle Elemente in Ihrem Spiel definieren und ihnen Preise in den Währungen zuweisen, die Sie erstellt haben.
Stores sollten Teilmengen der Artikel in Ihrem Katalog definieren und zu bestimmten Preisen zum Kauf zur Verfügung stellen, die sich von den Katalogpreisen unterscheiden können.
Mit einem Store können Sie eine bestimmte Gruppe von Elementen herausstellen und sie für einen bestimmten Zeitraum zu bestimmten Preisen zur Verfügung stellen.
In diesem Tutorial werden die bewährten Methoden zum Definieren von Geschäften anhand von virtueller Währung und echtem Geld veranschaulicht.
Anforderungen
- Vertrautheit mit dem PlayFab Game Manager.
- Sie müssen mindestens eine virtuelle Währung definiert haben. Im letzteren Beispiel in diesem Tutorial wird Folgendes verwendet:
- SP (Silberstücke)
- GP (Gold Pieces).
- Sie müssen über einen primären Katalog verfügen, in dem mindestens ein Element definiert ist.
- Im ersten Beispiel werden mehrere Elemente/Bündel verwendet, ähnlich wie im Tutorial Zum Löschen von Tabellen beschrieben.
- Im zweiten Beispiel in diesem Tutorial werden kleine, mittlere und große Gesundheitstränke verwendet.
Bewährte Methoden
Katalogpreise sollten langfristig festgelegt werden - sie definieren den tatsächlichen Preis eines Artikels.
Stores sollten temporär sein und gemäß Ihren LiveOps-Strategien hinzugefügt und entfernt werden.
Notiz
Erwarten Sie, den Größten Teil Ihres Umsatzes zu erzielen, indem Sie Geschäfte radeln und Artikel in und aus aktiven Geschäften umstellen.
Allgemeine Informationen zu Filialen und Katalogpreisen
- Preise: Die im Katalog definierten Preise sollten als regulärer Preis eines Artikels definiert werden. Stores ermöglichen es Ihnen, einen temporären Verkaufspreis für einen Artikel zu definieren, indem Sie die gängige Einzelhandelstaktik verwenden. Alternativ können Geschäfte einen temporären Preis für einen Artikel bereitstellen, der normalerweise überhaupt nicht zum Verkauf angeboten wird.
- Nullkosten: Wenn die Kosten für einen Artikel in einer bestimmten Währung nicht festgelegt (NULL) oder null sind, kann er nicht mit dieser Währung sowohl für Kataloge als auch für Geschäfte erworben werden. Zero Cost ermöglicht es Ihnen, Artikel für ausschließlich kostenlose Währungen oder ausschließlich Premium-Währungen verfügbar zu machen, indem Sie die Einträge für die anderen Währungen leer lassen oder sie auf Null zurücksetzen.
- Echtes Geld: Die RM-Währung ist in allen Katalogen und Stores verfügbar. RM ist ein eingeschränkter Währungsschlüssel, der nur Echtgeldtransaktionen angibt. Sie sollten RM nur für Artikel mit erheblichem Wert oder Pakete/Container mit Premium-Währung berechnen.
- Preise sind Entweder/Oder: Wenn zwei Preise für einen Artikel definiert sind, kann der Artikel für den einen oder den anderen gekauft werden. Es ist nicht möglich , zwei Währungen für ein einzelnes Element zu verlangen.
Definieren eines Echtgeldspeichers
In Ihrem Game Manager:
- Navigieren Sie zu Ihrem Titel.
- Wählen Sie im Menü auf der linken Seite Die Option Economy aus.
- Wählen Sie auf der Registerkarte Kataloge Ihren primären Katalog und dann Stores aus.
- Wählen Sie die Schaltfläche Neuer Store aus.
Im Beispiel "Drop Tables" haben wir ein Drop-Bundle mit 11 Elementen erstellt. In diesem Beispiel stellen wir drei ähnliche Pakete in einem Echtgeldspeicher zur Verfügung.
Notiz
Jeder Artikel kann für echtes Geld verkauft werden, aber es ist eine bewährte Methode, nur bestimmte wertvolle Gegenstände oder Pakete direkt zur Verfügung zu stellen.
Der folgende Screenshot zeigt einen vollständigen neuen Store, der drei Artikelpakete enthält, die für echtes Geld verfügbar sind.
Die Einzelheiten zum Abschließen von Echtgeldkäufen werden in unserem erweiterten Tutorial behandelt, die Zahlungsabwicklung ohne Empfang.
Bewährte Methoden für Echtgeldspeicher
Wie Sie echtes Geld verwenden, hängt weitgehend vom spezifischen Design Ihres Spiels ab. Der direkte Kauf von Gegenständen im Spiel ist gültig, aber weniger häufig.
In der Regel sollte Ihr Spiel den Kauf einer virtuellen Premium-Währung mit echtem Geld ermöglichen. Sie können mehrere Geschäfte mit unterschiedlichen Verhältnissen zwischen Premiumwährung und echtem Geld durchlaufen.
Tipp
Die wichtigste Erkenntnis ist - stellen Sie sicher, dass Ihre Spieler Ihnen immer Geld geben können.
Definieren eines Virtuellen Währungsspeichers
Sehen wir uns die ausführlichen Details und den Code für den Kauf von Gegenständen im Spiel mit virtueller Währung an.
Die ersten Schritte sind nahezu identisch mit dem vorherigen Beispiel:
- Erstellen Sie drei neue Elemente: Kleine, mittlere und große Gesundheitstränke mit kostenlosemWährungspreis und einem Premium-Währungspreis.
- Erstellen Sie einen neuen Store mit den angebotenen Artikeln.
Erwerb mehrerer Artikel in einem einzelnen Kauf
Um einen einzelnen Artikel für virtuelle Währungen zu kaufen, verwenden Sie die PurchaseItem-Methode , wie in unserem Schnellstart zu Stores beschrieben. In diesem Tutorial wird der Kauf mehrerer Artikel in einem einzelnen Kauf behandelt.
Ihr erster Schritt in diesem Prozess sollte darin sein, den Store abzurufen und dem Benutzer anzuzeigen.
void GetVcStore()
{
var primaryCatalogName = "TestCatalog-001"; // In your game, this should just be a constant matching your primary catalog
var storeId = "Potion Store"; // In your game, this should be a constant for a permanent store, or retrieved from titleData for a time-sensitive store
var request = new GetStoreItemsRequest
{
CatalogVersion = primaryCatalogName,
StoreId = storeId
};
PlayFabClientAPI.GetStoreItems(request, LogSuccess, LogFailure);
}
Der LogSuccess
Rückruf in diesem Beispiel empfängt ein GetStoreItemsResult , das eine vollständige Beschreibung aller Elemente im Store, deren Store-Preise und alle metadaten enthält, die im Speicher selbst enthalten sind.
Bewährte Methoden für die Anzeige von Speichern
Spiele mit Stores sollten ihren primären Katalog mithilfe der GetCatalogItems-Methode aufrufen und zwischenspeichern. Sie können sowohl den Katalogpreis als auch den Store-Preis anzeigen, zusammen mit einem 10% RABATT oder einer ähnlichen Bonusdekoration neben artikeln zum Verkauf.
Tipp
Die Wahrscheinlichkeit, dass Spieler Artikel kaufen, die zum Verkauf angeboten werden, insbesondere, wenn es sich um ein zeitlich begrenztes Angebot handelt.
An diesem Punkt liegt es in der Verantwortung Ihres GUI-Codes, dem Benutzer die Möglichkeit zu geben, auszuwählen, welche Artikel er wie viele kaufen möchte.
- Zwischen Ihrem Spiel und PlayFab sind die verbleibenden Schritte mehrere separate API-Aufrufe, aber Sie können die Sequenz mehrerer Aufrufe für den Spieler unsichtbar machen.
- Sammeln Sie alle Informationen über den Kauf im Voraus, und führen Sie die vollständige Sequenz der Anrufe aus, nachdem alle Spielereingaben gesammelt wurden.
void DefinePurchase()
{
var primaryCatalogName = "TestCatalog-001"; // In your game, this should just be a constant matching your primary catalog.
var storeId = "Potion Store"; // At this point in the process, it's just maintaining the same storeId used above.
var request = new StartPurchaseRequest
{
CatalogVersion = primaryCatalogName,
StoreId = storeId,
Items = new List<ItemPurchaseRequest> {
// The presence of these lines are based on the results from GetStoreItems, and user selection - Yours will be more generic.
new ItemPurchaseRequest { ItemId = "Small Health Potion", Quantity = 20,},
new ItemPurchaseRequest { ItemId = "Medium Health Potion", Quantity = 100,},
new ItemPurchaseRequest { ItemId = "Large Health Potion", Quantity = 2,},
}
};
PlayFabClientAPI.StartPurchase(request, result => { Debug.Log("Purchase started: " + result.OrderId); }, LogFailure);
}
Während des Elementauswahlprozesses müssen Sie dem Benutzer erlauben, auszuwählen, welche Währung er für diese Elemente ausgeben möchte. In diesem Beispiel weisen alle Elemente Kosten in SP und GP auf, was bedeutet, dass der Benutzer die Wahl hat, welche Währung er ausgeben möchte.
Notiz
Das Ergebnis der StartPurchase
API im obigen Codebeispiel enthält eine Liste von PaymentOptions
. Jede Zahlungsoption enthält , Currency
Price
und ProviderName
, die für den Kauf verwendet werden können.
Einschränkungen
In einem einzelnen Kauf ist nur eine virtuelle Währung zulässig. Alle ausgewählten Elemente müssen mit einer einzigen Währung käuflich erworben werden können.
Die Währung muss im Aufruf angegeben werden, was wichtig ist, wenn mehrere mögliche Währungen vorhanden sind. Die Sequenz schlägt fehl, wenn die Anforderung Elemente ohne entsprechende Kosten in der ausgewählten Währung enthält.
Muss ProviderName
auch im Aufruf angegeben werden. Bei Echtgeldkäufen wird der Name des Anbieters verwendet, um den Kauf zu finanzieren, z. B. Facebook, PayPal oder Steam. Bei Vc-Käufen ist dies eine Zeichenfolge, die auf Ihrer Titel-ID basiert. Die ProviderName
kann aus dem PaymentOptions
Feld des StartPurchaseResult abgerufen werden, wie im vorherigen Hinweis beschrieben.
Tipp
Bei Vc-Käufen ist die ProviderName
für Ihren Titel eine Zeichenfolge, die aus dem Wort "Title" erstellt wurde, die mit dem Dezimaläquivalent Ihres Hexadezimals TitleId
verkettet ist. Beispiel: "Title123456".
Bewährte Methoden zum Anzeigen von Store-Elementen
Vermeiden Sie Verwirrung für Ihren Spieler, indem Sie sicherstellen, dass alle Elemente in einem Store konsistente Optionen haben.
Echtgeldartikel sollten sich in einem separaten Geschäft von Premium-VC-Artikeln befinden und wieder getrennt von kostenlosen VC-Artikeln. Wenn ein einzelner Store mehrere Währungen zulässt, sollten alle Elemente in diesem Store konsistent denselben Satz mehrerer Währungen verwenden. Erstellen Sie so viele Filialen, wie Sie benötigen, um eine reibungslose Kundenerfahrung zu bieten.
void DefinePaymentCurrency(string orderId, string currencyKey, string providerName)
{
var request =new PayForPurchaseRequest {
OrderId = orderId, // orderId comes from StartPurchase above.
Currency = currencyKey, // User defines which currency they wish to use to pay for this purchase (all items must have a defined/non-zero cost in this currency).
ProviderName = providerName // providerName comes from the PaymentOptions in the result from StartPurchase above.
};
PlayFabClientAPI.PayForPurchase(request, LogSuccess, LogFailure);
}
Sobald der Kauf vollständig definiert ist, können Sie den Prozess wie unten gezeigt abschließen.
// Unity/C#
void FinishPurchase(string orderId)
{
var request = new ConfirmPurchaseRequest { OrderId = orderId };
PlayFabClientAPI.ConfirmPurchase(request, LogSuccess, LogFailure);
}
Bewährte Methoden für die Behandlung von API-Fehlerergebnissen
Jeder einzelne API-Aufruf kann aus vielen Gründen fehlschlagen. Drahtlose Geräte wie Telefone können häufig zeitweilige Verbindungen aufweisen, und jeder Internetanruf kann aufgrund zufälliger Latenz fehlschlagen.
Jeder Aufruf sollte auf mehrere Fehlerbedingungen prüfen. Sie sollten abbrechen, wenn die Antwort anzeigt, dass die Anforderung ungültig ist (z. B. nicht in der Lage, mehrere Artikel mit einer einzigen Währung zu kaufen). Möglicherweise gibt es Probleme mit ihrem Store-Design.
Wenn die Antwort auf einen Konnektivitätsfehler hinweist, können Sie es mit einer exponentiellen Backoffverzögerung erneut versuchen.
Abschluss
Stores sind ein hervorragender Mechanismus, um Ihre Spieler zum Kauf von Gegenständen zu ermutigen.
Stores arbeiten mit jeder Art von virtueller Währung. Stores können auch mit echtem Geld über einen alternativen Satz von API-Methoden arbeiten.
- Sie können einen Einzelartikelkauf mit VC über PurchaseItem einrichten.
- Sie können einen Kauf mit mehreren Artikeln mit echtem Geld oder Vc über die folgende Sequenz einrichten:
Weitere Informationen zu Echtgeldkäufen finden Sie unter Zahlungsabwicklung ohne Beleg.
Informationen zur erweiterten Store-Nutzung finden Sie im Tutorial Zu benutzerdefinierten Stores für Spielersegmente .