Spielsysteme

In-Game-Shop: Auslagen, Angebote und Preise

Wie der fertige Shop von iDos Games funktioniert: Auslagen mit wechselnden Angeboten, Preise in Spielwährung oder echtem Geld, Gratisgeschenke und Kauflimits, und wie du ihn ohne Code im Dashboard einrichtest.

Der Shop ist ein fertiges System: der Shop-Bildschirm in deinem Spiel plus die Kauflogik auf dem Server. Auslagen und Angebote richtest du im Dashboard ein, und bei jedem Kauf prüft der Server selbst Preis, Limits und Rotation. Ein Kauf lässt sich aus dem Spiel nicht fälschen, und der Shop braucht keinen eigenen Server.

Was der Spieler sieht

  • Auslagen als Tabs. Der erste Bereich einer Auslage ist ein Karussell, die übrigen sind Kartenraster.
  • Ein tägliches Gratisgeschenk, das leuchtet, bis es abgeholt wird.
  • Timer auf den Karten: „neu in“, „öffnet in“, „ausverkauft“.
  • Ein Fenster zur Kaufbestätigung (auf Handys ein Bottom Sheet).
  • Die Animation „Erhalten“: Belohnungen fliegen zu den Guthabenzählern.
  • Ein Abzeichen am Shop-Tab, wenn ein Gratisangebot wartet.
Shop
12 450
320
Täglich1
Währung
Packs
Tagesangebote Neu in 15:40:12
Tagesgeschenk
GRATIS
Heldenschwert
1 200
Ausrüstungstruhe
90
Ausverkauft
500 Münzen
$0.99
Bester Wert1 200 Münzen
$1.99
x2 beim 1. Kauf
Shop-Auslagen sind Tabs; das Abzeichen zählt wartende Gratisangebote.
Rotationstimer: Läuft er ab, tauscht der Server die Angebote des Slots.
Ein tägliches Gratisgeschenk leuchtet, bis es abgeholt wird.
Ausverkauft: Das Limit für dieses Zeitfenster ist aufgebraucht.
Banner und der Bonus beim ersten Kauf kommen aus den Angebotseinstellungen.
Beispiel. Der Shop-Bildschirm, wie ihn Spieler sehen, im Standard-Look. Der Look wird in src/ui.config.ts geändert.

Wie der Shop aufgebaut ist

Der Shop ist ein Baum: Auslage → Bereiche → Slots → Angebot.

  • Angebot: was verkauft wird. Preis, Belohnungen, Limits, Banner („bester Wert“, „x2“). Angebote liegen in einem Katalog.
  • Slot: ein Platz im Regal der Auslage. Ein Angebot lässt sich nur über einen Slot kaufen: Ein Angebot in keinem Slot wird gar nicht verkauft.
  • Rotation: Ein Slot kann ein Angebot aus einem Pool zeigen und es nach Zeitplan wechseln, wie ein Tages-Shop. Die Rotation berechnet der Server, sodass ein Spieler auf jedem Gerät denselben Shop sieht.
Shop-Auslage„Tages-Shop“
Bereich„Tagesangebote“
Slots
Slot 1: immer das Tagesgeschenk
Slot 2: eins von 6 Angeboten, alle 24 Std. neu
Slot 3: leer, bis das Zeitfenster öffnet
AngebotskatalogPreis, Belohnungen, Limits
Ein Angebot ohne Slot wird nicht verkauft
Beispiel. So wird eine Shop-Auslage im Dashboard aufgebaut: Ein Angebot wird nur über einen Slot verkauft.

Preise

Womit der Spieler zahltSo funktioniert es
Spielwährung, GegenständeWird vom Guthaben des Spielers abgezogen
Echtes GeldEin Kauf im App-Store; den Beleg prüft der Server
Eine Werbung ansehenDer Spieler setzt einen verdienten Werbeaufruf ein (Builds mit Werbung)
NichtsEin Gratisangebot; ein Limit ist Pflicht, sonst verkauft der Server es nicht

Du kannst einen durchgestrichenen „alten“ Preis zeigen, den Rabatt in Prozent berechnet der Server. Ein Angebot kann mehrere Preisoptionen haben, zum Beispiel Münzen oder Edelsteine.

Kauflimits

  • Insgesamt: zum Beispiel ein Starterpaket einmal.
  • Pro Tag: wird um Mitternacht UTC zurückgesetzt.
  • Abklingzeit: der nächste Kauf erst nach einer festgelegten Zeit.
  • Pro Rotationsfenster: das Limit des Slots, solange dieses Angebot im Regal steht.

