Aller au contenu
MLBBDex

Écrire une analyse de héros

Les données du jeu se mettent à jour toutes seules ; le commentaire, lui, s'écrit.En savoir plus

Voici comment rédiger l'analyse d'un héros et la proposer au site.

Héros analysés
38
En attente d'une analyse
96

Ce que vous écrivez

Rôles, positions, compétences, skins, statistiques et builds joués arrivent par la synchronisation automatique du wiki et de l'API communautaire. Une analyse n'apporte que ce qu'aucune extraction ne produit : ce que le héros fait vraiment, ses forces et ses faiblesses, ses contres et des builds expliqués.

Les analyses s'écrivent en français, la langue d'origine du site. Chacune est une entrée TypeScript, ajoutée au fichier du rôle du héros dans src/data/heros/.

Les champs

Une analyse suit le type AnalyseHeros de src/lib/types.ts. Ses compétences et ses builds ont chacun leur propre forme.

L'analyse — AnalyseHeros

slugstring
Identifiant exact du héros, tel qu'il figure dans src/data/jeu/heros.json.
summarystring
Une phrase qui dit ce que le héros a de singulier. Elle sert aussi de meta description.
analysisstring
Deux paragraphes séparés par une ligne vide : ce que le héros fait réellement, puis ses limites.
skillsSkill[]
Les compétences dans l'ordre du jeu : passif, compétence 1, compétence 2, ultime. C'est l'ordre qui associe chaque description à la compétence du wiki.
strengthsstring[]
Trois à cinq points courts, observables en partie.
weaknessesstring[]
Trois à cinq points courts, avec ce qui les exploite.
strongAgainststring[]
Slugs des héros face auxquels il est à l'aise.
weakAgainststring[]
Slugs des héros qui le mettent en difficulté.
buildsBuild[]
Un ou plusieurs builds, chacun avec son contexte.

Une compétence — Competence

type"Passive" | "Skill 1" | "Skill 2" | "Ultimate"
Emplacement de la compétence.
namestring
Nom anglais, comme en jeu. Le site affiche celui du wiki.
descriptionstring
Ce que la compétence permet et quand s'en servir, sans valeurs de dégâts.
cooldownnumber[] · facultatif
Recharge par niveau, en secondes. Absente pour un passif.
costnumber[] · facultatif
Coût par niveau. Absent si le héros n'utilise pas de mana.

Un build — Build

namestring
Nom court du build.
contextstring
Quand choisir ce build. Un build sans contexte n'apprend rien à personne.
itemsstring[]
Six objets, avec leur nom anglais, dans l'ordre d'achat.
emblemstring
Emblème conseillé, nommé comme dans les analyses existantes (« Emblème de mage »).
talentstring
Talent principal de l'emblème, nom anglais.
spellstring
Sort de combat, nom anglais.

Modèle annoté

Recopiez ce modèle à la fin de la liste du fichier de rôle, remplissez-le, puis retirez ses commentaires. npm run typecheck le vérifie à chaque passage : il suit toujours le type en vigueur.

import type { HeroAnalysis } from "@/lib/types";

/**
 * Hero analysis template.
 *
 * Copy it into the file of the hero's role (`src/data/heroes/tanks.ts`,
 * `fighters.ts`, `assassins.ts`, `mages.ts`, `marksmen.ts` or `supports.ts`),
 * fill it in, then strip its comments. It is imported nowhere:
 * `npm run typecheck` only checks it, which keeps it in line with the
 * `HeroAnalysis` type.
 *
 * Displayed text is written in French, with its accents. Item, skill, talent
 * and spell names stay in English, as in the game.
 * Nothing is copied from another site. Full guide: /fr/contribute.
 */
export const template: HeroAnalysis = {
  // Exact slug, as it appears in src/data/game/heroes.json.
  slug: "slug-du-heros",

  // One sentence: what sets the hero apart. Reused as the meta description.
  summary: "Une phrase qui dit ce que le héros a de singulier.",

  // Two paragraphs separated by a blank line: what the hero actually does,
  // then its limits. Observable facts, no superlatives.
  analysis:
    "Premier paragraphe : le plan de jeu du héros, ce qu'il fait réellement en partie.\n\n" +
    "Second paragraphe : ses limites, et ce qui les expose.",

  // Game order: passive, skill 1, skill 2, ultimate. The order is what pairs
  // each description with the wiki skill, whose name is the one that is
  // displayed.
  skills: [
    {
      type: "Passive",
      // English name, as in the game.
      name: "Passive Name",
      // The effect and how to use it, without damage values: they change
      // almost every patch. No cooldown or cost for a passive.
      description: "Ce que le passif change à la façon de jouer le héros.",
    },
    {
      type: "Skill 1",
      name: "First Skill Name",
      description: "Ce que la compétence permet, et quand s'en servir.",
      // Cooldown per level, in seconds.
      cooldown: [8, 7.5, 7, 6.5, 6, 5.5],
      // Cost per level; omit it if the hero does not use mana.
      cost: [60, 65, 70, 75, 80, 85],
    },
    {
      type: "Skill 2",
      name: "Second Skill Name",
      description: "Ce que la compétence permet, et ce qui la rend dangereuse ou fragile.",
      cooldown: [12, 11, 10, 9, 8, 7],
      cost: [70, 75, 80, 85, 90, 95],
    },
    {
      type: "Ultimate",
      name: "Ultimate Name",
      description: "Ce que l'ultime change à un combat, et le bon moment pour le lancer.",
      cooldown: [40, 35, 30],
      cost: [120, 140, 160],
    },
  ],

  // Three to five short points, observable in a match.
  strengths: ["Une force concrète, visible en partie"],
  // Three to five short points, with what exploits them.
  weaknesses: ["Une faiblesse concrète, et ce qui la punit"],

  // Slugs, not names: heroes it is comfortable against…
  strongAgainst: ["slug-adverse"],
  // … and heroes that give it trouble.
  weakAgainst: ["autre-slug"],

  builds: [
    {
      name: "Nom court du build",
      // When to pick this build: a build without context teaches nothing.
      context: "La situation dans laquelle ce build s'impose, et ce qu'il sacrifie.",
      // Six items, English in-game names, in purchase order.
      items: ["Item One", "Item Two", "Item Three", "Item Four", "Item Five", "Item Six"],
      // Emblems named as in the existing analyses.
      emblem: "Emblème de mage",
      // Main talent and battle spell, English names.
      talent: "Lethal Ignition",
      spell: "Flicker",
    },
  ],
};
Voir le modèle sur GitHub

Règles de style

  • Des accents partout où le français en demande : le texte d'une analyse est affiché aux visiteurs, même si le code du projet s'en passe.
  • Les termes du jeu restent en anglais : objets, compétences, talents et sorts gardent le nom que le joueur retrouve en partie (« Winter Crown », « Flicker »).
  • Rien de copié : ni wiki, ni guide, ni vidéo. Une analyse reprise d'ailleurs, même reformulée de près, sera refusée.
  • Pas de valeurs de dégâts : elles changent presque à chaque patch. Décrivez l'effet, pas le chiffre.
  • Du concret plutôt que des superlatifs : « il gagne les combats longs tant que l'adversaire n'achète pas de réduction de soins » vaut mieux que « il est très fort ».

La relecture, par pull request

  1. Forkez le dépôt GitHub et créez une branche pour votre analyse.
  2. Ajoutez l'entrée au fichier du rôle : tanks.ts, fighters.ts, assassins.ts, mages.ts, marksmen.ts ou supports.ts.
  3. Lancez npm run lint, npm run typecheck et npm test. La vérification automatique les relancera de toute façon.
  4. Ouvrez une pull request au titre explicite, à l'impératif : « ajoute l'analyse de Ling ».
  5. Un mainteneur relit le fond et la forme — exactitude au patch courant, style, originalité — et commente la pull request si quelque chose doit changer.
  6. Une fois fusionnée, l'analyse est en ligne au déploiement suivant, et votre nom reste dans l'historique du dépôt.