Skip to content

LGC - TCG — Spécification des mécaniques

Version du document : 1.1 — intègre les six règles tranchées après P0 (§1.1 « Résolution », §4.3, §7.3, §9). Remplace tous les jets précédents. Projet : LGC - TCG · Guilde Le Grand Conseil · guilde-lgc.fr

Cadre acté : duels synchrones temps réel · combat à attaque libre + Provocation · set de lancement de 120 cartes · terrain non ordonné · classes/factions en extension, structurellement préparées dès maintenant · plusieurs prototypes prévus (voir §13).


1. Constantes de partie

ParamètreValeur
PV du héros30 (+ Armure)
Deck30 cartes
Copies max3 commune / peu commune / rare · 2 épique · 1 légendaire
RessourceFerveur — 1 au tour 1, +1/tour, plafond 10
Main de départJ1 : 3 cartes · J2 : 4 cartes +1 Ferveur temporaire au tour 1
MulliganRemplacement de n'importe quel sous-ensemble, une fois
Terrain6 créatures max · 3 permanents max
PositionnementAucun en v1 (ensemble non ordonné)
Deck videFatigue cumulative (1, 2, 3… dégâts)
Timer75 s/tour + 3 banques de 30 s

Le plafond de Ferveur est le principal bouton de rythme. Si les parties traînent après les premiers tests réels, descends-le à 9 ou 8 avant de toucher aux cartes.

État de la ressource

ferveurMax      : 1..10   // plafond, +1 par tour
ferveurActuelle : number  // dépensable ce tour, peut dépasser ferveurMax

Le +1 du second joueur alimente ferveurActuelle sans toucher à ferveurMax. Invisible au tour 1, mais déterminant dès qu'une carte lira « si vous avez 8+ Ferveur » ou « augmente votre plafond de Ferveur ».

Structure du tour

  1. DébutferveurMax +1, recharge, déclencheurs ON_TURN_START, pioche 1.
  2. Principale — jouer, attaquer, pouvoir héroïque, dans n'importe quel ordre.
  3. Fin — déclencheurs ON_TURN_END, expiration des effets temporaires.

Combat

  • Seules les créatures attaquent. Le héros est passif. Il n'a pas de caractéristique d'attaque, ne se déclare jamais attaquant, et ne peut pas recevoir de mot-clé. Il ne blesse l'adversaire qu'indirectement : par ses créatures, ses sorts et son pouvoir héroïque.
  • L'attaquant choisit sa cible : créature adverse ou héros adverse.
  • Malaise d'invocation : pas d'attaque le tour d'arrivée (sauf Fougue).
  • 1 attaque par créature et par tour.
  • Dégâts simultanés.
  • Les dégâts sur les créatures persistent entre les tours.
  • S'il existe une créature adverse avec Provocation non-Furtive, elle doit être attaquée en premier.

Le héros passif supprime tout un pan de règles dont un jeu de guilde n'a pas besoin : pas de malaise d'invocation héroïque, pas d'attaque héroïque par tour, pas de dégâts en retour sur le héros attaquant, pas d'interaction entre armes et Provocation. Le coût est que les pouvoirs héroïques ne peuvent plus « donner +1 ATK au héros » : c'est ce qui a fait redessiner ceux du Druide et du Chasseur de démons (§4.3).

1.1 Résolution

Trois règles qui ne relèvent d'aucune carte en particulier, et sans lesquelles deux moteurs peuvent diverger sur la même partie.

Un seul choix de cible par capacité. Au sein d'une même capacité, tous les sélecteurs de cible « choisie » qui partagent le même couple (camp, nature) désignent la même entité. Le joueur choisit une fois, au début de la résolution, et ce choix vaut pour toute la séquence : « la créature gagne +0/+2 et Provocation » touche forcément la même créature. Deux couples différents dans une même capacité (une créature alliée et une créature adverse) provoquent bien deux choix distincts — c'est légal, mais assez rare pour que l'outillage le signale.

Les invocations se résolvent une par une, et les surnuméraires sont perdus. Si le terrain est plein au moment où une invocation doit placer une créature, celle-ci n'apparaît pas et l'effet continue. Une carte invoquant deux Disciples avec une seule place libre n'en invoque qu'un — et elle reste jouable même terrain plein. Le joueur voit ce qu'il perd : c'est un choix de timing, pas un piège. L'alternative (refuser l'invocation) obligerait à définir un seuil de légalité par carte et rendrait certaines cartes injouables sans raison lisible.

Les seuils de Ferveur lisent ferveurMax, jamais ferveurActuelle. « Si vous avez 8 Ferveur ou plus » signifie « si votre plafond est à 8 ». Trois raisons : le seuil ne dépend pas de ce qui a déjà été dépensé dans le tour, donc l'ordre de jeu n'a pas d'effet caché ; le +1 temporaire du second joueur ne peut pas franchir un seuil un tour trop tôt (D-04) ; et le joueur lit la réponse sur son plafond affiché, sans calcul. Conséquence pour le pouvoir de l'Évocateur : ses 3 dégâts arrivent au tour 8 et ne repartent jamais.


2. Copies multiples par rareté

RaretéCouleurCopies
CommuneGris3
Peu communeVert3
RareBleu3
ÉpiqueViolet2
LégendaireOrange1

Les couleurs reprennent la qualité d'objet WoW — reconnaissance immédiate pour tous les membres, zéro apprentissage.

Limiter les épiques à 2 permet de designer des effets forts sans qu'un deck puisse les enchaîner de façon déterministe.

Vigilance : 30 cartes avec des 3-of, c'est une très grande consistance (on voit sa carte clé dans ~70 % des parties avant le tour 6). Agréable, mais les combos à deux cartes deviennent bien plus fiables qu'en Hearthstone. Prudence sur toute boucle infinie ou burst létal en deux cartes.


