2 Punkte von GN⁺ 2024-08-27 | 1 Kommentare | Auf WhatsApp teilen
  • Vim Racer ist ein Online-Spiel, bei dem man mit Vim-Bewegungsbefehlen schnell Zielpunkte in einem Text ansteuert und die Befehlsbeherrschung in Form eines Rekordwettbewerbs üben kann
  • Jedes Mal, wenn ein Ziel erreicht wird, erscheint das nächste Ziel; mit der Kombination von Vim-Bewegungsbefehlen wie w und 3j absolviert man ein Rennen mit 12 Zielen
  • Wenn die Einstellung relative lines aktiviert ist, lässt sich das Bewegen anhand relativer Zeilennummern leichter üben, was in großen Dateien hilft, lange absolute Zeilennummern seltener eingeben zu müssen
  • Das Leaderboard lehnt Zeiten unter 1 Sekunde ab, um die Fähigkeit zur manuellen Navigation zu messen, und Namensänderungen sind ebenfalls auf einmal pro Stunde begrenzt
  • Man kann die Tastenanschläge der Bestplatzierten und Tipps pro Rennen einsehen, wodurch es über ein bloßes Spiel hinaus auch als Lernmaterial für Vim-Bewegungen genutzt werden kann

Ein Geschwindigkeitsspiel mit Vim-Bewegungsbefehlen

  • Das Ziel von Vim Racer ist es, sich so schnell wie möglich zu allen Zielen zu bewegen
    • Wenn ein Ziel erreicht wird, erscheint das nächste Ziel
    • Ziele werden etwa als A angezeigt
    • Alle Vim-Bewegungsbefehle können verwendet werden, daher hängen schnelle Zeiten stark von der Wahl effizienter Bewegungsbefehle ab
  • Um ein Rennen zu starten, klickt man auf reset
    • Nach dem Klick wechselt der Browser-Fokus in den Editor, sodass man sofort Vim-Bewegungsbefehle wie w verwenden kann
  • Auf dem aktuellen Bildschirm werden Race Level: 12 Targets (Burn Detector), Race Mode: Standard und Navigations: 0/12 angezeigt
  • Feedback wird über die Reddit-Community entgegengenommen

Einstellungen und betriebliche Einschränkungen

  • relative lines kann in den Einstellungen über das Zahnrad-Symbol oben links im Editor aktiviert werden
    • Das ist nützlich, wenn man Befehle bevorzugt, bei denen vor der Bewegung eine relative Anzahl steht, wie bei 3j
    • In großen Dateien kann das schneller sein, als 1230gg einzugeben
    • Ein Beispiel für eine lokale Einstellung ist, nur in der Cursor-Zeile die absolute Zeilennummer anzuzeigen und sonst relative Zeilennummern zu verwenden
  • Spenden werden derzeit zur Finanzierung von Upgrades für den vim-racer-Server und die Datenbank verwendet
    • Die aktuelle Datenbank ist DynamoDB
    • Für den Start einer kleinen Website ist bei DynamoDB der Free Tier nützlich, allerdings gibt es funktionale Einschränkungen statt Kosten­effizienz
    • Das derzeit wichtigste Ziel ist ein Upgrade auf eine SQL-Datenbank; die kleinste Instanz kostet etwa 100 US-Dollar pro Jahr
    • Frühere Spenden werden wieder in die wiederkehrenden Einnahmequellen von vim-racer reinvestiert
    • Der erste Spender war ThePrimeagen

Leaderboard und Lernen

  • Das Leaderboard lehnt Zeiten unter 1 Sekunde ab
    • Der Nutzer how zeigt, dass sogar Zeiten unter 2 Sekunden legitim sein können
    • Das Spiel soll messen, wie gut Nutzer sich manuell durch den Text navigieren können
    • Zeiten von <20ms zeigen zwar Vim-Können, passen aber nicht zur eigentlichen Idee des Spiels
    • Künftig könnte es neben Zielvarianten auch andere Spieltypen oder capped/uncapped Leaderboards geben
    • Derzeit sind die Entwicklungsressourcen begrenzt, daher sollen vorerst nur Punkte im Leaderboard bleiben, die durch reine Navigation erzielt wurden
  • Benutzernamen können statt einer vollständigen Kontoerstellung nur einmal pro Stunde geändert werden
    • Diese Begrenzung soll verhindern, dass das Leaderboard übermäßig gefüllt wird
  • Vim Racer kann auch zum Erlernen von Vim-Bewegungen verwendet werden
    • Jeder Renntyp bietet Tipps, um effiziente Wege zu den Zielen zu lernen
    • Jeder Leaderboard-Eintrag enthält die Tastenanschläge, die von den Bestplatzierten verwendet wurden
    • Nutzer können diese Tastenfolgen analysieren, um neue Vim-Bewegungsbefehle zu lernen und ihre Navigationsfähigkeiten zu verbessern

