Mana-Kurve für Kartenspiel-Decks berechnen
Ein Deck kann starke Karten enthalten und dennoch ins Stocken geraten, wenn deren Kosten nicht zu den in jeder Runde verfügbaren Ressourcen passen.
Im Browser ausführen – kostenlos
Dieser Rechner wandelt eine Deckliste in eine übersichtliche Verteilung von null bis sieben oder mehr Mana um und gewichtet jede Zeile nach der Anzahl der Exemplare. Zusätzlich vergleicht er das Ergebnis mit einer allgemeinen Referenzform und hebt große Unterschiede hervor. So erhalten Sie eine schnelle Diagnose, ohne dass eine einzige Kurve für jedes Spiel, Format, jede Strategie oder jedes Ressourcensystem als richtig vorausgesetzt wird.
Geben Sie Karten und Stückzahlen ein
Fügen Sie für jede unterschiedliche Karte eine Zeile hinzu und geben Sie Name, Manakosten und Anzahl der Exemplare an. Standardmäßig wird ein Exemplar angenommen; eine ausdrückliche Mengenangabe erleichtert jedoch die Prüfung einer vollständigen Liste. Die Manakosten müssen eine ganze Zahl ab null sein. Verwenden Sie grundsätzlich die aufgedruckten Kosten, außer Ihr Spiel oder Ihre Deckbaumethode bietet einen nachvollziehbaren Grund für effektive Kosten. Karten mit Kosten von sieben oder mehr werden in einer gemeinsamen oberen Gruppe zusammengefasst, weil sie meist dieselbe Deckbaufrage aufwerfen: Kann das Deck genügend teure Züge zuverlässig finanzieren? Kostenlose Karten bleiben in einer eigenen Gruppe sichtbar. Falls Länder oder Ressourcenkarten in Ihrem Spiel als Einträge mit Kosten null gelten, nehmen Sie diese nur auf, wenn sie die dargestellte Verteilung beeinflussen sollen. Lassen Sie sie andernfalls weg, um ausschließlich die Kurve von Zaubern oder Aktionen zu betrachten. Der Rechner multipliziert jeden Kostenwert mit der Stückzahl; vier Exemplare zählen daher als vier Karten und nicht als eine Zeile. Eine leere Deckliste wird abgelehnt, da Prozentwerte und Durchschnittskosten ohne sinnvollen Nenner nicht berechnet werden können. Namen dienen der Kennzeichnung, beeinflussen aber nicht die Rechnung. Wiederholte Namen werden als getrennt eingereichte Zeilen gezählt und weder stillschweigend zusammengeführt noch entfernt.
Verstehen Sie Verteilung und Vergleich
Die Ausgabe nennt die Gesamtzahl der Karten, die nach Exemplaren gewichteten durchschnittlichen Manakosten und acht Kurvengruppen: null, eins, zwei, drei, vier, fünf, sechs sowie sieben oder mehr. Jede Gruppe enthält ihre Kartenanzahl und ihren Anteil an der eingereichten Liste. Außerdem sehen Sie einen allgemeinen Referenzprozentsatz und die vorzeichenbehaftete Differenz in Prozentpunkten. Ein positiver Wert bedeutet, dass Ihr Deck bei diesen Kosten mehr Karten als die Referenz enthält; ein negativer Wert bedeutet weniger. Eine Gruppe gilt als stark abweichend, sobald der absolute Unterschied zehn Prozentpunkte erreicht. Die Gesamtwarnung wird aktiviert, wenn mindestens eine Gruppe diesen Grenzwert überschreitet, und flagged_costs zeigt die betroffenen Kosten genau an. Der Vergleich ist bewusst transparent: Die Referenz ergibt zusammen hundert Prozent, steigt bis zu den Kosten zwei und drei an und fällt danach zu den teuren Karten hin ab. Sie ist eine diagnostische Orientierung und keine Vorschrift. Ein günstiges aggressives Deck, ein Kontrolldeck mit Beschleunigung oder ein Spiel mit ungewöhnlichen Ressourcenmechaniken kann aus guten strategischen Gründen abweichen. Nutzen Sie die Hinweise als Anlass für Fragen zur Spielbarkeit, nicht als Ersatz für Tests oder Formatkenntnis.
Leiten Sie sinnvolle Änderungen aus Warnungen ab
Beginnen Sie mit der günstigsten markierten Gruppe, denn die ersten Runden entscheiden häufig darüber, ob der Rest einer Hand überhaupt spielbar wird. Liegen die Anteile der Kosten eins und zwei deutlich unter der Referenz, prüfen Sie Starthände und zählen Sie, wie oft ein legaler früher Zug möglich ist. Ist die Gruppe sieben oder mehr stark besetzt, untersuchen Sie, ob diese Karten alternative Kosten, Ressourcenbeschleunigung oder genügend spielentscheidende Wirkung besitzen, um mehrere davon gleichzeitig auf der Hand zu rechtfertigen. Entfernen Sie nicht automatisch jede Karte aus einer überfüllten Gruppe. Bestimmen Sie zuerst die Aufgabe jeder Karte, bewahren Sie notwendige Funktionen und verschieben Sie ersetzbare Effekte zu günstigeren Kosten. Ebenso ist eine leere Gruppe nicht zwingend ein Mangel, wenn die Regeln oder der Plan des Decks diese Runde bewusst auslassen. Vergleichen Sie Überarbeitungen, indem Sie dieselbe Liste nach jeder Änderung erneut auswerten, und bestätigen Sie die geplante Kurve mit Testhänden und echten Partien. Der Durchschnitt ist eine nützliche Zusammenfassung, doch zwei Decks können denselben Mittelwert und sehr unterschiedliche Verteilungen haben. Betrachten Sie deshalb vor allem die einzelnen Gruppen. Da das Verfahren deterministisch ist, liefern identische Listen stets identische Ergebnisse und eignen sich für Deckprüfungen, automatische Kontrollen und Vorher-nachher-Protokolle.
Anwendungsfälle
Einen frühen Entwurf prüfen
Erkennen Sie vor ausführlichen Tests, ob ein erster Entwurf genügend günstige Spielmöglichkeiten enthält.
Deckversionen vergleichen
Halten Sie die Kurve vor und nach Ersetzungen fest, um die gewünschte Verschiebung der Kostengruppe zu bestätigen.
Importierte Listen kontrollieren
Überführen Sie Kartenzeilen und Mengen in eine einheitliche Übersicht für Deckbau- oder Turnierabläufe.
Häufige Fragen
Was kostet ein API-Aufruf?
Jede API-Anfrage kostet $0.002. Den Rechner im Browser können Sie kostenlos verwenden.
Welche Kurve gilt als empfohlen?
Die Referenzanteile betragen 3, 12, 20, 24, 18, 11, 7 und 5 Prozent für Kosten von null bis sieben oder mehr. Dies ist eine breite Orientierung, keine spielspezifische Regel.
Wann wird eine Kostengruppe markiert?
Eine Gruppe wird markiert, wenn ihr Anteil in einer Richtung mindestens 10 Prozentpunkte von der Referenz abweicht.
Wie werden Karten mit Kosten über sieben behandelt?
Alle Karten mit Kosten ab sieben kommen in die Gruppe 7+; ihre genauen Kosten fließen weiterhin in den Durchschnitt ein.
Sollten Länder oder Ressourcenkarten enthalten sein?
Nehmen Sie diese nur dann mit Kosten null auf, wenn sie in der Verteilung erscheinen sollen. Für eine reine Zauber- oder Aktionskurve lassen Sie sie weg.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/game/card-game-deck-build-ratio \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"decklist":[{"name":"Quick Scout","mana_cost":1,"count":4},{"name":"River Adept","mana_cost":2,"count":8},{"name":"Tower Guardian","mana_cost":3,"count":10},{"name":"Sky Captain","mana_cost":4,"count":7},{"name":"Ancient Dragon","mana_cost":6,"count":2}]}'const res = await fetch("https://api.kit.forhosting.com/game/card-game-deck-build-ratio", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"decklist": [
{
"name": "Quick Scout",
"mana_cost": 1,
"count": 4
},
{
"name": "River Adept",
"mana_cost": 2,
"count": 8
},
{
"name": "Tower Guardian",
"mana_cost": 3,
"count": 10
},
{
"name": "Sky Captain",
"mana_cost": 4,
"count": 7
},
{
"name": "Ancient Dragon",
"mana_cost": 6,
"count": 2
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/game/card-game-deck-build-ratio",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"decklist": [
{
"name": "Quick Scout",
"mana_cost": 1,
"count": 4
},
{
"name": "River Adept",
"mana_cost": 2,
"count": 8
},
{
"name": "Tower Guardian",
"mana_cost": 3,
"count": 10
},
{
"name": "Sky Captain",
"mana_cost": 4,
"count": 7
},
{
"name": "Ancient Dragon",
"mana_cost": 6,
"count": 2
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/game/card-game-deck-build-ratio", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"decklist":[{"name":"Quick Scout","mana_cost":1,"count":4},{"name":"River Adept","mana_cost":2,"count":8},{"name":"Tower Guardian","mana_cost":3,"count":10},{"name":"Sky Captain","mana_cost":4,"count":7},{"name":"Ancient Dragon","mana_cost":6,"count":2}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"decklist":[{"name":"Quick Scout","mana_cost":1,"count":4},{"name":"River Adept","mana_cost":2,"count":8},{"name":"Tower Guardian","mana_cost":3,"count":10},{"name":"Sky Captain","mana_cost":4,"count":7},{"name":"Ancient Dragon","mana_cost":6,"count":2}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/game/card-game-deck-build-ratio", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"decklist": [
{
"name": "Quick Scout",
"mana_cost": 1,
"count": 4
},
{
"name": "River Adept",
"mana_cost": 2,
"count": 8
},
{
"name": "Tower Guardian",
"mana_cost": 3,
"count": 10
},
{
"name": "Sky Captain",
"mana_cost": 4,
"count": 7
},
{
"name": "Ancient Dragon",
"mana_cost": 6,
"count": 2
}
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.card_game_deck_build_ratio",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |