Write a hero analysis
Game data updates itself; commentary has to be written. Here is how to write a hero analysis and submit it to the site.
- Heroes analysed
- 18
- Awaiting an analysis
- 115
What you write
Roles, lanes, skills, skins, statistics and popular builds come from the automatic sync with the wiki and the community API. An analysis adds only what no extraction produces: what the hero really does, strengths and weaknesses, counters and explained builds.
Analyses are written in French, the site's original language. Each one is a TypeScript entry added to the hero's role file in src/data/heros/.
The fields
An analysis follows the AnalyseHeros type in src/lib/types.ts. Its skills and builds each have their own shape.
The analysis — AnalyseHeros
slugstring- The hero's exact identifier, as listed in
src/data/jeu/heros.json. resumestring- One sentence on what makes the hero unique. It is also used as the meta description.
analysestring- Two paragraphs separated by a blank line: what the hero actually does, then their limits.
competencesCompetence[]- Skills in game order: passive, skill 1, skill 2, ultimate. The order is what matches each description to the wiki skill.
forcesstring[]- Three to five short points, visible in a match.
faiblessesstring[]- Three to five short points, with what exploits them.
fortContrestring[]- Slugs of heroes this hero handles comfortably.
faibleContrestring[]- Slugs of heroes that give this hero trouble.
buildsBuild[]- One or more builds, each with its context.
A skill — Competence
type"Passif" | "Competence 1" | "Competence 2" | "Ultime"- Skill slot.
nomstring- English name, as in game. The site displays the wiki's name.
descriptionstring- What the skill does and when to use it, without damage values.
rechargenumber[] · optional- Cooldown per level, in seconds. Omitted for a passive.
coutnumber[] · optional- Cost per level. Omitted if the hero does not use mana.
A build — Build
nomstring- Short name for the build.
contextestring- When to pick this build. A build without context teaches nobody anything.
objetsstring[]- Six items, by their English name, in buying order.
emblemestring- Recommended emblem, named as in existing analyses ("Emblème de mage").
talentstring- Main emblem talent, English name.
sortstring- Battle spell, English name.
Annotated template
Copy this template to the end of the role file's list, fill it in, then remove its comments. npm run typecheck checks it on every run, so it always follows the current type.
import type { AnalyseHeros } from "@/lib/types";
/**
* Modele d'analyse de heros.
*
* A recopier dans le fichier du role du heros (`src/data/heros/tanks.ts`,
* `fighters.ts`, `assassins.ts`, `mages.ts`, `marksmen.ts` ou `supports.ts`),
* a remplir, puis a debarrasser de ses commentaires. Il n'est importe nulle
* part : `npm run typecheck` le verifie seulement, ce qui le garde conforme au
* type `AnalyseHeros`.
*
* Le texte affiche s'ecrit en francais, avec ses accents. Les noms d'objets,
* de competences, de talents et de sorts restent en anglais, comme en jeu.
* Rien ne se recopie d'un autre site. Guide complet : /fr/contribute.
*/
export const modele: AnalyseHeros = {
// Slug exact, tel qu'il figure dans src/data/jeu/heros.json.
slug: "slug-du-heros",
// Une phrase : ce que le heros a de singulier. Reprise en meta description.
resume: "Une phrase qui dit ce que le héros a de singulier.",
// Deux paragraphes separes par une ligne vide : ce que le heros fait
// reellement, puis ses limites. Des faits observables, pas de superlatifs.
analyse:
"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.",
// Ordre du jeu : passif, competence 1, competence 2, ultime. C'est l'ordre
// qui apparie chaque description a la competence du wiki, dont le nom est
// celui qui s'affiche.
competences: [
{
type: "Passif",
// Nom anglais, comme en jeu.
nom: "Passive Name",
// L'effet et son usage, sans valeurs de degats : elles changent presque
// a chaque patch. Ni recharge ni cout pour un passif.
description: "Ce que le passif change à la façon de jouer le héros.",
},
{
type: "Competence 1",
nom: "First Skill Name",
description: "Ce que la compétence permet, et quand s'en servir.",
// Recharge par niveau, en secondes.
recharge: [8, 7.5, 7, 6.5, 6, 5.5],
// Cout par niveau ; a omettre si le heros n'utilise pas de mana.
cout: [60, 65, 70, 75, 80, 85],
},
{
type: "Competence 2",
nom: "Second Skill Name",
description: "Ce que la compétence permet, et ce qui la rend dangereuse ou fragile.",
recharge: [12, 11, 10, 9, 8, 7],
cout: [70, 75, 80, 85, 90, 95],
},
{
type: "Ultime",
nom: "Ultimate Name",
description: "Ce que l'ultime change à un combat, et le bon moment pour le lancer.",
recharge: [40, 35, 30],
cout: [120, 140, 160],
},
],
// Trois a cinq points courts, observables en partie.
forces: ["Une force concrète, visible en partie"],
// Trois a cinq points courts, avec ce qui les exploite.
faiblesses: ["Une faiblesse concrète, et ce qui la punit"],
// Des slugs, pas des noms : heros face auxquels il est a l'aise…
fortContre: ["slug-adverse"],
// … et heros qui le mettent en difficulte.
faibleContre: ["autre-slug"],
builds: [
{
nom: "Nom court du build",
// Quand choisir ce build : un build sans contexte n'apprend rien.
contexte: "La situation dans laquelle ce build s'impose, et ce qu'il sacrifie.",
// Six objets, noms anglais du jeu, dans l'ordre d'achat.
objets: ["Item One", "Item Two", "Item Three", "Item Four", "Item Five", "Item Six"],
// Emblemes nommes comme dans les analyses existantes.
embleme: "Emblème de mage",
// Talent principal et sort de combat, noms anglais.
talent: "Lethal Ignition",
sort: "Flicker",
},
],
};
View the template on GitHubStyle rules
- French accents wherever the language needs them: the analysis text is shown to visitors, even though the project's code goes without.
- Game terms stay in English: items, skills, talents and spells keep the name players see in game ("Winter Crown", "Flicker").
- Nothing copied: no wiki, guide or video. An analysis taken from elsewhere, even closely reworded, will be rejected.
- No damage values: they change almost every patch. Describe the effect, not the number.
- Concrete over superlatives: "he wins long fights as long as the enemy doesn't buy healing reduction" beats "he is very strong".
Review, through a pull request
- Fork the GitHub repository and create a branch for your analysis.
- Add the entry to the role file:
tanks.ts,fighters.ts,assassins.ts,mages.ts,marksmen.tsorsupports.ts. - Run
npm run lint,npm run typecheckandnpm test. Automated checks will run them again anyway. - Open a pull request with a clear title in the imperative, in French: "ajoute l'analyse de Ling".
- A maintainer reviews substance and form — accuracy for the current patch, style, originality — and comments on the pull request if something needs to change.
- Once merged, the analysis goes live with the next deployment, and your name stays in the repository history.