3. La Ferveur

Triade de vocabulaire, sans chevauchement : Sceaux (économie hors partie) / Ferveur (ressource en partie) / PV.

Alternatives écartées : Élan (plus court mais plus abstrait), Cohésion (thématiquement parfait, lourd à répéter à l'oral), Renom (déjà associé à une progression WoW).


4. Le héros = un vrai personnage WoW

Le joueur sélectionne l'un de ses personnages enregistrés sur le site, existant réellement sur WoW. Ce personnage devient son héros : portrait, nom, classe, race, royaume.

Ce que ça achète gratuitement :

  • 13 pouvoirs héroïques (un par classe WoW), soit un contenu de personnalisation majeur sans design supplémentaire.
  • Une identité authentique qu'un avatar générique n'aura jamais.
  • Un moteur de reroll : chaque alt = un pouvoir différent = un deck différent.
  • L'articulation naturelle avec les factions : la classe WoW détermine les cartes de classe autorisées. Le système de factions n'est plus arbitraire, il tombe tout seul.

4.1 Les trois garde-fous

  1. Aucune donnée de puissance ne doit influencer le jeu. Ni ilvl, ni hauts faits, ni score M+, ni progression raid. Sinon les raiders écrasent les casuals et l'objectif social du projet est mort. Ces données peuvent débloquer du cosmétique (cadre de portrait, titre, émote) — jamais une statistique.
  2. La race est cosmétique. Un bonus racial, même minuscule, force le choix de race et vide de son sens le « c'est mon perso ».
  3. Snapshot à la liaison. Transferts, renommages, suppressions et changements de royaume cassent les liens Battle.net. Copie nom, classe, race et portrait au moment de la liaison ; l'API sert à vérifier l'existence, pas à stocker l'identité.

4.2 Le mur du reroll

Si les cartes de classe sont réservées aux joueurs possédant un perso de cette classe, un membre mono-guerrier ne verra jamais la moitié du set. Résolution : le contexte détermine la contrainte.

ModeRègle
Duel amicalToute classe jouable, aucune vérification
Tournoi / classéLe héros doit être un perso réel du joueur, niveau max

4.3 Pouvoirs héroïques (premier jet — 2 Ferveur, 1×/tour)

ClassePouvoirEffet
GuerrierRenforcement+2 Armure
PaladinRecrutementInvoque un Disciple 1/1
ChasseurTir précis2 dégâts au héros adverse
VoleurCoup basUne créature alliée gagne +2 ATK ce tour
PrêtrePrièreSoigne 3 (n'importe quelle cible)
ChamanTotemInvoque un totem 0/2 aléatoire parmi 4
MageTrait de feu1 dégât n'importe où
DémonistePactePiochez 1 carte, perdez 2 PV
MoineSérénitéUne créature alliée gagne +0/+2 et Provocation
DruideCroissanceUne créature alliée gagne +1/+1
Chasseur de démonsMétamorphose(1 Ferveur) 1 dégât à une créature
Chevalier de la mortLevéeInvoque une Goule 1/1
ÉvocateurSouffle1 dégât ; 3 dégâts si votre plafond de Ferveur atteint 8

Étalon : ~2 points d'effet pour 2 Ferveur — délibérément inefficace. C'est un plancher de jouabilité, pas une stratégie.

Le Druide et le Chasseur de démons donnaient à l'origine « +1 ATK à votre héros ce tour ». Le héros étant passif (§1), ces deux pouvoirs ne faisaient plus rien. Le remplacement conserve leur position dans l'échelle des coûts — le Chasseur de démons reste le seul pouvoir à 1 Ferveur — mais il est le maillon faible de la liste : le Druide frôle le Moine, et l'identité druidique (choix entre deux effets, accélération de Ferveur) est délibérément gardée pour l'extension de classes plutôt que dépensée ici.


5. Types de cartes, mots-clés, déclencheurs

5.1 Trois types, pas plus

  • Créature (Membre)coût · ATK · PV · mots-clés · capacités. ~60 % du set.
  • Sort (éphémère) — effet immédiat puis cimetière. Une expression, une punchline, une situation vécue. ~30 %.
  • Permanent (Bannière / Lieu) — reste en jeu, n'attaque pas, insensible aux sorts de dégâts. Effet continu ou déclenché, avec durabilité ou charges. ~10 %.

Écartés de la v1 : armes/équipements (doublent les règles de combat), terrains, cartes-héros alternatives.

5.2 Cinq mots-clés statiques

Mot-cléEffetCoût en points de stats
ProvocationDoit être attaquée en priorité−1
BouclierAnnule la première instance de dégâts−2
FouguePeut attaquer une créature dès son arrivée (pas le héros)−2
FurtifNi ciblable ni attaquable jusqu'à sa première attaque−1
LétalDétruit toute créature à laquelle elle inflige des dégâts−3

Charge est écartée : attaquer le héros dès l'arrivée transforme n'importe quel buff en dégâts incontrables et rend les combos létales inanticipables. Fougue en garde 90 % de la sensation sans le problème. Si tu veux un effet Charge, réserve-le à une légendaire.

Piège / Secret est reporté en extension : il exige un système de priorité au milieu de la résolution adverse et une information cachée dont l'existence est publique (risque réel de fuite via l'API). Le système d'effets ci-dessous permet de l'ajouter plus tard sans refonte.

5.3 Neuf déclencheurs

Nom joueurÉvénement
Cri de guerreON_PLAY
Râle d'agonieON_DEATH
RituelON_TURN_START / ON_TURN_END
RiposteON_DAMAGE_TAKEN
AssautON_ATTACK
CamaraderieON_ALLY_SUMMONED
ÉchoON_SPELL_CAST
AuraCONTINUOUS
ActivableMANUAL (coûte de la Ferveur, 1×/tour)

Les mots-clés sont des flags sur une entité ; les déclencheurs sont des abonnements à des événements. Ne pas mélanger les deux dans le modèle.


6. Sous-types : les rangs et rôles du Grand Conseil

Le champ « race » des créatures devient l'identité de guilde. Mécaniquement gratuit (un tag), thématiquement parfait, et 100 % maison.

6.1 Deux axes

Axe rang (hiérarchie réelle de la guilde)DISCIPLE · MEMBRE · CHAMPION · CONSEILLER · HAUT_CONSEILLER

Axe rôleTANK · SOIGNEUR · DPS · ARTISAN

Une créature-membre porte un rang et un rôle. Les créatures non-membres portent à la place BOSS, MONSTRE, MASCOTTE ou PNJ.

Dans le modèle, un simple tableau : "subtypes": ["DPS", "CHAMPION"]. Un champ, deux axes.

⚠️ Les rangs évolueront. Ne les code jamais en enum figée : c'est une table de configuration (id, libellé, ordre, fourchette de coût, icône) chargée comme donnée. Une réorganisation de la guilde doit être un changement de config, pas une migration de code.

Corollaire, cohérent avec §6.3 : le rang imprimé sur une carte est un instantané daté. Si « Champion » est renommé un jour, les cartes déjà publiées conservent leur libellé d'origine — c'est de l'histoire de guilde, pas une donnée à rafraîchir. Prévois donc rankLabel (texte figé au moment de l'impression) en plus de rankId (référence vivante pour les synergies).