Die Abzeichen „erster Kauf“ und „ausverkauft“ sowie die Timer berechnet der Server für jeden Spieler.

Schritt 01Den Shop zum Projekt hinzufügen

Die Vorlage Idle-RPG hat schon einen Shop mit einer Beispielauslage. In jedes andere Projekt fügt ihn der KI-Coder ein: Schreib „Füge einen Shop hinzu“ in den Chat. Er installiert das fertige System, statt einen Shop neu zu schreiben. Der Shop-Tab erscheint für Spieler, sobald es etwas zu verkaufen gibt.

Schritt 02Angebote und eine Auslage einrichten

Öffne das Dashboard, wähle dein Projekt und geh zu Live-Betrieb → v2 → Store.

  • Lege im Tab Angebote ein Angebot an: Name, Preis, was der Spieler bekommt, und ein Limit.
  • Lege im Tab Auslagen eine Auslage an, füge ihr einen Bereich und Slots hinzu und stelle Angebote in die Slots.
  • Vorlagen sind gemeinsame Einstellungen, die du auf viele Angebote gleichzeitig anwendest.

Das Dashboard warnt vor Angeboten ohne Slot und Gratisangeboten ohne Limit. Der Knopf KI auf der Seite öffnet einen Assistenten: Beschreibe, was du verkaufen willst („ein Paket mit 500 Münzen für 0,99 $ und eine tägliche Gratistruhe“), er schlägt Änderungen vor, du prüfst sie und drückst Speichern.

Schritt 03Testen und veröffentlichen

Prüfe den Shop in der Testversion deiner App. Einstellungen gehen mit einer eigenen Aktion an die Live-App, sodass ein Code-Release sie nie überschreibt. Mehr unter Veröffentlichen und Links.

Für Entwickler

Der Shop arbeitet über client.store in @idosgames/core. Zeichne den Bildschirm aus getStorefront(): die bereits für diesen Spieler berechnete Auslage (Rotation, Limits, Timer). getDefinitions() ist nur die Konfiguration, für alle gleich.

TypeScript
const res = await client.store.getStorefront()
if (!res.ok) return showError(res.error)

for (const store of res.data.Stores ?? [])
  for (const section of store.Sections ?? [])
    for (const slot of section.Slots ?? []) {
      // Ein leerer Slot kommt mit Offer === null: Zeichne einen leeren Rahmen, damit das Regal nicht springt.
      if (!slot.Offer) continue
      drawCard(slot.Offer, slot.RefreshesAtUtc)
    }

const buy = await client.store.purchase(offer.OfferID, 1, {
  selectedOptionID: option.OptionID,
  slot: { storeID: store.StoreID, sectionID: section.SectionID, slotID: slot.SlotID },
})
  • Gibt ein Kauf OFFER_NOT_IN_ROTATION zurück, hat sich die Auslage geändert: Lade sie neu, ohne einen Fehler zu zeigen.
  • Deaktiviere den Knopf „Kaufen“, solange die Anfrage läuft: Jeder Aufruf von purchase ist ein eigener Kauf.
  • Zähle Timer von ServerTimeUtc in der Antwort herunter, nicht von der Geräteuhr.
  • null in einem Restlimit heißt „kein Limit“, 0 heißt „ausverkauft“.

Jedes Feld ist im Skill store-system beschrieben, den der MCP-Server des SDK bereitstellt.

Häufige Fragen

Warum ist ein Angebot im Katalog, lässt sich aber nicht kaufen?

Ein Angebot wird nur über einen Slot einer Auslage gekauft. Steht es in keinem Slot, kann man es gar nicht kaufen. Das Dashboard führt solche Angebote unter einer eigenen Warnung „In keinem Regal“.

Kann ich ein tägliches Gratisgeschenk anlegen?

Ja. Ein Angebot ohne Preis ist ein normales Gratisangebot, braucht aber ein Limit, zum Beispiel einmal pro Tag. Ein Gratisangebot ohne Limit verkauft der Server nicht.

Muss ich Käufe auf meinem eigenen Server prüfen?

Nein. Der Server von iDos Games prüft bei jedem Kauf Preis, Limits und Rotation. Das Spiel zeigt nur die Auslage und bittet um den Kauf.

Gelten Premium-Rabatte?

Ja. Rabatte und Boni der Premium-Stufe wendet der Server selbst an. Was tatsächlich berechnet und vergeben wurde, liest das Spiel aus der Antwort auf den Kauf.

Siehe auch

Erstelle dein eigenes Spiel

Beschreibe die Idee in einem Satz: Der KI-Coder baut das Spiel, und es geht unter eigenem Link online.