2 points par GN⁺ 2024-08-27 | 1 commentaires | Partager sur WhatsApp
  • Vim Racer est un jeu en ligne où l’on atteint rapidement des cibles dans un texte à l’aide des commandes de déplacement de Vim, afin de s’entraîner sous forme de compétition chronométrée à la maîtrise de ces commandes
  • À chaque cible atteinte, la suivante apparaît, et l’on enchaîne une course de 12 cibles en combinant des commandes de déplacement Vim comme w ou 3j
  • En activant le réglage relative lines, il devient plus facile de s’entraîner aux déplacements basés sur les numéros de ligne relatifs, ce qui aide à réduire la saisie de longs numéros de ligne absolus dans les gros fichiers
  • Le classement refuse les temps inférieurs à 1 seconde afin de mesurer la navigation manuelle, et le changement de nom d’utilisateur est limité à une fois par heure
  • Il est possible de voir les frappes des meilleurs scores et des conseils par course, ce qui en fait non seulement un jeu, mais aussi une ressource d’apprentissage des déplacements Vim

Jeu de vitesse autour des commandes de déplacement Vim

  • L’objectif de Vim Racer est d’atteindre toutes les cibles le plus vite possible
    • Lorsqu’une cible est atteinte, la suivante apparaît
    • Les cibles sont affichées sous la forme A
    • Toutes les commandes de déplacement de Vim peuvent être utilisées, et les meilleurs temps dépendent donc fortement du choix des commandes les plus efficaces
  • Pour démarrer une course, il faut cliquer sur reset
    • Après le clic, le focus du navigateur passe à l’éditeur, ce qui permet d’utiliser immédiatement des commandes de déplacement Vim comme w
  • L’écran actuel affiche Race Level: 12 Targets (Burn Detector), Race Mode: Standard, Navigations: 0/12
  • Les retours sont recueillis via la communauté Reddit

Réglages et contraintes d’exploitation

  • relative lines peut être activé dans les paramètres via l’icône en forme d’engrenage en haut à gauche de l’éditeur
    • C’est utile si l’on préfère saisir un nombre de déplacements relatifs avant la commande, comme 3j
    • Dans un gros fichier, cela peut être plus rapide que de saisir 1230gg
    • Un exemple de configuration locale consiste à afficher le numéro de ligne absolu uniquement sur la ligne du curseur, et des numéros de ligne relatifs pour toutes les autres
  • Les dons servent actuellement à financer la mise à niveau du serveur vim-racer et de la base de données
    • La base de données actuelle est DynamoDB
    • DynamoDB est pratique avec son offre gratuite pour lancer un petit site, mais impose des limites fonctionnelles au détriment du rapport coût-efficacité
    • L’objectif principal actuel est une migration vers une base de données SQL, et le coût de la plus petite instance est d’environ 100 dollars par an
    • Les dons précédents sont réinvestis dans les revenus récurrents de vim-racer
    • Le premier donateur est ThePrimeagen

Classement et usage pédagogique

  • Le classement refuse les temps inférieurs à 1 seconde
    • L’utilisateur how montre que des temps inférieurs à 2 secondes peuvent aussi être légitimes
    • Le jeu cherche à mesurer à quel point l’utilisateur sait naviguer manuellement dans le texte
    • Les temps <20ms montrent une maîtrise de Vim, mais ne correspondent pas à l’objectif du jeu
    • À l’avenir, il pourrait y avoir non seulement des variations de cibles, mais aussi d’autres types de jeux ou des classements capped/uncapped
    • Pour l’instant, les ressources de développement étant limitées, la direction retenue est de ne laisser au classement que les scores obtenus par navigation pure
  • Le nom d’utilisateur ne peut être modifié qu’une fois par heure, sans création de compte complète
    • Cette limite vise à éviter que le classement ne soit rempli de manière excessive
  • Vim Racer peut aussi servir à l’apprentissage des déplacements Vim
    • Chaque type de course fournit des conseils pour apprendre les itinéraires les plus efficaces vers les cibles
    • Chaque entrée du classement inclut les frappes utilisées par les meilleurs scores
    • Les utilisateurs peuvent analyser ces séquences de touches pour apprendre de nouvelles commandes de déplacement Vim et améliorer leur navigation

