2 pontos por GN⁺ 2024-08-27 | 1 comentários | Compartilhar no WhatsApp
  • Vim Racer é um jogo online em que você encontra rapidamente pontos-alvo em um texto usando comandos de movimento do Vim, permitindo praticar no formato de competição por tempo enquanto aperfeiçoa os comandos
  • Cada vez que você alcança um alvo, o próximo aparece, e a corrida de 12 alvos é feita combinando comandos de movimento do Vim como w e 3j
  • Ao ativar a configuração relative lines, fica mais fácil praticar movimentos com base em números de linha relativos, o que ajuda a reduzir a necessidade de digitar números de linha absolutos longos em arquivos grandes
  • Para medir a habilidade de navegação manual, o leaderboard rejeita tempos abaixo de 1 segundo, e a mudança de nome de usuário também é limitada a uma vez por hora
  • É possível ver as teclas usadas pelos melhores colocados e dicas para cada tipo de corrida, então ele pode ser usado não só como jogo, mas também como material de aprendizado de movimentação no Vim

Jogo de velocidade disputado com comandos de movimento do Vim

  • O objetivo do Vim Racer é chegar a todos os alvos o mais rápido possível
    • Quando você alcança um alvo, o próximo aparece
    • Os alvos são mostrados como A
    • Todos os comandos de movimento do Vim podem ser usados, então um tempo rápido depende bastante da escolha eficiente dos comandos de navegação
  • Para começar uma corrida, clique em reset
    • Após o clique, o foco do navegador vai para o editor, permitindo usar imediatamente comandos de movimento do Vim como w
  • A tela atual mostra Race Level: 12 Targets (Burn Detector), Race Mode: Standard e Navigations: 0/12
  • O feedback é recebido por meio da comunidade no Reddit

Configurações e restrições de operação

  • relative lines pode ser ativado nas configurações pelo ícone de engrenagem no canto superior esquerdo do editor
    • É útil se você prefere colocar uma contagem de movimento relativa antes do comando, como em 3j
    • Em arquivos grandes, isso pode ser mais rápido do que digitar 1230gg
    • Um exemplo de configuração local é mostrar o número absoluto apenas na linha do cursor e usar números relativos nas demais
  • As doações estão sendo usadas atualmente para financiar upgrades do servidor do vim-racer e do banco de dados
    • O banco de dados atual é o DynamoDB
    • O DynamoDB tem uma camada gratuita útil para começar um site pequeno, mas traz limitações de funcionalidade em vez de eficiência de custo
    • O principal objetivo no momento é migrar para um banco de dados SQL, e o custo da menor instância é de cerca de 100 dólares por ano
    • Doações anteriores estão sendo reinvestidas na fonte de receita recorrente do vim-racer
    • O primeiro doador foi ThePrimeagen

Leaderboard e uso para aprendizado

  • O leaderboard rejeita tempos abaixo de 1 segundo
    • O usuário how mostra que tempos abaixo de 2 segundos ainda podem ser legítimos
    • O jogo busca medir o quão bem o usuário navega manualmente pelo texto
    • Tempos de <20ms demonstram habilidade com Vim, mas não combinam com a proposta do jogo
    • No futuro, podem surgir não só variações de alvos, mas também outros tipos de jogo ou leaderboards capped/uncapped
    • Por enquanto, como os recursos de desenvolvimento são limitados, a direção é manter no leaderboard pontuações obtidas por navegação pura
  • O nome de usuário pode ser alterado apenas uma vez por hora, sem a necessidade de criar uma conta completa
    • Essa limitação existe para evitar que o leaderboard fique excessivamente lotado
  • O Vim Racer também pode ser usado para aprender movimentação no Vim
    • Cada tipo de corrida oferece dicas para aprender rotas eficientes até os alvos
    • Cada entrada do leaderboard inclui as teclas usadas pelos melhores colocados
    • O usuário pode analisar essas sequências de teclas para aprender novos comandos de movimento do Vim e melhorar sua habilidade de navegação

