Retour aux notes

Notes

ASCIImotion : ingénierie de la grille

Comment ASCIImotion transforme une grille de caractères en produit navigateur utilisable

ASCIImotion : ingénierie de la grille

ASCIImotion : ingénierie de la grille

Travailler avec l’ASCII n’est pas seulement nostalgique. C’est construire dans une contrainte stricte : une grille de caractères. Quand on retire pixels et gradients, il reste un médium indépendant de la résolution, léger et lisible partout.

Construire ASCIImotion a consisté à rendre cette contrainte praticable dans un navigateur sans sur-ingénierie.

Le goulot d’étranglement du rendu

Mettre à jour des milliers de nœuds DOM à 30 fps est une recette pour une interface lente. Nous avons ignoré la voie “propre” des cycles de composants complexes pour choisir la route directe : traiter tout le canvas ASCII comme une seule chaîne mise à jour d’un bloc.

C’est brutal, mais efficace. En ASCII, le timing est binaire : 50 ms de retard ne sont pas seulement une frame perdue, c’est une rupture visuelle.

Le piège des polices

Le plus grand facteur variable dans l’ASCII art est la police. Un rendu dense dans Consolas peut devenir bancal dans JetBrains Mono à cause de ratios différents.

Plutôt que de créer une abstraction lourde autour des métriques de police, nous avons travaillé le cœur de la densité : le contraste entre un “@” et un “.”. L’outil reste agnostique côté police et laisse le contexte final à l’utilisateur.

Expérience utilisateur

Le temps principal n’a pas été passé sur des “features”, mais sur le fait que l’éditeur ne gêne pas le travail :

  • Export direct : partir du format de sortie. Si l’outil ne produit pas une chaîne ou un tableau propre, le reste ne compte pas.
  • État simple : pas de librairie d’état lourde. Undo/redo et frames reposent sur des snapshots simples, rapides et prévisibles.

ASCIImotion est open source et disponible sur asciimotion.gx2-studio.com