1 commentaires

 
GN⁺ 2024-08-27
Avis sur Hacker News
  • Je suis entré dans le classement du niveau jpeg avec 17 secondes, et c’était vraiment amusant comme jeu compétitif.
    J’ai joué en me déplaçant instinctivement vers la position demandée, sans optimisation, et c’était quand même plaisant ; en particulier, la fonction qui montre le déroulé des déplacements des parties du classement semble aussi utile comme support d’apprentissage.
    Cela dit, il y a un score d’une seconde tout en haut, soit moins de 0,05 seconde par déplacement, ce qui ne paraît pas humainement possible. On dirait qu’ils utilisent des entrées scriptées, et comme ce sera difficile à empêcher dans cette interface, classer les joueurs au nombre de frappes plutôt qu’au temps écoulé ferait monter non pas le plus rapide, mais le plus efficace, et rendrait aussi la triche par script moins pertinente.

    • On peut, dans une certaine mesure, rechercher la combinaison de commandes la plus courte pour atteindre cette position.
    • Je me demande s’il a utilisé %. Même en m’y prenant maladroitement, je suis descendu à 6,5 secondes.
    • VimGolf fonctionne de cette façon.
  • Vraiment excellent.
    Ce serait bien d’avoir un mode qui consiste à minimiser le nombre de frappes plutôt que la vitesse. La compétition porterait alors sur une solution optimisée façon Vim golf, et non sur du martelage rapide de hjkl.
    Petit bug : dans le classement, le caractère ` s’affiche comme « Unsupported ». C’est particulièrement visible quand on suit un Duff's device qui utilise des marques.

    • Belle trouvaille, merci. Je n’étais pas sûr de ce qui manquait.
      C’est probablement géré via une liste d’autorisation, donc il devrait suffire de l’y ajouter.
  • Un jeu impossible à arrêter une fois commencé.

    • Parce qu’on ne peut pas quitter Vim ? :-)
    • Il faudra peut-être que j’ajoute un jour un easter egg :q.
  • Vraiment amusant. Je me demande si vous connaissez d’autres jeux Vim de ce genre.
    J’ai toujours voulu utiliser Vim, mais comme j’utilise le mode evil d’Emacs, je ne suis pas encore rapide.

    • Il y a Vim Adventure. C’est plus un tutoriel qu’un jeu, mais c’est quand même pas mal : https://vim-adventures.com/
    • vimgolf.com est un classique.
  • Le site semble cassé quelque part. Quoi que je fasse, rien ne réagit ; j’ai essayé avec Chrome et Firefox.

    • C’est aussi l’impression que j’ai eue quand j’ai découvert Vim, donc c’est peut-être une implémentation réaliste.
    • Désolé. Il semble y avoir un problème côté pipeline de déploiement.
      Avant, la bascule se faisait en douceur, mais maintenant je dois invalider le cache manuellement. Cela semble n’arriver que sur certains déploiements.
    • Même problème. Dans Chrome, le CPU est aussi très sollicité, mais rien ne se passe et aucune touche ne répond.
  • Vraiment chouette. En revanche, à une étape avancée, j’ai supprimé une ligne que le programme devait viser plus tard, et ça a provoqué un crash.

    • C’est un bug qui a été difficile à corriger. D’après la configuration, la suppression devrait être impossible, mais la bibliothèque de raccourcis clavier VIM semble passer outre.
      Merci quand même de l’avoir signalé, ça aide à prioriser.
  • La possibilité de voir via le classement comment les autres s’y sont pris est très utile.

  • J’aimerais essayer, mais les numéros de ligne suivent le curseur. Ça ressemble à un bug ; est-ce que j’ai raté quelque chose ? Je n’ai pas beaucoup utilisé Vim, mais normalement je peux au moins me déplacer, même lentement.
    J’ai essayé avec Chrome et Firefox.

    • C’est une option Vim appelée numérotation relative des lignes.
    • J’ai maintenant rendu ce réglage configurable, et la valeur par défaut va repasser aux numéros de ligne Vim classiques.
      Vos retours ont fait remonter la priorité de ce changement.
    • Dans votre Vim local, vous pouvez essayer ceci :
      set rnu
      C’est vraiment pratique pour les déplacements relatifs comme 5j ou 12k :)
  • Amusant. Ce serait excellent d’ajouter un affichage du nombre de frappes, ainsi qu’un mode où il faut minimiser le nombre de frappes plutôt qu’aller plus vite.
    Ce serait bien aussi que la description du jeu explique plus clairement ce qu’est la « target ».

    • Bonne remarque. J’ajouterai une meilleure explication dans la prochaine version.
      Pour le nombre de frappes, j’hésite. Je veux vraiment que ce jeu soit centré sur la vitesse. VimGolf couvre déjà très bien ce genre de puzzles et de scénarios, et ici la différence, c’est la vitesse.
      En revanche, j’aimerais analyser les données de frappes. Par exemple, on pourrait découvrir que www est plus rapide que f. Mon hypothèse initiale était que chercher avec f et F n’était pas aussi efficace que des déplacements courants comme w, e, h, j, mais elle semble déjà fausse. Cela dit, il faudra sans doute le formuler plutôt comme « une bonne partie du haut du classement utilise f et F », ce qui peut signifier qu’ils sont rapides, ou au moins que ces touches ne pénalisent pas beaucoup.
    • J’aimerais vraiment que la minimisation des frappes soit ajoutée comme élément compétitif. Ce qui rend Vim attirant, ce n’est pas seulement la vitesse, mais aussi le fait de réduire le nombre de touches nécessaires pour aller quelque part ou faire quelque chose.
      Même si ce n’est pas la même chose que la vitesse pure, cela contribue au confort d’utilisation par rapport à d’autres éditeurs, et c’est très important dans l’expérience de frappe.
  • C’est un jeu nul, mais il montre bien une chose : se déplacer dans Vim sans Easymotion, c’est comme faire une course à pied au lieu d’utiliser une voiture de course.