Méthode de création

Cette page est la méthode et la référence du code d'un œuf LiveGotchi : comment on dessine une créature, ses évolutions, ses pouvoirs, un décor, et ce que le code doit dire. Elle se lit aussi bien qu'elle se donne à une IA à qui on demande d'en écrire un. Tout ce qui est écrit ici est ce que l'atelier de création accepte, ni plus ni moins.

Une IA ne peut pas toujours ouvrir une page web. Emportez le guide avec vous : collez-le dans la conversation, ou importez le fichier.

Ce qu'on te demande

LiveGotchi est une créature en pixels qui vit sur l'overlay d'un direct Twitch. Elle naît d'un œuf, éclot, puis évolue d'étape en étape selon ce que le direct lui apporte. Un joueur te donne cette page, souvent avec un œuf existant en modèle, et te demande d'en écrire un : tu réponds avec un seul document JSON, complet, et rien d'autre. Une clôture ```json autour est tolérée ; un commentaire, une phrase avant ou après, un JSON incomplet ne le sont pas.

Sommaire

  1. La structure d'un œuf
  2. Étapes, éclosions, évolutions, branches
  3. Les conditions et les besoins
  4. Les animations
  5. Les images, les calques, la palette
  6. Les repères de la grille
  7. Comment dessiner
  8. Les pouvoirs
  9. La répartition
  10. Les décors
  11. Toutes les limites
  12. Les erreurs les plus fréquentes
  13. Un œuf complet en exemple

1. La structure d'un œuf

Un œuf est un objet JSON. Ses champs, dans l'ordre où il vaut mieux les écrire :

ChampObligatoireCe que c'est
nomouiLe nom de l'œuf, 40 caractères au plus.
grilleouiLe côté de la grille de pixels : 16, 32 ou 64. La même pour toutes les images de l'œuf. Elle ne change plus après la création.
genrenonAbsent pour une créature. sol, papier, element, cadre ou tableau pour un décor (voir les décors).
affinitenonL'état que la créature aime le plus : sante, force, precision ou mana.
prixnonUn nombre de crédits, zéro ou plus. Le joueur le règle lui-même dans l'atelier : tu peux l'omettre.
repartitionnonComment les évènements du direct nourrissent les quatre états (voir la répartition).
effetsnonLes pouvoirs de l'œuf, partagés par toutes ses étapes (voir les pouvoirs).
declencheursnonCe que le chat écrit → ce que la créature ressent : un mot ou un émoji en clé, une émotion dessinée en valeur (voir les émotions).
etapesouiLa liste des étapes, l'œuf en premier. C'est tout l'arbre de la créature.

Aucun autre champ n'est admis. Un champ inconnu refuse le code.

2. Étapes, éclosions, évolutions, branches

Chaque entrée de etapes est une étape de la vie de la créature : une apparence, avec ses animations, et ce qu'il faut pour y arriver.

ChampObligatoireCe que c'est
nomouiLe nom de l'étape, 40 caractères au plus, unique dans l'œuf. C'est par ce nom que les autres étapes s'y rattachent.
sousoui, sauf pour l'œufLe nom de l'étape sous laquelle celle-ci se branche. Cette étape doit être déclarée plus haut dans la liste.
conditionnonCe que la créature doit avoir accompli dans l'étape précédente pour venir ici (voir les conditions). Jamais sur l'œuf.
besoinsnonLes états qui s'usent plus vite ou moins vite à cette étape.
animationsnon, mais l'atelier en exige avant de publierLes animations de cette apparence, par nom (voir les animations).
effetsnonDes pouvoirs apportés par cette étape : même forme qu'en tête de l'œuf, ils rejoignent la même liste.

Les mots

Les bornes : l'œuf ouvre huit éclosions au plus ; une étape ouvre dix branches au plus ; l'arbre descend dix niveaux au plus sous l'œuf. Une créature n'a pas besoin de tout ça : une éclosion et trois ou quatre évolutions en ligne font déjà une belle vie. Un arbre linéaire (chaque étape sous la précédente, sans branche) est parfaitement valable.

Les stades de la créature suivent la profondeur : éclos, petit, jeune, ado, adulte, aguerri, ancien, sage, légende, mythe. Le joueur les voit dans l'élevage ; toi, tu n'as qu'à nommer les étapes.

3. Les conditions et les besoins

Une condition est un objet dont chaque champ est un critère. Tous les critères présents doivent être remplis en même temps. Les compteurs se mesurent pendant les heures d'antenne : le temps où le joueur est en direct. Le temps hors direct ne compte pas.

CritèreValeurSens
minHeuresentier, 1 à 2000Heures d'antenne passées dans l'étape précédente.
minMoyenneentier, 1 à 100Moyenne des quatre états, en pour cent, au moment d'évoluer.
minJaugeobjet état → entier 1 à 100Un ou plusieurs états au moins à ce niveau : { "force": 70 }.
maxFautesentier, 0 à 10000Fautes de soin tolérées dans l'étape (un état tombé à zéro). Zéro veut dire aucune faute.
minCompteurobjet compteur → entierCe que le direct a produit pendant l'étape : { "follows": 20, "messages": 500 }.
minCompteurTotalobjet compteur → entierLa même chose, comptée depuis la naissance de la créature.

Combien d'heures ? Une évolution se mérite

Compte au moins dix heures d'antenne par étape, et jusqu'à vingt-quatre pour les dernières. En dessous, la créature traverse tout l'arbre en une soirée et le joueur n'a plus rien à attendre.

Ce que tu écris n'est pas une récompense à distribuer : c'est un défi engageant. Le streamer doit le poursuivre sur des semaines, et son chat doit pouvoir le suivre avec lui.

Les quatre états : sante, force, precision, mana. Les compteurs :

CompteurCe qu'il compte
messagesMessages du chat.
chatteursPersonnes différentes ayant écrit.
followsNouveaux followers.
subsAbonnements.
subsOffertsAbonnements offerts.
bitsBits envoyés.
donsDons.
raidsRaids reçus.
viewersMaxViewers au sommet.
hypeNiveaux de hype train.
recompensesRécompenses de points de chaîne.
clipsClips créés.
sanctionsTimeouts et bans prononcés.

Les besoins ont un seul champ, usure : pour chaque état, une vitesse d'usure parmi 0.5, 0.75, 1, 1.5, 2. Un état absent s'use comme d'habitude. Exemple : { "usure": { "sante": 2, "mana": 0.5 } } pour une étape fragile mais sociable.

{
  "nom": "Renard ardent", "sous": "Renardeau",
  "condition": { "minHeures": 12, "minJauge": { "force": 60 }, "minCompteur": { "follows": 10 } },
  "besoins": { "usure": { "force": 1.5 } },
  "animations": { … }
}

Un tempérament par branche, dès le soigné. Deux voies nées de la même éclosion ne se distinguent pas seulement par leur allure : donne à chaque feuille — une étape qui n'a rien sous elle — ses propres besoins. La voie de la force mange plus, celle du mana s'ennuie plus vite. Sans cela, choisir une branche ne change rien à la façon de s'en occuper, et le choix devient décoratif.

4. Les animations

animations est un objet : le nom de l'animation en clé, et pour valeur une palette et une liste d'images. Les noms sont en minuscules, sans espace ni accent, 24 caractères au plus. Certains noms ont un rôle ; tout autre nom est admis mais l'overlay ne saura pas quand le jouer.

NomRôleQuand
oeufL'œuf lui-mêmeSeule animation de la première étape, et nulle part ailleurs. Trois images au moins sont bienvenues : l'œuf immobile, puis fissuré.
reposObligatoire dès l'éclosionL'attente. Ce qu'on voit le plus : soigne-la.
marcheObligatoire dès l'éclosionLa créature se déplace sur l'overlay.
course, saut, vol, grimpe, grimpe-devantCapacitésChacune donne la capacité du même nom. Sans vol, la créature ne vole pas. grimpe-devant est la grimpe vue de face, facultative.
attaque, sortCombatLe coup physique et le sort magique. Une attaque sans images ne s'emploie pas en arène.
touche, touche-2, touche-3CombatÊtre touché ; les variantes sont facultatives.
koCombatÊtre vaincu.
evolutionTransformationJouée une fois à l'arrivée dans cette étape, avant le repos. Facultative : sans elle, l'apparence change d'un coup. Jamais sur l'œuf.
heureux, content, excite, amoureux, fier, ennuye, triste, fatigue, malade, colere, effraye, endormi, affame, saleÉmotionsJouée à la place du repos quand la créature ressent cette émotion. Toutes facultatives.
dodo, assisReposD'autres attentes, facultatives ; une émotion peut se jouer pendant.

Le sens

marche, course, saut, vol, grimpe, attaque et sort se dessinent une seule fois, la créature tournée vers la droite. L'overlay les retourne en miroir quand elle va vers la gauche. Ne dessine jamais une version « vers la gauche ».

Le rythme

Chaque animation a huit images au plus par défaut (le studio peut relever cette borne ; le joueur te le dira). Une étape a 40 animations au plus. Les images se jouent en boucle, dans l'ordre ; deux à quatre images suffisent pour un repos qui respire, quatre à six pour une marche.

Quelles émotions dessiner, et quand elles se jouent

Quatorze noms d'émotion sont acceptés, listés ci-dessus. Tu n'as pas à les dessiner toutes, et il vaut mieux en réussir quatre que bâcler quatorze.

FinitionÉmotions dessinées
Intermédiaire1
Soigné4
Chef-d'œuvre8

Quand elles se jouent. L'overlay choisit une seule émotion à chaque instant, dans cet ordre, et s'arrête à la première qui répond :

  1. morte, puis endormie : elles priment sur tout.
  2. une humeur passagère, posée par ce qui vient de se passer, le temps qu'elle dure.
  3. malade, si la santé tombe à 20 % ou moins.
  4. le besoin exprimé : il passe avant les seuils, c'est ce que la créature réclame et c'est à lui que le streamer doit répondre.
  5. fatigue sous 15 % de force, ennuye sous 15 % de précision, triste sous 15 % de mana.
  6. sinon la moyenne des quatre états : heureux au-dessus de 85 %, content au-dessus de 65 %, ennuye au-dessus de 40 %, triste en dessous.

L'animation qui porte le nom de l'émotion remplace le repos tant qu'elle dure. Si tu ne l'as pas dessinée, le repos continue : rien ne casse, mais la créature ne dit rien de ce qu'elle ressent.

Lesquelles choisir en premier. Celles que cet ordre produit vraiment : malade, affame, fatigue, ennuye, triste, content, heureux. Les rares — amoureux, fier, effraye — se dessinent après, quand les sept premières existent.

Réagir à ce que dit le chat. Le champ declencheurs, en tête de l'œuf, associe un mot ou un émoji à une émotion : "declencheurs": { "🔥": "excite", "gg": "fier", "Kappa": "content" }. Quand le chat l'écrit, la créature joue cette émotion. La clé est un mot ou un émoji de 24 caractères au plus, comparée sans majuscules ; la valeur, une émotion que la créature dessine — une émotion sans animation refuse le code. Soixante-quatre entrées au plus. C'est le créateur qui décide ; le streamer ne remplit que les cases laissées libres et ne réécrit jamais une clé de l'œuf.

5. Les images, les calques, la palette

Une animation :

"repos": {
  "palette": { "#": "#c8742a", "o": "#ffffff", "x": "#1a1a1a" },
  "images": [
    { "calques": [ { "nom": "Corps", "rangees": [ "................", … 16 rangées … ] } ] },
    { "calques": [ { "nom": "Corps", "rangees": [ … ] }, { "nom": "Yeux", "opacite": 100, "rangees": [ … ] } ] }
  ]
}

6. Les repères de la grille

Une grille n'est pas un cadre flottant : c'est une scène. Trois repères la tiennent, les mêmes pour toutes les images d'un œuf. Les oublier est l'erreur de dessin la plus fréquente.

RepèreOùCe qu'il impose
La ligne de solLa dernière rangée, tout en basTout ce qui est posé la touche : les pieds d'une créature, le bas d'un œuf, la base d'une plante. Rien ne flotte au milieu de la grille.
L'axeLa colonne du milieuLa créature est centrée dessus, marges égales à gauche et à droite. À 16 l'axe passe entre les colonnes 8 et 9, à 32 entre 16 et 17, à 64 entre 32 et 33.
Le cielLa rangée ou les deux rangées du hautLaisse-les vides. Une créature grandit vers le haut depuis le sol, jamais depuis le centre, et une tête collée au bord se fait couper.
             l'axe, entre les colonnes 8 et 9
                    |
   rangée  1   ................   le ciel : vide
   rangée  2   ......####......
   rangée  3   .....#oooo#.....
   rangée  4   ....#oooooo#....
      ...      ................
   rangée 14   ....#oo..oo#....
   rangée 15   .....#o..o#.....
   rangée 16   .....##..##.....   la ligne de sol : les pieds y touchent

La vérification tient en une ligne : regarde la dernière rangée de ton image de repos. Si elle est vide, ta créature flotte.

7. Comment dessiner

Une créature LiveGotchi est du pixel art, affiché agrandi et net, sans lissage. Ce qui marche :

Vérifie chaque rangée avant de répondre : le nombre de caractères est la cause d'erreur la plus fréquente. Compte-les. Une rangée de 15 ou de 17 caractères refuse tout le code.

8. Les pouvoirs

Les pouvoirs (champ effets) se déclarent à deux endroits, au choix :

C'est une règle, pas un rangement. Une image qui déclenche un pouvoir que son étape n'a pas encore acquis fait refuser tout le code, en disant de quelle étape vient le pouvoir. Sers-t'en pour raconter la montée en puissance : une éclosion sobre, un adulte armé, deux branches sœurs qui divergent, la voie de la force gagne l'impact et celle du mana gagne l'aura.

Un pouvoir écrit en tête de l'œuf reste disponible partout : c'est le bon endroit pour ce que la lignée entière partage. Seize au plus par œuf, toutes étapes confondues. Ils se déclenchent par leur nom depuis une image. Chacun :

ChampCe que c'est
nomUnique, 24 caractères au plus. C'est ce nom qu'une image cite dans ses effets.
comportementprojectile, impact, aura ou camera.
reglagesLes réglages du comportement, tous facultatifs (voir ci-dessous).
imagesUne animation, dans la même forme qu'une animation d'étape, sur la grille de l'œuf. Jamais pour camera.
ComportementCe qu'il faitRéglages
projectilePart de la créature vers l'adversaire et le touche au contact.vitesse : lente, normale, rapide · trajectoire : droite, cloche · degats : true (fait perdre de la santé) ou false (décoratif, un cœur)
impactApparaît sur la cible au moment du contact.duree : 1 à 32 images
auraJoue sur soi ou sur l'adversaire, sans se déplacer.cible : soi, adversaire · duree : 1 à 32 · monte : true pour s'envoler en s'effaçant
cameraPas de dessin : l'écran bouge.genre : tremblement, zoom, eclair, ralenti · force : 1, 2 ou 3 · duree : 1 à 32
"effets": [
  { "nom": "Boule de feu", "comportement": "projectile", "reglages": { "vitesse": "rapide", "trajectoire": "droite", "degats": true },
    "images": { "palette": { "#": "#ff6b1a", "o": "#ffd166" }, "images": [ [ … 16 rangées … ], [ … ] ] } },
  { "nom": "Secousse", "comportement": "camera", "reglages": { "genre": "tremblement", "force": 2, "duree": 6 } }
]

Puis, dans l'animation sort de l'étape, l'image du lancer porte "effets": ["Boule de feu", "Secousse"].

Combien de pouvoirs, et où les acquérir

FinitionPouvoirsOù ils s'acquièrent
Esquisse01 dès qu'elle ramifie
Intermédiaire2un au deuxième stade, un au dernier
Soigné3un tous les deux stades
Chef-d'œuvre6, dont un de camératrois sur le tronc, un par feuille

Jamais deux au même stade. Un pouvoir marque une étape ; deux d'un coup n'en marquent aucune. Étale-les, c'est ce qui fait sentir la montée en puissance.

Au moins un par feuille de branche, sur toute créature qui ramifie. Une voie se choisit pour ce qu'elle donne, pas seulement pour son allure. Une créature à deux fourches a trois feuilles : trois pouvoirs propres, en plus de ceux du tronc.

Des formes distinctes, pas des noms distincts. Deux pouvoirs d'une même créature ne partagent jamais leur silhouette ni leur couleur dominante : un orbe, un pépin, une étoile, une page. Et le nom dit le dessin — « Boule de feu » est une boule de feu, pas une aura verte.

Ce que ça coûte, et à qui. Les pouvoirs ne comptent pas dans les 160 animations d'un œuf : ils ont leur propre plafond, seize. Mais ils coûtent à la publication, comme toute image : 1 crédit par image en 16 et en 32, 4 crédits en 64. Six pouvoirs de cinq images en 64, c'est 120 crédits pour le créateur. Ce n'est pas une raison d'y renoncer, c'en est une de ne pas dessiner trente images pour un éclair.

9. La répartition

Le direct nourrit la créature. Chaque famille d'évènements donne des points, et la repartition dit quelle part, en pour cent, va à chaque état. Chaque ligne fait exactement 100, en entiers. Une famille absente donne un quart à chaque état. Le champ entier est facultatif.

"repartition": {
  "follow":     { "sante": 50, "force": 20, "precision": 10, "mana": 20 },
  "chat":       { "sante": 10, "force": 10, "precision": 40, "mana": 40 },
  "energies":   { "sante": 20, "force": 60, "precision": 10, "mana": 10 },
  "abonnement": { "sante": 40, "force": 10, "precision": 10, "mana": 40 },
  "raid":       { "sante": 10, "force": 50, "precision": 20, "mana": 20 }
}

Les familles : follow (followers), chat (messages), energies (bits, dons), abonnement (subs et subs offerts), raid.

Combien de familles régler. Laisser la répartition vide donne un quart à chaque état pour tout : la créature se nourrit alors de la même façon d'un message et d'un raid, ce qui n'apprend rien au streamer. Règle au moins deux familles dès le soigné, trois pour un chef-d'œuvre, et rends-les différentes l'une de l'autre — sinon autant tout laisser vide.

10. Les décors

Un décor se code comme un œuf, avec un genre, une seule étape, sans sous, sans condition, sans pouvoirs, sans répartition. Ses images ne déclenchent aucun pouvoir. Grille 16, 32 ou 64.

GenreCe que c'estSes animations
solUne bande au bas de l'écran, répétée sur la largeur.tuile-1, tuile-2, … jusqu'à 30, qui se suivent sans trou. Une seule tuile fait un motif répété. Chaque tuile est une animation : plusieurs images, elle bouge.
papierLe fond de l'écran, répété dans les deux sens.Les mêmes tuiles.
elementUne plante, une lampe, un objet posé où l'on veut.decor (obligatoire) et reaction (facultative : jouée une fois quand le direct s'emballe, par exemple un chat très actif ; le joueur règle le seuil dans l'atelier).
cadreUn cadre posé autour d'une zone de l'écran.decor et reaction.
tableauUne image accrochée au mur de l'overlay.decor et reaction.
{
  "nom": "Dalles de pierre", "genre": "sol", "grille": 32,
  "etapes": [ { "nom": "Dalles", "animations": {
    "tuile-1": { "palette": { "#": "#6b6b7a", "-": "#4a4a58" }, "images": [ [ … 32 rangées … ] ] },
    "tuile-2": { "palette": { "#": "#6b6b7a", "-": "#4a4a58" }, "images": [ [ … ] ] }
  } } ]
}

11. Toutes les limites

QuoiLimite
Grille16, 32 ou 64, la même pour tout l'œuf
Nom de l'œuf, d'une étape40 caractères ; les noms d'étapes sont uniques
Éclosions sous l'œuf8
Branches sous une étape10
Profondeur10 niveaux sous l'œuf
Animations par étape40 ; noms en minuscules, chiffres et tirets, 24 caractères
Images par animation8 par défaut (réglable par le studio)
Calques par image4
Pouvoirs par œuf16 ; nom de 24 caractères ; 8 pouvoirs cités au plus par image
Poids d'une étape1,5 Mo de JSON, images comprises
Tuiles d'un sol ou d'un papier peint30, numérotées sans trou
Usure0.5, 0.75, 1, 1.5, 2
Heures d'antenne dans une condition1 à 2000

12. Les erreurs les plus fréquentes

13. Un œuf complet en exemple

Un œuf en 16 × 16, réduit à l'essentiel : l'œuf, une éclosion avec repos et marche, une évolution et son repli.

{
  "nom": "Créature d'exemple",
  "grille": 16,
  "affinite": "force",
  "etapes": [
    {
      "nom": "Œuf",
      "animations": {
        "oeuf": {
          "palette": { "#": "#c8742a", "o": "#f2b27a" },
          "images": [
            [ "................", "................", "......####......", ".....#oooo#.....", "....#oooooo#....", "....#oooooo#....", "...#oooooooo#...", "...#oooooooo#...", "...#oooooooo#...", "...#oooooooo#...", "....#oooooo#....", "....#oooooo#....", ".....#oooo#.....", "......####......", "................", "................" ]
          ]
        }
      }
    },
    {
      "nom": "Braisillon",
      "sous": "Œuf",
      "animations": {
        "repos": {
          "palette": { "#": "#1a1a1a", "r": "#e8532a", "o": "#ffb347", "w": "#ffffff" },
          "images": [
            [ "................", "................", "......####......", ".....#rrrr#.....", "....#rrrrrr#....", "....#rwrrwr#....", "....#r#rr#r#....", "....#rrrrrr#....", ".....#rrrr#.....", "....#rrrrrr#....", "...#rrrrrrrr#...", "...#rrrrrrrr#...", "....#rrrrrr#....", ".....#o##o#.....", "......#..#......", "................" ],
            [ "................", "................", "................", "......####......", ".....#rrrr#.....", "....#rrrrrr#....", "....#rwrrwr#....", "....#r#rr#r#....", "....#rrrrrr#....", ".....#rrrr#.....", "....#rrrrrr#....", "...#rrrrrrrr#...", "...#rrrrrrrr#...", "....#rrrrrr#....", ".....#o##o#.....", "......#..#......" ]
          ]
        },
        "marche": {
          "palette": { "#": "#1a1a1a", "r": "#e8532a", "o": "#ffb347", "w": "#ffffff" },
          "images": [
            [ "................", "................", "......####......", ".....#rrrr#.....", "....#rrrrrr#....", "....#rrrwrw#....", "....#rrr#r##....", "....#rrrrrr#....", ".....#rrrr#.....", "....#rrrrrr#....", "...#rrrrrrrr#...", "...#rrrrrrrr#...", "....#rrrrrr#....", ".....#o#.#o#....", "....#..#..#.....", "................" ],
            [ "................", "................", "......####......", ".....#rrrr#.....", "....#rrrrrr#....", "....#rrrwrw#....", "....#rrr#r##....", "....#rrrrrr#....", ".....#rrrr#.....", "....#rrrrrr#....", "...#rrrrrrrr#...", "...#rrrrrrrr#...", "....#rrrrrr#....", ".....#o##o#.....", "......#..#......", "................" ]
          ]
        }
      }
    },
    {
      "nom": "Braisier",
      "sous": "Braisillon",
      "condition": { "minHeures": 10, "minJauge": { "force": 60 } },
      "animations": { "repos": { "palette": { "#": "#1a1a1a", "r": "#e8532a" }, "images": [ [ … 16 rangées … ] ] },
                      "marche": { "palette": { "#": "#1a1a1a", "r": "#e8532a" }, "images": [ [ … ], [ … ] ] } }
    },
    {
      "nom": "Cendrier",
      "sous": "Braisillon",
      "animations": { "repos": { "palette": { "#": "#1a1a1a", "g": "#8a8a8a" }, "images": [ [ … ] ] },
                      "marche": { "palette": { "#": "#1a1a1a", "g": "#8a8a8a" }, "images": [ [ … ], [ … ] ] } }
    }
  ]
}

Dans une vraie réponse, chaque « … » est remplacé par les rangées complètes : un code avec des points de suspension n'est pas un code.

← Retour à l'atelier de création · Accueil