Calculateur de courbe de mana pour deck de cartes
Un deck peut réunir des cartes puissantes et manquer de régularité si leurs coûts ne correspondent pas aux ressources disponibles à chaque tour.
Lancer gratuitement
Ce calculateur transforme une liste en distribution lisible de zéro à sept manas ou plus, en pondérant chaque ligne par le nombre d'exemplaires. Il compare aussi le résultat à un profil général et signale les écarts importants. Vous obtenez ainsi un diagnostic rapide, sans supposer qu'une courbe unique convient à tous les jeux, formats, plans stratégiques ou systèmes de ressources.
Saisissez les cartes et leurs quantités
Ajoutez une ligne pour chaque carte distincte, puis indiquez son nom, son coût en mana et son nombre d'exemplaires. La quantité vaut un par défaut, mais la renseigner explicitement facilite la vérification d'une liste complète. Le coût doit être un nombre entier supérieur ou égal à zéro. Utilisez le coût imprimé, sauf si votre jeu ou votre méthode de construction justifie de manière cohérente un coût effectif. Les cartes coûtant sept ou plus sont regroupées dans une tranche haute, car elles posent généralement la même question : le deck peut-il assumer suffisamment d'actions coûteuses ? Les cartes gratuites gardent leur propre tranche. Si votre jeu considère les terrains ou les ressources comme des entrées à coût zéro, incluez-les uniquement lorsque vous souhaitez qu'ils influencent la distribution ; sinon, omettez-les afin d'analyser seulement les sorts ou les actions. Le calculateur multiplie chaque coût par le nombre d'exemplaires : quatre exemplaires comptent donc comme quatre cartes et non comme une ligne. Une liste vide est refusée, car aucun pourcentage ni coût moyen pertinent ne pourrait être calculé. Les noms servent à repérer les lignes sans modifier les calculs, et les noms répétés restent des lignes soumises séparément, sans fusion ni suppression silencieuse.
Comprenez la distribution et la comparaison
Le résultat fournit le nombre total de cartes, le coût moyen pondéré par les exemplaires et huit tranches : zéro, un, deux, trois, quatre, cinq, six, puis sept ou plus. Chaque tranche présente son nombre de cartes et sa part du deck transmis. Elle indique également un pourcentage général de référence et l'écart signé en points de pourcentage. Un écart positif signifie que le deck contient davantage de cartes de ce coût que la référence ; un écart négatif en signale moins. Une tranche est fortement divergente lorsque la valeur absolue de l'écart atteint dix points. L'alerte globale s'active dès qu'une tranche franchit ce seuil, tandis que flagged_costs précise les coûts concernés. La comparaison reste volontairement explicite : la référence totalise cent pour cent, monte vers les coûts deux et trois, puis diminue progressivement vers les cartes chères. C'est un repère diagnostique, pas une règle. Un deck agressif, un contrôle avec accélération ou un jeu aux ressources atypiques peut s'en écarter pour de bonnes raisons stratégiques. Servez-vous des alertes pour interroger la jouabilité, sans remplacer les tests ni votre connaissance du format.
Transformez les alertes en modifications utiles
Commencez par la tranche signalée la moins chère, car les premiers tours déterminent souvent si le reste d'une main deviendra jouable. Si les parts des coûts un et deux sont très inférieures à la référence, examinez vos mains de départ et mesurez la fréquence d'une action légale en début de partie. Si la tranche sept ou plus est élevée, vérifiez que ces cartes disposent de coûts alternatifs, d'une accélération de ressources ou d'un impact décisif suffisant pour justifier d'en piocher plusieurs ensemble. Ne retirez pas automatiquement toutes les cartes d'une tranche trop remplie. Identifiez d'abord le rôle de chacune, puis conservez les fonctions indispensables tout en déplaçant les effets remplaçables vers des coûts plus adaptés. De même, une tranche vide n'est pas forcément un défaut si les règles ou le plan du deck ignorent volontairement ce tour. Comparez les versions en relançant la même liste après chaque changement, puis validez la courbe avec des mains d'essai et des parties réelles. Le coût moyen constitue un résumé pratique, mais deux decks peuvent partager cette moyenne et présenter des distributions très différentes : privilégiez donc l'examen des tranches. La méthode étant déterministe, une liste identique produit toujours le même résultat, utile pour les revues, contrôles automatisés et historiques avant-après.
Cas d’usage
Évaluer une première ébauche
Vérifiez qu'une version initiale contient assez d'actions peu coûteuses avant de consacrer du temps aux tests approfondis.
Comparer des versions du deck
Consignez la courbe avant et après les remplacements pour confirmer que la tranche visée a réellement évolué.
Contrôler des listes importées
Convertissez les lignes et quantités en un résumé uniforme dans un processus de construction ou de tournoi.
Questions fréquentes
Combien coûte un appel à l'API ?
Chaque requête API coûte $0.002. Le calculateur intégré au navigateur peut être utilisé gratuitement.
Quelle courbe est considérée comme recommandée ?
Les pourcentages de référence sont 3, 12, 20, 24, 18, 11, 7 et 5 pour cent, du coût zéro à sept ou plus. Il s'agit d'un repère général, pas d'une règle propre à un jeu.
Quand une tranche est-elle signalée ?
Une tranche est signalée lorsque sa part diffère de la référence d'au moins 10 points de pourcentage, dans un sens ou dans l'autre.
Comment traitez-vous les cartes coûtant plus de sept ?
Toutes les cartes coûtant sept ou davantage entrent dans la tranche 7+, mais leur coût exact contribue toujours à la moyenne.
Faut-il inclure les terrains ou les cartes de ressource ?
Incluez-les à coût zéro uniquement si vous voulez les voir dans la distribution. Omettez-les pour étudier seulement les sorts ou les actions.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"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
}
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "game.card_game_deck_build_ratio",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |