2 điểm bởi GN⁺ 2024-08-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • Vim Racer là một trò chơi trực tuyến trong đó bạn dùng các lệnh di chuyển của Vim để nhanh chóng tìm đến các mục tiêu trong văn bản, giúp luyện độ thành thạo lệnh dưới dạng thi đua thành tích
  • Mỗi khi đến được mục tiêu, mục tiêu tiếp theo sẽ xuất hiện; bạn kết hợp các lệnh di chuyển Vim như w, 3j để hoàn thành cuộc đua 12 mục tiêu
  • Khi bật thiết lập relative lines, bạn dễ luyện di chuyển dựa trên số dòng tương đối hơn, giúp giảm việc nhập số dòng tuyệt đối dài trong các tệp lớn
  • Bảng xếp hạng từ chối thành tích dưới 1 giây nhằm đo năng lực điều hướng thủ công, đồng thời giới hạn việc đổi tên người dùng ở mức một lần mỗi giờ
  • Có thể xem các phím bấm của người đạt điểm cao và mẹo cho từng cuộc đua, nên ngoài một trò chơi đơn thuần, công cụ này cũng có thể dùng làm tài liệu học di chuyển trong Vim

Trò chơi tốc độ cạnh tranh bằng lệnh di chuyển Vim

  • Mục tiêu của Vim Racer là di chuyển đến tất cả mục tiêu nhanh nhất có thể
    • Khi đến được một mục tiêu, mục tiêu tiếp theo sẽ xuất hiện
    • Mục tiêu được hiển thị như A
    • Có thể dùng mọi lệnh di chuyển của Vim, nên thành tích nhanh phụ thuộc rất lớn vào việc chọn lệnh di chuyển hiệu quả
  • Để bắt đầu cuộc đua, hãy nhấp reset
    • Sau khi nhấp, tiêu điểm của trình duyệt sẽ chuyển sang trình soạn thảo để bạn có thể dùng ngay các lệnh di chuyển Vim như w
  • Màn hình hiện tại hiển thị Race Level: 12 Targets (Burn Detector), Race Mode: Standard, Navigations: 0/12
  • Phản hồi được tiếp nhận qua cộng đồng Reddit

Thiết lập và các ràng buộc vận hành

  • Có thể bật relative lines trong phần thiết lập bằng biểu tượng bánh răng ở góc trên bên trái trình soạn thảo
    • Hữu ích khi bạn thích cách thêm số bước di chuyển tương đối trước lệnh, như 3j
    • Trong các tệp lớn, cách này có thể nhanh hơn nhập 1230gg
    • Ví dụ thiết lập cục bộ là chỉ hiển thị số dòng tuyệt đối ở dòng con trỏ, còn các dòng khác dùng số dòng tương đối
  • Tiền quyên góp hiện được dùng để nâng cấp máy chủ vim-racer và cơ sở dữ liệu
    • Cơ sở dữ liệu hiện tại là DynamoDB
    • DynamoDB có gói miễn phí hữu ích để khởi đầu một trang web nhỏ, nhưng đổi lại có các hạn chế về tính năng thay vì tối ưu chi phí
    • Mục tiêu chính hiện nay là nâng cấp lên cơ sở dữ liệu SQL; chi phí cho instance nhỏ nhất khoảng 100 USD mỗi năm
    • Các khoản quyên góp trước đây đang được tái đầu tư vào nguồn doanh thu định kỳ của vim-racer
    • Người quyên góp đầu tiên là ThePrimeagen

Bảng xếp hạng và sử dụng cho học tập

  • Bảng xếp hạng từ chối thành tích dưới 1 giây
    • Người dùng how cho thấy thành tích dưới 2 giây cũng có thể là hợp lệ
    • Trò chơi muốn đo xem người dùng điều hướng văn bản thủ công tốt đến đâu
    • Thành tích <20ms thể hiện khả năng sử dụng Vim, nhưng không phù hợp với mục đích của trò chơi
    • Trong tương lai có thể có không chỉ các biến thể mục tiêu mà cả những kiểu trò chơi khác hoặc bảng xếp hạng capped/uncapped
    • Hiện tại, do nguồn lực phát triển còn hạn chế, định hướng là để bảng xếp hạng lưu lại điểm số đạt được bằng điều hướng thuần túy
  • Thay vì tạo tài khoản đầy đủ, tên người dùng chỉ có thể đổi một lần mỗi giờ
    • Giới hạn này nhằm ngăn bảng xếp hạng bị lấp đầy quá mức
  • Vim Racer cũng có thể dùng để học di chuyển trong Vim
    • Mỗi loại cuộc đua cung cấp mẹo để học lộ trình di chuyển hiệu quả đến mục tiêu
    • Mỗi mục trên bảng xếp hạng bao gồm các phím bấm mà người đạt điểm cao đã dùng
    • Người dùng có thể phân tích chuỗi phím đó để học các lệnh di chuyển Vim mới và cải thiện kỹ năng điều hướng

