2 puntos por GN⁺ 2024-08-27 | 1 comentarios | Compartir por WhatsApp
  • Vim Racer es un juego en línea en el que debes encontrar rápidamente puntos objetivo dentro de un texto usando comandos de movimiento de Vim, lo que permite practicar el dominio de comandos en formato de competencia por récords
  • Cada vez que llegas a un objetivo aparece el siguiente, y la carrera de 12 objetivos se realiza combinando comandos de movimiento de Vim como w y 3j
  • Activar la opción relative lines facilita practicar movimientos basados en números de línea relativos, lo que ayuda a reducir la necesidad de ingresar números de línea absolutos largos en archivos grandes
  • El leaderboard rechaza récords de menos de 1 segundo para medir la capacidad de navegación manual, y también limita los cambios de nombre de usuario a una vez por hora
  • Se pueden ver las teclas presionadas por quienes obtienen puntajes altos y tips por carrera, por lo que también puede usarse como material de aprendizaje de movimientos de Vim, más allá de ser un simple juego

Un juego de velocidad para competir con comandos de movimiento de Vim

  • El objetivo de Vim Racer es moverse a todos los objetivos lo más rápido posible
    • Al llegar a un objetivo, aparece el siguiente
    • Los objetivos se muestran como A
    • Se pueden usar todos los comandos de movimiento de Vim, por lo que lograr un buen tiempo depende en gran medida de elegir comandos de movimiento eficientes
  • Para iniciar una carrera, haz clic en reset
    • Después del clic, el foco del navegador pasa al editor y puedes usar de inmediato comandos de movimiento de Vim como w
  • La pantalla actual muestra Race Level: 12 Targets (Burn Detector), Race Mode: Standard y Navigations: 0/12
  • Reciben feedback a través de la comunidad de Reddit

Configuración y restricciones operativas

  • relative lines puede activarse desde la configuración con el ícono de engranaje en la parte superior izquierda del editor
    • Es útil si prefieres anteponer al comando la cantidad de movimientos relativos, como en 3j
    • En archivos grandes, puede ser más rápido que escribir 1230gg
    • Un ejemplo de configuración local es mostrar el número de línea absoluto solo en la línea del cursor y usar números de línea relativos para el resto
  • Las donaciones se usan actualmente para financiar el servidor de vim-racer y una actualización de la base de datos
    • La base de datos actual es DynamoDB
    • DynamoDB tiene un nivel gratuito útil para iniciar un sitio pequeño, pero implica restricciones funcionales a cambio de eficiencia de costos
    • El objetivo principal actual es actualizar a una base de datos SQL, y el costo de la instancia más pequeña es de alrededor de 100 dólares al año
    • Las donaciones anteriores se están reinvirtiendo en fuentes de ingresos recurrentes para vim-racer
    • El primer donante fue ThePrimeagen

Leaderboard y uso para aprendizaje

  • El leaderboard rechaza récords de menos de 1 segundo
    • El usuario how muestra que incluso récords de menos de 2 segundos pueden ser legítimos
    • El juego busca medir qué tan bien los usuarios navegan manualmente por el texto
    • Los récords de <20ms demuestran habilidad usando Vim, pero no encajan con el propósito del juego
    • En el futuro podrían aparecer no solo variantes de objetivos, sino también otros tipos de juego o leaderboards capped/uncapped
    • Por ahora, debido a recursos de desarrollo limitados, la idea es mantener en el leaderboard los puntajes obtenidos mediante navegación pura
  • En lugar de crear cuentas completas, el nombre de usuario solo puede cambiarse una vez por hora
    • Esta limitación busca evitar que el leaderboard se llene en exceso
  • Vim Racer también puede usarse para aprender movimientos de Vim
    • Cada tipo de carrera ofrece tips para aprender rutas que permiten moverse eficientemente hacia los objetivos
    • Cada entrada del leaderboard incluye las teclas que usó la persona con puntaje alto
    • Los usuarios pueden analizar esa secuencia de teclas para aprender nuevos comandos de movimiento de Vim y mejorar sus habilidades de navegación