1 comentários

 
GN⁺ 2024-08-27
Comentários no Hacker News
  • Conseguiu entrar no placar com 17 segundos no nível jpeg, e foi realmente muito divertido como jogo competitivo
    Joguei meio que no instinto para chegar à posição pedida sem nenhuma otimização, e ainda assim foi divertido; especialmente o recurso que mostra o processo de movimentação das partidas do placar parece útil até como material de aprendizado
    Mas há um tempo de 1 segundo entre os melhores, e isso dá menos de 0,05 s por movimento, então não parece humanamente possível. Parece uso de entrada por script, e como seria difícil impedir isso nessa interface, talvez fazer o ranking por número de teclas pressionadas em vez de tempo decorrido colocasse no topo não a pessoa mais rápida, mas a mais eficiente, além de reduzir a utilidade de trapaças com script

    • Dá para explorar até certo ponto a combinação mais curta de comandos para chegar àquela posição
    • Fico curioso se usaram %. Mesmo de forma meio desajeitada, eu consegui baixar para 6,5 segundos
    • O VimGolf faz dessa forma
  • Muito bom mesmo
    Seria legal ter um modo que, em vez de velocidade, minimizasse o número de teclas pressionadas. Aí o foco da competição deixaria de ser martelar hjkl rapidamente e passaria a ser uma solução ótima no estilo Vim golf
    Um bug simples: no placar, o caractere ` aparece como “Unsupported”. Isso fica especialmente visível ao seguir o dispositivo de Duff que usa marks

    • Ótima descoberta, obrigado. Eu não tinha certeza do que estava faltando
      Acho que isso provavelmente está sendo tratado com base em uma lista de permissões, então deve dar para resolver adicionando lá
  • É o tipo de jogo que, quando você começa, não consegue parar

    • Será porque você não consegue sair do Vim? :-)
    • Talvez eu tenha que colocar algum easter egg de :q um dia
  • Muito divertido. Queria saber se conhecem mais jogos de Vim assim
    Sempre quis usar Vim, mas como uso o evil mode do Emacs, ainda não sou rápido

    • Existe o Vim Adventure. É mais um tutorial do que um jogo, mas ainda assim é legal: https://vim-adventures.com/
    • vimgolf.com é um clássico
  • O site parece estar quebrado de algum jeito. Não importa o que eu faça, nada responde, e tentei tanto no Chrome quanto no Firefox

    • Quando tive meu primeiro contato com o Vim, foi exatamente essa sensação, então talvez seja uma implementação realista
    • Desculpa. Parece haver um problema no lado do pipeline de deploy
      Antes a transição era suave, mas agora preciso invalidar o cache manualmente. Parece acontecer só em alguns deploys
    • Estou com o mesmo problema. No Chrome também usa muita CPU, mas não acontece nada, e nenhuma tecla responde
  • Muito legal. Só que o programa deu crash quando, numa fase mais adiantada, apaguei a linha que ele tinha definido como objetivo

    • Foi um bug difícil de corrigir. Pela configuração isso não deveria ser apagável, mas parece que a biblioteca de keybindings do Vim está sobrescrevendo isso
      Ainda assim, obrigado por avisar; isso ajuda a definir a prioridade
  • O recurso de ver pelo placar como outras pessoas fizeram é muito útil

  • Quero testar, mas os números das linhas ficam seguindo o cursor. Parece bug; será que deixei passar alguma coisa? Não usei tanto Vim assim, mas normalmente dá para se mover, mesmo que mais devagar
    Testei no Chrome e no Firefox

    • Isso é a opção número de linha relativo do Vim
    • Agora deixei essa configuração ajustável, e o padrão vai passar a ser a numeração normal do Vim
      Graças ao feedback, isso subiu na lista de prioridades
    • Você pode testar isso no Vim local assim:
      set rnu
      É realmente útil para movimentos relativos como 5j ou 12k :)
  • Divertido. Seria ótimo se adicionassem exibição do número de teclas pressionadas e um modo em que, em vez de ir mais rápido, o objetivo fosse minimizar esse número
    Também seria bom deixar mais claro na explicação do jogo o que é o “target”

    • Boa observação. Vou colocar uma explicação melhor na próxima versão
      O número de teclas me deixa em dúvida, porque quero muito que o foco deste jogo seja realmente a velocidade. O VimGolf já cobre muito bem esse tipo de quebra-cabeça e cenário, e o diferencial aqui é a velocidade
      Em vez disso, quero analisar os dados de teclas. Por exemplo, pode acabar surgindo um resultado de que www é mais rápido do que f. Minha hipótese inicial era que buscar com f e F não seria tão eficiente quanto movimentos comuns como w, e, h, j, mas isso já parece estar errado. Só que provavelmente eu teria que formular isso como “uma parcela considerável dos melhores usa f e F”, o que pode simplesmente significar que eles são rápidos, ou pelo menos que essas teclas não trazem uma grande desvantagem
    • Eu realmente gostaria que o elemento competitivo de minimizar teclas pressionadas fosse incluído. Parte do apelo do Vim é a velocidade, mas uma parte enorme também é que ele reduz a quantidade de teclas necessárias para ir a algum lugar ou fazer alguma coisa
      Mesmo que isso não seja exatamente o mesmo que velocidade pura, acaba se traduzindo em conforto de uso em comparação com outros editores e é muito importante para a experiência de digitação
  • É um jogo ruim, mas mostra bem uma coisa: movimentação no Vim sem Easymotion não é carro de corrida; é correr a pé em uma corrida de carros