Apparence
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ètre | Valeur |
|---|---|
| PV du héros | 30 (+ Armure) |
| Deck | 30 cartes |
| Copies max | 3 commune / peu commune / rare · 2 épique · 1 légendaire |
| Ressource | Ferveur — 1 au tour 1, +1/tour, plafond 10 |
| Main de départ | J1 : 3 cartes · J2 : 4 cartes +1 Ferveur temporaire au tour 1 |
| Mulligan | Remplacement de n'importe quel sous-ensemble, une fois |
| Terrain | 6 créatures max · 3 permanents max |
| Positionnement | Aucun en v1 (ensemble non ordonné) |
| Deck vide | Fatigue cumulative (1, 2, 3… dégâts) |
| Timer | 75 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 ferveurMaxLe +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
- Début —
ferveurMax+1, recharge, déclencheursON_TURN_START, pioche 1. - Principale — jouer, attaquer, pouvoir héroïque, dans n'importe quel ordre.
- 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é | Couleur | Copies |
|---|---|---|
| Commune | Gris | 3 |
| Peu commune | Vert | 3 |
| Rare | Bleu | 3 |
| Épique | Violet | 2 |
| Légendaire | Orange | 1 |
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
- 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.
- 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 ».
- 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.
| Mode | Règle |
|---|---|
| Duel amical | Toute 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)
| Classe | Pouvoir | Effet |
|---|---|---|
| Guerrier | Renforcement | +2 Armure |
| Paladin | Recrutement | Invoque un Disciple 1/1 |
| Chasseur | Tir précis | 2 dégâts au héros adverse |
| Voleur | Coup bas | Une créature alliée gagne +2 ATK ce tour |
| Prêtre | Prière | Soigne 3 (n'importe quelle cible) |
| Chaman | Totem | Invoque un totem 0/2 aléatoire parmi 4 |
| Mage | Trait de feu | 1 dégât n'importe où |
| Démoniste | Pacte | Piochez 1 carte, perdez 2 PV |
| Moine | Sérénité | Une créature alliée gagne +0/+2 et Provocation |
| Druide | Croissance | Une créature alliée gagne +1/+1 |
| Chasseur de démons | Métamorphose | (1 Ferveur) 1 dégât à une créature |
| Chevalier de la mort | Levée | Invoque une Goule 1/1 |
| Évocateur | Souffle | 1 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é | Effet | Coût en points de stats |
|---|---|---|
| Provocation | Doit être attaquée en priorité | −1 |
| Bouclier | Annule la première instance de dégâts | −2 |
| Fougue | Peut attaquer une créature dès son arrivée (pas le héros) | −2 |
| Furtif | Ni ciblable ni attaquable jusqu'à sa première attaque | −1 |
| Létal | Dé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 guerre | ON_PLAY |
| Râle d'agonie | ON_DEATH |
| Rituel | ON_TURN_START / ON_TURN_END |
| Riposte | ON_DAMAGE_TAKEN |
| Assaut | ON_ATTACK |
| Camaraderie | ON_ALLY_SUMMONED |
| Écho | ON_SPELL_CAST |
| Aura | CONTINUOUS |
| Activable | MANUAL (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
enumfigé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 derankId(référence vivante pour les synergies).
6.2 Le rang détermine le coût — pas la rareté
| Rang | Fourchette de coût |
|---|---|
| Disciple | 1 – 3 |
| Membre | 3 – 5 |
| Champion | 4 – 6 |
| Conseiller | 5 – 8 |
| Haut Conseiller | 7 – 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 :
- 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.
- 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.
- 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égorie | Nb | Détail |
|---|---|---|
| Créatures | 72 | 32 communes · 18 peu communes · 14 rares · 6 épiques · 2 légendaires |
| Sorts | 36 | 14 · 10 · 7 · 3 · 2 |
| Permanents | 12 | 4 · 4 · 2 · 2 · 0 |
| Total collectionnable | 120 | |
| Jetons | ~10 | Invoqué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ût | 0-1 | 2 | 3 | 4 | 5 | 6 | 7 | 8+ |
|---|---|---|---|---|---|---|---|---|
| Cartes | 12 | 22 | 24 | 20 | 16 | 11 | 8 | 7 |
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étype | Identité | Cartes clés |
|---|---|---|
| Agro / large | Créatures 1-3, saturer le terrain | Buffs de masse, jetons, Fougue |
| Contrôle | Survivre, tenir, gagner tard | Retrait ciblé, soins, Armure, gros corps à Provocation, bombes 7-8 |
| Valeur / midrange | Chaîner les Cris de guerre | Effets d'arrivée, pioche |
| Synergie tribale | Miser 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ément | Exemple | Effet |
|---|---|---|
| Nom d'extension | (à définir) | Chaque set raconte une époque de la guilde |
| Code à 3 lettres | XXX | Identifiant technique et visuel |
| Symbole d'extension | Une icône par set | Imprimé sur la carte, coloré selon la rareté |
| Numéro de collection | 042/120 | Le déclencheur de collectionnite le plus efficace qui soit |
| Cadre / dos de carte | Variante par set | Rend 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 :
- 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.
- C'est une propriété de l'exemplaire, pas de la carte. Même
id, mêmeversion, mêmecollectorNumber. Il n'existe pas de « carte enluminée » dans le corpus — il existe des exemplaires enluminés dans la collection d'un joueur. - 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.
- 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
| Source | Détail |
|---|---|
| Drop en pack | Chaque 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énement | Enluminé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 : nToute 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'eventsqu'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ût | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|
| Budget | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 17 |
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éature | l'unité de référence |
| 1,5 dégât au héros | frapper le visage vaut moins : ça ne défend rien |
| 0,7 carte piochée | une 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ût | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|---|---|---|---|---|---|---|---|---|---|
| Points d'effet | 1 | 2,5 | 4 | 5,5 | 7 | 8,5 | 10 | 11,5 | 13 |
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 :
- 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.
- 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.
- Toutes les cartes-membres visent le budget de stats exact. On différencie par le rôle, jamais par la puissance brute.
- La rareté encode l'identité, pas la force. Une légendaire est plus mémorable, pas plus forte.
- 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.
- Flag
optOutdans le modèle dès le départ, et possibilité de faire retirer ou renommer sa carte. - 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 :
| Actif | Contenu |
|---|---|
| Le schéma | JSON Schema du modèle de carte, sans framework, sans typage propriétaire |
| Le corpus | Les 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,
SILENCEsur 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.
| Type | Question posée | Forme la moins chère |
|---|---|---|
| Prototype de mécanique | Est-ce que c'est amusant ? | Cartes imprimées, sur une vraie table |
| Prototype technique | Est-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 :
- Temps d'ajout d'une carte (de l'idée au test en jeu) — l'indicateur le plus prédictif.
- Latence perçue d'une action en duel.
- Complexité de la synchronisation d'état et de la reconnexion.
- Taux de passage du kit de conformité.
- 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
| Sujet | Décision |
|---|---|
| Nom du jeu | LGC - TCG — abrégé LGC TCG (provisoire) |
| Nom de l'extension 1 | À définir — registre humoristique souhaité |
| Ordre du terrain | Non ordonné en v1. Aucune carte « adjacent » dans le set de lancement. Champ position nullable réservé. |
| Avantage J2 | +1 Ferveur temporaire, tour 1 uniquement |
| Factions | Reportées en extension, adossées à la classe WoW. Champ factions[] dès v1. Backlog « réservé classes » tenu à jour. |
| Deck | 30 cartes, 3 copies max (2 épique, 1 légendaire) |
| Légendaires | 2 par set, 2 nouvelles par extension |
| Sous-types | Deux axes : rang (Disciple → Haut Conseiller, en config) + rôle. Rang → coût, pas rareté. |
| Enluminure | Variante 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. |
| Prototypes | Multiples, une variable par prototype. Schéma + corpus + kit de conformité en dépôt indépendant. |
| Priorité de développement | Schéma → générateur de cartes → kit + moteur → duel |
16. À trancher pour la suite
- 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. - 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.
- 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) ?