1 comentarios

 
GN⁺ 2024-08-27
Opiniones en Hacker News
  • Entré en la tabla de posiciones del nivel jpeg con 17 segundos, y como juego competitivo fue realmente divertido.
    Jugué moviéndome por instinto para llegar a la posición solicitada, sin optimizar, y aun así lo disfruté; en particular, la función que muestra el proceso de movimiento en las partidas de la tabla de posiciones parece útil también como material de aprendizaje.
    Eso sí, en los primeros puestos hay un registro de 1 segundo, menos de 0.05 segundos por movimiento, así que no parece humanamente posible. Parece que usan entrada por script, y en esta interfaz sería difícil impedirlo; si el ranking se ordenara por cantidad de teclas presionadas en vez de por tiempo transcurrido, subiría la persona más eficiente y no la más rápida, y el cheating con scripts perdería sentido.

    • Hasta cierto punto se puede buscar la combinación más corta de comandos para llegar a esa posición.
    • Me pregunto si usó %. Yo, incluso torpemente, bajé hasta 6.5 segundos.
    • VimGolf lo hace de esa manera.
  • Realmente excelente.
    Sería bueno que hubiera un modo para minimizar la cantidad de teclas presionadas en lugar de la velocidad. Entonces lo competitivo no sería machacar hjkl rápido, sino una solución optimizada al estilo Vim golf.
    Un bug simple: en la tabla de posiciones, el carácter ` aparece como “Unsupported”. Se nota especialmente al seguir el Duff's device que usa marcas.

    • Gran hallazgo, gracias. No tenía claro qué faltaba.
      Probablemente lo estoy manejando con una lista de permitidos, así que bastaría con agregarlo ahí.
  • Un juego que, una vez que empiezas, no puedes dejar.

    • ¿Será porque no se puede salir de Vim? :-)
    • Quizá algún día tenga que agregar un easter egg de :q.
  • Muy divertido. Me pregunto si conocen más juegos de Vim como este.
    Siempre quise usar Vim, pero como usuario de evil mode en Emacs todavía no soy rápido.

  • Parece que el sitio está roto de alguna forma. Haga lo que haga, no pasa nada; lo probé tanto en Chrome como en Firefox.

    • Cuando probé Vim por primera vez también se sentía así, así que tal vez sea una implementación realista.
    • Perdón. Parece que hay un problema con el pipeline de despliegue.
      Antes hacía la transición sin problemas, pero ahora tengo que invalidar la caché manualmente. Parece ocurrir solo en algunos despliegues.
    • Tengo el mismo problema. En Chrome también consume mucha CPU, pero no pasa nada y no responde a ninguna tecla.
  • Realmente genial. Eso sí, en una etapa posterior borré una línea que el programa iba a usar como objetivo y hubo un crash.

    • Fue un bug difícil de arreglar. Por configuración, no debería ser posible borrar, pero parece que la biblioteca de key bindings de VIM lo sobrescribe.
      De todos modos, gracias por avisar; ayuda a priorizarlo.
  • La función de ver cómo lo hicieron otras personas mediante la tabla de posiciones es muy útil.

  • Quiero probarlo, pero los números de línea siguen al cursor. Parece un bug; ¿me estoy perdiendo algo? No he usado mucho Vim, pero normalmente, aunque sea lento, puedo moverme.
    Lo probé en Chrome y Firefox.

    • Esa es una opción de Vim llamada números de línea relativos.
    • Ahora hice que esa configuración sea configurable, y cambié el valor predeterminado a los números de línea normales de Vim.
      Gracias al feedback, esto subió de prioridad.
    • En tu Vim local puedes probarlo así:
      set rnu
      Es muy cómodo para movimientos relativos como 5j o 12k :)
  • Es divertido. Sería excelente que agregaran una visualización de la cantidad de teclas presionadas y un modo en el que haya que minimizar esa cantidad en vez de ir más rápido.
    También estaría bueno que la descripción del juego explique más claramente qué es “target”.

    • Buen punto. En el próximo release pondré una explicación mejor.
      La cantidad de teclas presionadas me genera dudas, porque realmente quiero que el foco de este juego esté en la velocidad. VimGolf ya cubre bien ese tipo de puzzles y escenarios, y lo que diferencia a esto es la velocidad.
      En cambio, quiero analizar los datos de entrada de teclas. Por ejemplo, podría resultar que www sea más rápido que f. Mi hipótesis inicial era que buscar con f y F no era más eficiente que movimientos comunes como w, e, h, j, pero ya parece ser falsa. Aunque quizá habría que expresarlo más bien como “una proporción considerable de los primeros puestos usa f y F”, lo cual podría significar que son rápidos o, al menos, que esas teclas no suponen una gran desventaja.
    • Me gustaría mucho que agregaran minimización de teclas presionadas como elemento competitivo. Parte de lo atractivo de Vim es la velocidad, sí, pero también que reduce la cantidad de teclas necesarias para ir a algún lugar o hacer algo.
      Aunque eso no sea lo mismo que velocidad pura, comparado con otros editores se traduce en comodidad de uso y es muy importante para la experiencia de escritura.
  • Es un juego pésimo, pero muestra bien una cosa: moverse en Vim sin Easymotion es como competir a pie, no en un auto de carreras.