6.2 Le rang détermine le coût — pas la rareté

RangFourchette de coût
Disciple1 – 3
Membre3 – 5
Champion4 – 6
Conseiller5 – 8
Haut Conseiller7 – 10

Conséquence heureuse : les synergies tribales de rang sont automatiquement cohérentes avec la courbe. « Vos autres Disciples ont +1/+1 » est nécessairement un effet de début de partie ; « Quand vous jouez un Conseiller… » est nécessairement un payoff tardif. La structure le garantit.

Piège à éviter : la tentation de faire aussi corréler le rang avec la rareté (Haut Conseiller = légendaire, Disciple = commune). Cost et rareté sont deux axes indépendants dans un TCG ; les lier tous les deux au rang t'interdirait à jamais une légendaire à 2 Ferveur ou une commune à 8. Laisse la rareté libre. Un Disciple peut parfaitement être légendaire — pour un moment mémorable, une entrée fracassante dans la guilde.

Répartition des axes entre archétypes : les rôles portent les synergies de combat (Tanks défensifs, Soigneurs d'usure, DPS agressifs), les rangs portent les synergies de courbe. Évite d'écrire des synergies sur les deux axes dans la même carte — c'est illisible.

6.3 L'évolution des membres entre extensions

Le rang inscrit sur une carte est un instantané, pas un statut vivant. « Kaelis, Disciple » du set de base reste un Disciple pour toujours. Une extension ultérieure pourra ajouter « Kaelis, Conseiller » : coût supérieur, stats revues, un effet en plus. Le membre a progressé dans la guilde, on lui offre une nouvelle carte en son honneur.

Trois précisions pour que ça tienne dans la durée :

  1. La carte évoluée ne doit jamais dominer strictement l'ancienne. Elle coûte plus cher et fait plus de choses ; ce n'est pas un remplacement mais un rôle différent dans la courbe. Sinon c'est du power creep pur et l'ancienne carte meurt.
  2. Les deux versions coexistent légalement dans un même deck. Charmant en jeu (le passé et le présent d'une même personne sur le terrain) et exploitable en design : une carte peut synergiser avec sa propre version antérieure.
  3. Lien explicite dans le modèle : "evolutionOf": "crea_kaelis_disciple". Permet un affichage « historique de ce membre » sur le site — une petite fonctionnalité au rendement affectif énorme.

C'est le meilleur argument de sortie d'extension possible : chaque nouveau set raconte une année de guilde.


7. Le set de lancement — 120 cartes

7.1 Répartition

CatégorieNbDétail
Créatures7232 communes · 18 peu communes · 14 rares · 6 épiques · 2 légendaires
Sorts3614 · 10 · 7 · 3 · 2
Permanents124 · 4 · 2 · 2 · 0
Total collectionnable120
Jetons~10Invoqués uniquement, hors collection

Deux légendaires par set, acté. Chaque extension en apporte deux nouvelles. C'est peu, et c'est précisément ce qui les rend désirables — plus une manière élégante d'étaler l'honneur sur plusieurs années plutôt que d'avoir à justifier un classement d'entrée.

7.2 Courbe de Ferveur sur l'ensemble du set

Coût0-12345678+
Cartes12222420161187

L'erreur systématique des sets maison est le sommet trop lourd : on s'amuse à designer des bombes à 8 et on se retrouve incapable de construire une courbe jouable. Si tu dois couper, coupe en haut.

7.3 Produire 120 cartes sans y passer six mois

Designer par cycles. Un cycle = un même effet décliné sur plusieurs coûts. Exemple : retrait ciblé à 2 (3 dégâts), à 4 (5 dégâts + pioche), à 6 (destruction). Trois cartes conçues et équilibrées d'un coup, cohérentes entre elles, faciles à lire. 10 à 12 cycles couvrent la moitié du set.

Designer par archétypes. 120 cartes sans direction, c'est une soupe. Quatre archétypes × ~20 cartes + 40 flexibles :

ArchétypeIdentitéCartes clés
Agro / largeCréatures 1-3, saturer le terrainBuffs de masse, jetons, Fougue
ContrôleSurvivre, tenir, gagner tardRetrait ciblé, soins, Armure, gros corps à Provocation, bombes 7-8
Valeur / midrangeChaîner les Cris de guerreEffets d'arrivée, pioche
Synergie tribaleMiser sur un rang ou un rôle« Vos autres Soigneurs… »

Boucle de retrait obligatoire : sans réponses aux grosses créatures, le jeu se réduit à « qui pose le plus gros ». Prévois au minimum 5-6 cartes de retrait accessibles.

Aucun dégât de zone dans le pool neutre. Toute forme d'AoE — même modeste, même à 1 dégât — est réservée aux classes. C'est la tension entre cette section et 03-backlog-classes.md, tranchée en faveur du backlog : le burn de zone est une identité trop forte pour être dépensée en neutre, et l'expérience des sets maison est qu'une fois l'AoE générique installée, le Mage et le Chaman n'ont plus rien à dire.

Le prix est réel et il faut le regarder en face : l'archétype Contrôle du set de lancement n'a aucune réponse propre à un terrain large, alors que l'archétype Agro/large existe explicitement en face. La soupape prévue, à surveiller au premier test de table :

  • des corps à Provocation à forte endurance, qui absorbent plusieurs petites attaques ;
  • des créatures Létal en échange défavorable pour l'attaquant ;
  • des permanents à Rituel infligeant 1 dégât à une créature adverse aléatoire chaque tour — répétable et à retardement, mais mono-cible, donc hors du domaine réservé ;
  • du renvoi en main ciblé, qui coûte un tour à l'adversaire sans le tuer.

Si l'agro large domine malgré ça, la réponse est d'ouvrir un AoE neutre volontairement faible et cher (par exemple 1 dégât à toutes les créatures à 4 Ferveur), pas d'attendre l'extension.

Écrire 4-5 créatures vanilla (budget exact, aucun texte) : étalon visible pour les joueurs, repère pour toi.

7.4 72 créatures pour ~40 membres

Deux réponses, à combiner :

  • Créatures non-membres (~25-30) : mobs récurrents, boss de raid, mascottes, PNJ, le banquier de guilde, le wipe du tank. Elles portent la charge d'équilibrage ingrate et te libèrent de toute contrainte sociale.
  • Un membre peut avoir deux cartes dans le même set, à des rangs et coûts différents. C'est de la caractérisation, pas de la redite.

7.5 Identité d'extension et numérotation

Le modèle Magic est le bon, et il coûte presque rien à implémenter :

ÉlémentExempleEffet
Nom d'extension(à définir)Chaque set raconte une époque de la guilde
Code à 3 lettresXXXIdentifiant technique et visuel
Symbole d'extensionUne icône par setImprimé sur la carte, coloré selon la rareté
Numéro de collection042/120Le déclencheur de collectionnite le plus efficace qui soit
Cadre / dos de carteVariante par setRend une vieille carte reconnaissable au premier coup d'œil

Le numéro de collection en bas de carte est un détail minuscule qui transforme la perception : on ne possède plus « des cartes », on possède « 87 / 120 ». Prévois un affichage de complétion par extension sur le profil du membre.

Réserve dès maintenant dans le modèle : set, setCode, collectorNumber, version. Une carte est versionnée et jamais écrasée — sinon un nerf casse rétroactivement tous les replays enregistrés.

7.6 L'enluminure — la variante brillante

Chaque carte du set existe en version Enluminée : traitement visuel brillant, animé, cadre travaillé, tampon d'enluminure. Le vocabulaire du manuscrit médiéval plutôt que le « doré » de Hearthstone ou le « brillant » de Pokémon — c'est le même registre que Le Grand Conseil et son procès-verbal.

Les quatre règles, dans cet ordre d'importance :

  1. Rigoureusement cosmétique. Aucune stat, aucun mot-clé, aucun texte, aucun effet, aucun bonus hors partie. Une enluminée est la même carte, avec un plus beau costume. C'est l'application directe de D-09 : rien qui s'obtienne par la chance ou l'ancienneté ne doit influencer une partie. Dès qu'une enluminée donnerait ne serait-ce que +1 Sceau de gain, elle devient un objectif de farm et l'objectif social du projet se fissure.
  2. C'est une propriété de l'exemplaire, pas de la carte. Même id, même version, même collectorNumber. Il n'existe pas de « carte enluminée » dans le corpus — il existe des exemplaires enluminés dans la collection d'un joueur.
  3. Elle compte comme une copie normale. Les limites de deck (3 / 2 épique / 1 légendaire) portent sur la carte, pas sur le traitement. Un deck peut contenir 2 exemplaires normaux et 1 enluminé de la même commune.
  4. Elle ne s'achète pas. Deux sources seulement (voir ci-dessous), aucun craft en Sceaux. Une enluminée dit « j'ai eu de la chance » ou « j'étais là » — jamais « j'ai payé ».

Où vit le flag

Le corpus de cartes reste strictement inchangé : aucun champ foil dans data/cards/. L'enluminure vit dans l'inventaire du joueur.

json
// collection du joueur — pas data/cards/
{
  "cardId": "crea_gorak_forgeron",
  "version": 1,
  "normal": 2,
  "foil": 1,
  "foilProvenance": ["Raid Aberrus · 2026-03"]
}

Mettre foil sur la définition de carte dupliquerait le corpus (240 entrées au lieu de 120) et obligerait à appliquer chaque nerf deux fois — la garantie d'une désynchronisation. Le corollaire est net : le moteur ne voit jamais foil. Le champ n'entre ni dans l'état de partie, ni dans le kit de conformité, ni dans le seed RNG. C'est une option de rendu, passée au client et au générateur, et rien d'autre. Un replay rejoué sans les informations d'enluminure doit produire exactement la même partie.

foilProvenance est optionnel et facultatif à implémenter en P1, mais son rendement affectif est très supérieur à son coût : une enluminée gagnée lors d'un événement peut porter un tampon daté (« Nuit du Quorum · 2026 »). Deux exemplaires enluminés de la même carte ne sont alors plus interchangeables, et c'est exactement l'effet recherché.

Les deux sources

SourceDétail
Drop en packChaque carte d'un pack a une chance indépendante d'être enluminée. Cible de départ : 5 % (~23 % de chance d'au moins une enluminée sur un pack de 5). Pity timer : une enluminée garantie tous les 10 packs.
Récompense d'événementEnluminée commémorative attribuée pour une participation : raid, anniversaire de guilde, tournoi, aide à un nouveau. Non achetable, tamponnée via foilProvenance. C'est le levier le plus intéressant des deux — il récompense la présence, pas la dépense.

Le taux est un bouton à sens unique. Commence à 5 % et monte s'il s'avère que les membres ne s'y intéressent pas. L'inverse est impossible : baisser le taux dévalue les enluminées déjà distribuées et se lit comme une trahison. Même logique que le power creep, appliquée au cosmétique.

Ne rends jamais les enluminées échangeables entre membres. Un marché interne transformerait les Sceaux en monnaie spéculative et réintroduirait par la porte de derrière le pay-to-win que §10 s'efforce d'exclure.

Articulation avec les Sceaux

L'enluminée n'est pas un puits de Sceaux — c'est délibéré, et ça n'appauvrit pas §10 : les alt-arts IA restent le sink cosmétique infini, et ils sont d'une nature différente (je choisis mon illustration alternative ; je ne choisis pas mes enluminées). Les deux cohabitent sans se cannibaliser. Une carte peut parfaitement être enluminée et porter un alt-art acheté.

Deux ajustements à prévoir dans les amortisseurs de collection (§10) :

  • Fonte : un doublon enluminé rend davantage de Sceaux qu'un doublon normal (× 3 est un bon point de départ). En revanche, le craft ne produit jamais d'enluminée — sinon la règle 4 tombe.
  • Protection anti-doublon : elle ignore l'enluminure. Recevoir l'exemplaire enluminé d'une carte déjà possédée au maximum reste un bon pack, pas un doublon gaspillé.

Conséquences côté produit

  • Complétion parallèle sur le profil : « 87 / 120 · dont 12 enluminées ». Deux barres de progression pour un seul set — le meilleur ratio collectionnite / effort de développement du projet.
  • Le générateur (P1) rend les deux versions. L'export PNG enluminé est un objet de partage (Discord, fond d'écran, avatar) et c'est là que réside sa valeur réelle, puisque l'impression papier n'a pas d'équivalent de l'effet (au mieux un vernis sélectif, hors budget). Contrainte de rendu : le texte doit rester lisible sous l'effet, et un réglage « réduire les animations » est obligatoire.
  • Sa propre carte-membre. Offrir automatiquement à chaque membre l'enluminée de sa propre carte a été écarté : ça revient à décorer 100 % des membres, donc à ne rien signaler. Mieux vaut la donner en récompense d'événement, où elle veut dire quelque chose.

8. Le cœur modulaire : les cartes sont de la donnée

C'est la décision qui détermine si une extension prend 20 minutes ou 2 semaines — et, avec plusieurs prototypes prévus, c'est aussi ce qui rend un prototype jetable sans rien perdre (§13).

8.1 Schéma

json
{
  "id": "crea_gorak_forgeron",
  "set": "…",
  "setCode": "XXX",
  "collectorNumber": 42,
  "version": 1,
  "type": "CREATURE",
  "rarity": "RARE",
  "factions": ["NEUTRAL"],
  "subtypes": ["ARTISAN", "CHAMPION"],
  "rankId": "champion",
  "rankLabel": "Champion",
  "evolutionOf": null,
  "memberId": "u_1042",
  "optOut": false,
  "name": "Gorak, le Forgeron",
  "flavor": "« Je repop, deux secondes. »",
  "artist": "…",
  "cost": 4,
  "atk": 3,
  "hp": 5,
  "keywords": ["TAUNT"],
  "abilities": [
    {
      "trigger": "ON_PLAY",
      "condition": null,
      "action": "BUFF",
      "target": {
        "side": "ALLY", "kind": "CREATURE", "scope": "ALL",
        "filter": { "hasKeyword": "TAUNT" }, "excludeSelf": true
      },
      "params": { "atk": 1, "hp": 1, "duration": "PERMANENT" }
    }
  ]
}

Ajouter une carte = insérer une ligne. Aucun déploiement de code.

Ce schéma ne contient aucun champ d'enluminure : le traitement brillant est une propriété de l'exemplaire possédé, jamais de la définition de carte (§7.6). Le moteur ignore son existence.

8.2 Actions primitives (~15 couvrent 90 % d'un set)

DEAL_DAMAGE · HEAL · DRAW · DISCARD · SUMMON · DESTROY · BUFF · SET_STATS · GRANT_KEYWORD · SILENCE · BOUNCE · TRANSFORM · COPY · GAIN_MANA · GAIN_ARMOR · TUTOR

Chaque action est une fonction pure (state, target[], params) => Event[].

8.3 Sélecteur de cibles (DSL)

side   : SELF | ALLY | ENEMY | ANY
kind   : CREATURE | HERO | PERMANENT | CARD_IN_HAND | ANY
scope  : CHOSEN | ALL | RANDOM | SELF | LOWEST_HP | HIGHEST_ATK
filter : { costMin, costMax, hasKeyword, hasSubtype, type, damaged, … }
count  : n

Toute la richesse des cartes sort de la combinatoire action × sélecteur, pas de code spécifique.

8.4 Règles d'architecture non négociables

  • Moteur pur et déterministe : reduce(state, action) => { newState, events[] }, seed RNG stocké côté serveur.
  • Serveur autoritaire : le client envoie des intentions (PLAY_CARD, ATTACK, HERO_POWER, END_TURN) et reçoit un flux d'events qu'il se contente d'animer.
  • L'API renvoie une vue filtrée par joueur. La main adverse est une liste de dos de cartes, jamais des IDs. Erreur classique et fatale.
  • Les auras se recalculent : statsEffectives = base + Σ(buffs permanents) + Σ(auras actives). Ne jamais muter les stats stockées — c'est le bug qui tue tous les moteurs de TCG maison.
  • Cartes versionnées, jamais écrasées (§7.5).

Déterminisme + seed = replays gratuits. Sur un site de guilde, un replay partageable en commentaire vaut plus que trois mécaniques supplémentaires.


9. Équilibrage : le budget de stats

ATK + PV = 2 × coût + 1
Coût12345678
Budget357911131517

Chaque mot-clé déduit du budget (§5.2) ; un effet déclenché coûte de −1 à −4 selon sa puissance.

9.1 Les sorts et permanents : l'étalon de valeur d'effet

Une créature a un budget de caractéristiques : la formule ci-dessus dit combien de points d'ATK et de PV elle peut porter. Un sort ne laisse aucun corps, donc rien à mesurer avec la même règle. Il faut une seconde échelle : combien d'effet un sort peut acheter avec sa Ferveur.

La monnaie de cette échelle est le point d'effet, converti ainsi :

1 point d'effet vaut
1 dégât sur une créaturel'unité de référence
1,5 dégât au hérosfrapper le visage vaut moins : ça ne défend rien
0,7 carte piochéeune carte vaut ~1,4 point
1 point de soin ou d'Armure
1 point de caractéristique donné à une créature+1/+1 permanent ≈ 2 points

Le plafond : points d'effet = 1,5 × coût + 1.

Coût012345678
Points d'effet12,545,578,51011,513

Lecture concrète : un sort à 3 Ferveur peut infliger 4 dégâts à une créature et faire piocher une carte (4 + 1,4 = 5,4 ≈ 5,5). Un sort à 2 peut invoquer deux jetons 1/1.

Pourquoi 1,5 × coût + 1 et pas 2,5 × coût. Le premier jet de ce document proposait un taux linéaire de 2,5 points par Ferveur. Deux raisons de l'avoir révisé après P0 :

  1. Le sommet devenait absurde. 2,5 × coût autorise 20 points d'effet à 8 Ferveur — soit « infligez 20 dégâts répartis à votre convenance ». Aucun jeu du genre ne va là. L'efficacité par unité de ressource décroît en haut de courbe dans les TCG qui tiennent, parce qu'une carte chère arrive tard et doit déjà mériter son tour. Une formule affine (une pente de 1,5 plus une prime fixe de 1) reproduit cette décroissance ; une formule linéaire ne peut pas.
  2. Les cartes écrites à l'instinct tombaient toutes 20 à 40 % sous l'ancien étalon. Les quatre sorts et permanents témoins de P0 atteignent 75 à 109 % du nouvel étalon, contre 60 à 72 % de l'ancien. Quand la règle contredit systématiquement le jugement, c'est presque toujours la règle qui a tort.

Ce n'est toujours qu'un repère. L'outillage le rapporte mais ne bloque jamais dessus (tolérance 70–115 %), et il ne repose que sur quatre cartes. Le premier test de table sur cartes imprimées (§13.3) le confirmera ou le corrigera — c'est exactement le genre de question qu'une soirée de jeu tranche mieux qu'un tableur.

Un garde-fou tout de même : un sort ne doit jamais dominer une créature de même coût sur le seul terrain de la puissance immédiate. À 3 Ferveur, une créature reçoit 7 points de caractéristiques et un corps qui persiste ; un sort reçoit 5,5 points consommés d'un coup. L'écart paie la permanence.

Courbe cible d'un deck de 30 : 1→3-4 · 2→6 · 3→6 · 4→5 · 5→4 · 6→3 · 7+→2-3.


10. Économie des Sceaux

Le pay-to-win social. Dans une guilde, un membre inscrit hier qui se fait rouler dessus par un ancien à 400 Sceaux ne rejouera pas. Tout compte débloque immédiatement un deck de départ complet et jouable (30 cartes fixes, correct sans être optimal). Les packs améliorent, ils ne débloquent pas l'accès au jeu.

Les amortisseurs de collection (moins urgents à 120 cartes qu'à 35, mais nécessaires dès la 2ᵉ extension) :

  • Fonte : les doublons se convertissent en Sceaux (à perte, ~25 %) pour crafter une carte précise. Un doublon enluminé rend ~× 3 ; le craft, lui, ne produit jamais d'enluminée (§7.6).
  • Protection anti-doublon : à collection incomplète, un pack ne donne pas une carte déjà possédée au maximum. L'enluminure est ignorée par cette règle — l'exemplaire enluminé d'une carte complète reste un bon tirage.
  • Pity timer : légendaire garantie tous les 20 packs · enluminée garantie tous les 10.
  • Les alt-arts IA comme puits infini. Le générateur d'images de persos existe déjà. Dépenser des Sceaux pour générer une illustration alternative de sa propre carte-membre, c'est un sink cosmétique sans impact sur l'équilibrage, qui réutilise une fonctionnalité existante. La meilleure synergie disponible entre les deux systèmes. À ne pas confondre avec l'enluminure (§7.6), qui ne s'achète jamais : l'alt-art se choisit, l'enluminée se gagne.

11. Préparer les classes

Règle actée : deck = cartes neutres + cartes de la classe de ton héros.

11.1 Le champ existe dès la v1

"factions": ["NEUTRAL"] — un tableau, pas une chaîne, pour permettre plus tard des cartes multi-classes sans migration.

11.2 Le piège majeur : ne pas brûler tes identités dans le pool neutre

C'est **l'**erreur qui rend une extension de classes décevante. Si le pool neutre de lancement contient déjà la résurrection, la contre-magie, le vol de créature, la transformation et le burn de zone, il ne reste rien de distinctif à donner au Prêtre, au Mage ou au Démoniste. Les classes ressemblent alors à des variations fades du neutre.

Règle à s'imposer dès maintenant : le pool neutre fait des choses génériques (stats, dégâts simples, soins simples, pioche simple, buffs simples). Toutes les mécaniques à forte personnalité partent dans un backlog « réservé classes ». Frustrant à court terme, déterminant à long terme.

Cible : un deck de 30 devrait contenir 15 à 20 cartes de classe pour se sentir identitaire — soit ~25-30 cartes par classe minimum.


12. Le ton : des cartes drôles, jamais vexantes

C'est un objectif de design à part entière, pas une contrainte subie.

  1. Toutes les cartes-membres visent le budget de stats exact. On différencie par le rôle, jamais par la puissance brute.
  2. La rareté encode l'identité, pas la force. Une légendaire est plus mémorable, pas plus forte.
  3. Les textes d'ambiance sont validés par la personne concernée avant publication. Une punchline drôle en 2023 peut ne plus l'être.
  4. Flag optOut dans le modèle dès le départ, et possibilité de faire retirer ou renommer sa carte.
  5. Les vannes vraiment mordantes vont sur les créatures non-membres (le boss qui one-shot, le wipe du tank, l'add oublié) — cible collective, jamais individuelle.

13. Stratégie multi-prototypes

Prévoir plusieurs prototypes est une bonne décision, mais elle a une conséquence structurante : il faut savoir ce qui survit à un prototype jeté.

13.1 L'actif durable, c'est la donnée — pas le code

Trois choses doivent vivre dans un dépôt indépendant de toute stack, en JSON pur :

ActifContenu
Le schémaJSON Schema du modèle de carte, sans framework, sans typage propriétaire
Le corpusLes 120 cartes, validées contre le schéma
Le kit de conformitéScénarios de test : état initial → séquence d'actions → état final attendu

Le reste — moteur, serveur, UI — est consommable. Chaque prototype réimporte ces trois actifs.

13.2 Le kit de conformité, la pièce qui rend les prototypes bon marché

50 à 100 scénarios en JSON, un par règle et par cas limite :

  • un scénario par mot-clé (Provocation contourne un Furtif ? Bouclier absorbe un Létal ?) ;
  • un scénario par déclencheur, dont les chaînes (un Râle d'agonie qui tue une créature qui a elle-même un Râle d'agonie) ;
  • un scénario par action primitive ;
  • les cas limites classiques : retrait de la source d'une aura, SILENCE sur une créature buffée, mort simultanée des deux combattants, terrain plein au moment d'une invocation, fatigue.

Le prototype B se déclare fonctionnel quand il passe le même kit que le prototype A. Sans lui, chaque réécriture repart de zéro sur les règles et tu réintroduis les mêmes bugs — c'est ce qui transforme un multi-prototype fécond en tourner-en-rond.

13.3 Un prototype = une variable

La discipline à tenir : un prototype qui change à la fois la stack et les mécaniques n'apprend rien. Sépare explicitement les deux familles.

TypeQuestion poséeForme la moins chère
Prototype de mécaniqueEst-ce que c'est amusant ?Cartes imprimées, sur une vraie table
Prototype techniqueEst-ce que la stack tient ?Moteur + client minimal, UI moche assumée

Le point important : le générateur de cartes (P1) te donne le prototype de mécanique gratuitement. Imprime 60 cartes, joue une soirée à la table ou en vocal avec un tableau partagé, ajuste les règles le lendemain. Zéro ligne de moteur. C'est de loin la boucle d'itération la plus rapide dont tu disposeras, et elle validera ou tuera des mécaniques avant que tu n'aies écrit une seule ligne de serveur.

13.4 Critères d'évaluation d'un prototype technique

À fixer avant de commencer, sinon la comparaison se fera à l'affect :

  1. Temps d'ajout d'une carte (de l'idée au test en jeu) — l'indicateur le plus prédictif.
  2. Latence perçue d'une action en duel.
  3. Complexité de la synchronisation d'état et de la reconnexion.
  4. Taux de passage du kit de conformité.
  5. Confort de développement au bout de deux semaines, pas au bout de deux heures.

14. Feuille de route

P0 — Le schéma de données (avant toute ligne d'UI)

Modèle complet : types, raretés, factions, sous-types, rangs (en config), mots-clés, déclencheurs, actions, sélecteurs, versioning, extension, numéro de collection, evolutionOf, optOut. Validation par JSON Schema. Quelques cartes écrites à la main pour éprouver le format. Dépôt indépendant (§13.1).

Tout ce qui suit en dépend, et une erreur ici se paie dix fois plus tard.

P1 — Le site : documentation, générateur et galerie (la brique la plus rentable du projet)

Un site statique VitePress, dans le même dépôt que docs/ et data/, sans moteur de jeu (D-35). Trois usages, un seul build.

La documentation consultable — navigation, recherche plein texte et sommaire générés depuis docs/*.md. Les fichiers markdown restent la source de vérité : le site les affiche, il ne les stocke pas. C'est ce qui exclut un wiki à base de données et un dépôt séparé synchronisé, qui créeraient tous deux une seconde source de vérité.

Le générateur de cartes, un éditeur autonome :

  • Formulaire → JSON → prévisualisation en direct de la carte rendue.
  • Import de visuel (upload ou récupération depuis le générateur IA existant), recadrage, zoom.
  • Cadres automatiques par type, gemme de coût, couleur de rareté, symbole d'extension, numéro de collection.
  • Bascule normale / enluminée dans la prévisualisation (§7.6), avec contrainte de lisibilité du texte sous l'effet et réglage « réduire les animations ».
  • Export PNG haute résolution (variante enluminée incluse, destinée à l'écran) et planche A4 imprimable (3 × 3 = 9 cartes, sans enluminure).

La galerie — toutes les cartes rendues, filtres, complétion (« 87 / 120 · dont 12 enluminées »), et la courbe du set calculée en direct depuis data/.

Spécifications d'impression (format poker standard) : 63 × 88 mm, fond perdu 3 mm, 300 DPI → export à 815 × 1110 px avec fond perdu (744 × 1039 px sans). Coins arrondis 3 mm. Ces valeurs vivent dans sets.json (printSpec), pas en dur dans le code.

Pourquoi un seul dépôt : le générateur lit taxonomy.json, ranks.json, sets.json et data/cards/. Au même endroit, c'est un import relatif et une carte ajoutée apparaît au build suivant. Ailleurs, il faudrait un sous-module ou un paquet npm republié à chaque carte — le problème de synchronisation reviendrait sur l'actif durable, ce qui est bien pire que sur la documentation.

site/ a le statut de tools/ : jetable et clôturé. Il lit docs/ et data/, n'écrit jamais, ne contient aucun contenu propre.

Pourquoi en P1 : c'est la brique la moins risquée, la plus rapide à livrer, la seule qui produit de la hype avant même que le jeu existe (les membres verront leur carte des mois avant de pouvoir jouer), et elle débloque le prototypage de mécaniques sur table (§13.3).

Le site est statique, donc hébergeable n'importe où — y compris en sous-domaine de guilde-lgc.fr. Il ne préempte pas le choix d'architecture du duel en temps réel (§16.2).

P2 — Le kit de conformité et le moteur

Écrire les scénarios de test avant le moteur. Puis le moteur : fonction pure, déterministe, testée hors de tout serveur. Mode test rapide : partie contre soi-même avec main imposée et état de départ arbitraire. C'est là que se valideront les 120 cartes.

P3 — Le duel en ligne

Service temps réel, matchmaking par lien d'invitation, duels amicaux. Ni classement ni tournoi.

P4 — Consolidation

Replays partageables, fonte/craft, deck de départ gratuit, dashboard de winrate par carte. Cette dernière brique permet d'équilibrer sur des données plutôt qu'à l'intuition — elle vaut plus que dix cartes supplémentaires.

P5 — Extension 1

Classes WoW jouables, Pièges/Secrets, tournois à brackets, deux nouvelles légendaires, premières cartes d'évolution de membres.

P6 et au-delà

Draft (rend un pool de 120+ rejouable très longtemps), positionnement du terrain, équipements, saisons.


15. Décisions actées

SujetDécision
Nom du jeuLGC - TCG — abrégé LGC TCG (provisoire)
Nom de l'extension 1À définir — registre humoristique souhaité
Ordre du terrainNon ordonné en v1. Aucune carte « adjacent » dans le set de lancement. Champ position nullable réservé.
Avantage J2+1 Ferveur temporaire, tour 1 uniquement
FactionsReportées en extension, adossées à la classe WoW. Champ factions[] dès v1. Backlog « réservé classes » tenu à jour.
Deck30 cartes, 3 copies max (2 épique, 1 légendaire)
Légendaires2 par set, 2 nouvelles par extension
Sous-typesDeux axes : rang (Disciple → Haut Conseiller, en config) + rôle. Rang → coût, pas rareté.
EnluminureVariante Enluminée 100 % cosmétique. Flag foil sur l'exemplaire possédé, jamais sur la carte — le moteur l'ignore. Compte comme une copie normale. Sources : drop en pack (~5 %, pity 10) + récompense d'événement. Aucun craft.
PrototypesMultiples, une variable par prototype. Schéma + corpus + kit de conformité en dépôt indépendant.
Priorité de développementSchéma → générateur de cartes → kit + moteur → duel

16. À trancher pour la suite

  1. Nom de l'extension de lancement. Le nom « Le Grand Conseil » ouvre un filon comique évident : le vocabulaire de la réunion administrative appliqué à la haute fantasy. Quelques pistes — Procès-Verbal (code PVB : le compte rendu de ce qui s'est passé, et un clin d'œil aux PV), Point Divers (le dernier point de l'ordre du jour, là où tout dérape), Le Quorum, Motion Adoptée, Séance Plénière. Placeholder conservé en attendant.
  2. Site existant ou site dédié ? Le point déterminant n'est pas l'URL mais le fait que le duel temps réel impose un service stateful (WebSocket + état de partie en mémoire) au comportement très différent d'une API REST : montée en charge, redémarrages, reconnexions. Un service séparé partageant l'auth et la base de comptes est probablement le bon découpage. Note que P0/P1 n'en dépendent pas — tu peux avancer longtemps avant de trancher.
  3. Déploiement des classes : les 13 d'un coup (cohérent, mais ~350 cartes à équilibrer d'un seul jet) ou par vagues de 3-4 (progressif, mais crée temporairement des classes fortes et des classes absentes) ?