1 Kommentare

 
GN⁺ 2024-08-27
Hacker-News-Kommentare
  • Habe es mit dem jpeg-Level in 17 Sekunden auf die Bestenliste geschafft, und als kompetitives Spiel hat es wirklich Spaß gemacht.
    Ich habe einfach instinktiv gespielt, um ohne Optimierung zur geforderten Position zu kommen, und hatte trotzdem Freude daran. Besonders die Funktion, den Bewegungsablauf von Bestenlisten-Runs anzuzeigen, wirkt auch als Lernmaterial nützlich.
    Allerdings gibt es in den oberen Rängen einen 1-Sekunden-Eintrag; das wären weniger als 0,05 Sekunden pro Bewegung, was menschlich kaum möglich wirkt. Sieht nach geskripteter Eingabe aus, und das dürfte in diesem Interface schwer zu verhindern sein. Wenn man statt der verstrichenen Zeit die Anzahl der Tastendrücke wertet, würde nicht die schnellste, sondern die effizienteste Person oben stehen, und Script-Cheating würde weniger Sinn ergeben.

    • Die kürzeste Befehlsfolge, um an diese Position zu gelangen, lässt sich bis zu einem gewissen Grad suchen.
    • Ich frage mich, ob % verwendet wurde. Selbst mit unbeholfenem Spiel bin ich auf 6,5 Sekunden gekommen.
    • VimGolf funktioniert genau so.
  • Wirklich hervorragend.
    Es wäre schön, einen Modus zu haben, der statt Geschwindigkeit die Anzahl der Tastendrücke minimiert. Dann wäre nicht schnelles hjkl-Hämmern der Wettbewerb, sondern eine optimierte Lösung im Vim-Golf-Stil.
    Ein kleiner Bug: In der Bestenliste wird das Zeichen ` als „Unsupported“ angezeigt. Das fällt besonders auf, wenn man Duff's device mit Marks folgt.

    • Große Entdeckung, danke. Ich war mir nicht sicher, was fehlte.
      Vermutlich wird eine Allowlist verwendet, also sollte es reichen, es dort hinzuzufügen.
  • Ein Spiel, bei dem man nicht mehr aufhören kann, sobald man angefangen hat.

    • Vielleicht, weil man Vim nicht beenden kann? :-)
    • Irgendwann sollte vielleicht ein :q-Easter-Egg eingebaut werden.
  • Wirklich unterhaltsam. Ich frage mich, ob es noch mehr solcher Vim-Spiele gibt.
    Ich wollte Vim schon immer nutzen, bin aber als Nutzer des Evil Mode in Emacs noch nicht schnell.

    • Es gibt Vim Adventure. Es ist eher ein Tutorial als ein Spiel, aber trotzdem ordentlich: https://vim-adventures.com/
    • vimgolf.com ist ein Klassiker.
  • Die Seite scheint irgendwie kaputt zu sein. Egal, was ich mache, es passiert nichts; ich habe es sowohl in Chrome als auch in Firefox ausprobiert.

    • So hat es sich auch angefühlt, als ich Vim zum ersten Mal ausprobiert habe; vielleicht ist es also eine realistische Umsetzung.
    • Entschuldigung. Es scheint ein Problem mit der Deployment-Pipeline zu geben.
      Früher verlief der Wechsel reibungslos, aber jetzt muss ich den Cache manuell invalidieren. Es scheint nur bei manchen Deployments aufzutreten.
    • Ich habe dasselbe Problem. In Chrome verbraucht es auch viel CPU, aber es passiert nichts, und auf keine Taste gibt es eine Reaktion.
  • Wirklich cool. Allerdings ist das Programm gecrasht, nachdem ich in einer späteren Stufe die Zeile gelöscht hatte, die als Ziel vorgesehen war.

    • Das war ein schwer zu behebender Bug. Laut Konfiguration sollte Löschen eigentlich nicht möglich sein, aber die VIM-Keybinding-Bibliothek scheint das zu überschreiben.
      Trotzdem danke für den Hinweis; das hilft bei der Priorisierung.
  • Die Möglichkeit, über die Bestenliste zu sehen, wie andere es gemacht haben, ist sehr nützlich.

  • Ich würde es gern spielen, aber die Zeilennummern folgen dem Cursor. Sieht nach einem Bug aus; übersehe ich etwas? Ich habe Vim nicht viel benutzt, aber normalerweise kann man sich bewegen, auch wenn man langsam ist.
    Ich habe es in Chrome und Firefox ausprobiert.

    • Das ist eine Vim-Option namens relative Zeilennummern.
    • Diese Einstellung ist jetzt konfigurierbar, und der Standardwert wird auf normale Vim-Zeilennummern geändert.
      Durch das Feedback ist diese Arbeit in der Priorität gestiegen.
    • In lokalem Vim kannst du Folgendes ausprobieren:
      set rnu
      Für relative Bewegungen wie 5j oder 12k ist das wirklich praktisch :)
  • Unterhaltsam. Es wäre großartig, wenn eine Anzeige der Tastendrücke dazukäme sowie ein Modus, in dem man nicht schneller sein, sondern die Anzahl der Tastendrücke minimieren muss.
    Außerdem wäre es gut, wenn in der Spielbeschreibung klarer erklärt würde, was „target“ ist.

    • Guter Punkt. In die nächste Version kommt eine bessere Erklärung.
      Bei der Anzahl der Tastendrücke bin ich unschlüssig. Ich möchte den Fokus dieses Spiels wirklich auf Geschwindigkeit legen. VimGolf deckt solche Rätsel und Szenarien bereits gut ab, und der Unterschied hier ist die Geschwindigkeit.
      Stattdessen möchte ich die Tastendaten analysieren. Zum Beispiel könnte sich herausstellen, dass www schneller ist als f. Meine ursprüngliche Hypothese war, dass Suchen mit f und F nicht effizienter ist als häufige Bewegungen wie w, e, h, j, aber das scheint bereits widerlegt zu sein. Man sollte es wohl eher so formulieren: „Ein beträchtlicher Teil der Spitzenplätze nutzt f und F“, was bedeuten kann, dass diese Leute schnell sind oder dass diese Tasten zumindest kein großer Nachteil sind.
    • Ich würde Minimierung der Tastendrücke unbedingt als Wettbewerbselement aufnehmen. Vim ist nicht nur wegen der Geschwindigkeit attraktiv, sondern auch, weil es die Zahl der nötigen Tastendrücke reduziert, um irgendwohin zu gelangen oder etwas zu tun.
      Auch wenn das nicht dasselbe ist wie reine Geschwindigkeit, führt es im Vergleich zu anderen Editoren zu mehr Bedienkomfort und ist für das Tippgefühl sehr wichtig.
  • Ein miserables Spiel, aber eines zeigt es gut: Vim-Navigation ohne Easymotion ist nicht wie ein Rennwagen, sondern wie ein Wettlauf zu Fuß.