1 bình luận

 
GN⁺ 2024-08-27
Ý kiến trên Hacker News
  • Tôi đã lên bảng xếp hạng ở màn jpeg với 17 giây, và thấy đây là một game cạnh tranh thật sự thú vị
    Tôi chơi theo kiểu di chuyển bản năng tới vị trí được yêu cầu mà không tối ưu gì, nhưng vẫn rất vui; đặc biệt tính năng hiển thị quá trình di chuyển trong lượt chơi trên bảng xếp hạng có vẻ cũng hữu ích làm tài liệu học tập
    Tuy nhiên ở nhóm đầu có kỷ lục 1 giây, tức là chưa tới 0,05 giây cho mỗi lần di chuyển, nên có vẻ không khả thi với con người. Có vẻ họ dùng nhập liệu bằng script, và giao diện này chắc khó chặn được; nếu xếp hạng theo số lần nhấn phím thay vì thời gian trôi qua, người hiệu quả nhất chứ không phải người nhanh nhất sẽ lên đầu, và việc gian lận bằng script cũng sẽ bớt ý nghĩa

    • Ở một mức nào đó có thể tìm được tổ hợp lệnh ngắn nhất để tới vị trí đó
    • Không biết có dùng % không. Dù tôi làm khá vụng, cũng đã xuống được 6,5 giây
    • VimGolf làm theo kiểu đó
  • Thật sự xuất sắc
    Sẽ rất hay nếu có chế độ tối thiểu hóa số lần nhấn phím thay vì tốc độ. Khi đó đối tượng cạnh tranh sẽ là lời giải tối ưu kiểu Vim golf, chứ không phải spam hjkl thật nhanh
    Một lỗi nhỏ: trên bảng xếp hạng, ký tự ` được hiển thị là “Unsupported”. Điều này đặc biệt dễ thấy khi theo dõi Duff's device dùng mark

    • Phát hiện lớn đấy, cảm ơn. Tôi không chắc mình đã bỏ sót gì
      Có lẽ đang xử lý dựa trên danh sách cho phép, nên chỉ cần thêm nó vào đó là được
  • Một game đã bắt đầu là không thể dừng

    • Có phải vì không thể thoát Vim không? :-)
    • Có lẽ một ngày nào đó nên thêm easter egg :q
  • Rất thú vị. Không biết còn ai biết thêm game Vim nào như vậy không
    Tôi luôn muốn dùng Vim, nhưng là người dùng Emacs evil mode nên vẫn chưa nhanh lắm

  • Trang có vẻ bị hỏng ở đâu đó. Làm gì cũng không có phản hồi, tôi đã thử cả Chrome lẫn Firefox

    • Lúc mới tiếp xúc Vim tôi cũng có cảm giác như vậy, nên biết đâu đây lại là một triển khai chân thực
    • Xin lỗi. Có vẻ có vấn đề ở pipeline triển khai
      Trước đây chuyển đổi rất mượt, nhưng giờ phải vô hiệu hóa cache thủ công. Có vẻ chỉ xảy ra ở một số lần deploy
    • Tôi cũng gặp vấn đề tương tự. Trên Chrome CPU còn bị dùng nhiều, nhưng không có gì xảy ra, và nhấn phím nào cũng không phản hồi
  • Rất tuyệt. Tuy nhiên ở một màn sau, tôi xóa dòng mà chương trình sẽ đặt làm mục tiêu, rồi nó bị crash

    • Đây là lỗi từng rất khó sửa. Về mặt thiết lập thì đáng lẽ không thể xóa được, nhưng có vẻ thư viện key binding của VIM đang ghi đè điều đó
      Dù vậy cảm ơn đã báo, nó giúp tôi ưu tiên xử lý
  • Tính năng xem người khác đã làm thế nào qua bảng xếp hạng rất hữu ích

  • Tôi muốn chơi thử, nhưng số dòng cứ chạy theo con trỏ. Trông như lỗi, hay tôi đang bỏ sót gì đó? Tôi không dùng Vim nhiều, nhưng bình thường dù chậm thì vẫn có thể di chuyển được
    Tôi đã thử trên Chrome và Firefox

    • Đó là một tùy chọn Vim gọi là số dòng tương đối
    • Giờ tôi đã làm cho thiết lập đó có thể cấu hình được, và mặc định đã đổi sang số dòng Vim thông thường
      Nhờ phản hồi này mà việc đó được nâng mức ưu tiên
    • Trong Vim cục bộ, có thể thử như sau:
      set rnu
      Nó rất tiện cho các di chuyển tương đối như 5j hay 12k :)
  • Vui đấy. Sẽ rất tuyệt nếu thêm hiển thị số lần nhấn phím và một chế độ phải tối thiểu hóa số lần nhấn phím thay vì đi nhanh hơn
    Cũng nên giải thích rõ hơn trong phần mô tả game rằng “target” là gì

    • Góp ý hay. Bản phát hành tiếp theo tôi sẽ thêm phần giải thích tốt hơn
      Về số lần nhấn phím thì tôi còn phân vân. Vì tôi thật sự muốn trọng tâm của game này là tốc độ. VimGolf đã xử lý rất tốt kiểu câu đố và kịch bản đó rồi, còn điểm khác biệt ở đây là tốc độ
      Thay vào đó, tôi muốn phân tích dữ liệu nhấn phím. Ví dụ có thể kết quả sẽ cho thấy www nhanh hơn f. Giả thuyết ban đầu của tôi là việc tìm bằng fF không hiệu quả bằng các di chuyển phổ biến như w, e, h, j, nhưng có vẻ nó đã sai. Tuy nhiên có lẽ nên diễn đạt ở mức “một phần đáng kể nhóm đầu dùng fF”, và điều đó có thể nghĩa là họ nhanh, hoặc ít nhất là các phím đó không gây bất lợi lớn
    • Tôi rất muốn có tối thiểu hóa số lần nhấn phím như một yếu tố cạnh tranh. Lý do Vim hấp dẫn không chỉ là tốc độ, mà còn ở việc nó giảm số lần nhấn phím cần thiết để đi tới đâu đó hoặc làm việc gì đó
      Dù điều này không giống hoàn toàn với tốc độ thuần túy, so với các trình soạn thảo khác, nó đem lại sự thoải mái khi sử dụng và rất quan trọng với trải nghiệm gõ phím
  • Một game dở tệ, nhưng nó cho thấy rõ một điều. Di chuyển trong Vim mà không có Easymotion giống như thi đua đi bộ chứ không phải lái xe đua