2 पॉइंट द्वारा GN⁺ 2024-08-27 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Vim Racer एक ऑनलाइन गेम है जिसमें Vim movement commands का उपयोग करके टेक्स्ट में लक्ष्य बिंदुओं तक तेज़ी से पहुँचना होता है, और यह commands में दक्षता का अभ्यास रिकॉर्ड-प्रतिस्पर्धा के रूप में करने देता है
  • हर बार लक्ष्य तक पहुँचने पर अगला target दिखाई देता है, और w, 3j जैसे Vim movement commands को मिलाकर 12-target race खेली जाती है
  • relative lines सेटिंग चालू करने पर relative line numbers के आधार पर movement का अभ्यास करना आसान हो जाता है, जिससे बड़े files में लंबे absolute line numbers टाइप करने की ज़रूरत कम होती है
  • leaderboard, manual navigation क्षमता को मापने के लिए 1 सेकंड से कम के रिकॉर्ड स्वीकार नहीं करता, और username बदलने को भी 1 घंटे में एक बार तक सीमित करता है
  • high scorers के key inputs और हर race के tips देखे जा सकते हैं, इसलिए यह सिर्फ एक गेम नहीं बल्कि Vim movement learning resource के रूप में भी उपयोगी है

Vim movement commands से मुकाबले का speed game

  • Vim Racer का लक्ष्य सभी targets तक जितनी जल्दी हो सके पहुँचना है
    • target तक पहुँचते ही अगला target दिखाई देता है
    • target को A जैसे चिह्न से दिखाया जाता है
    • सभी Vim movement commands का उपयोग किया जा सकता है, इसलिए तेज़ रिकॉर्ड काफी हद तक इस बात पर निर्भर करता है कि movement commands का चुनाव कितना कुशल है
  • race शुरू करने के लिए reset पर क्लिक करें
    • क्लिक करने के बाद browser focus editor पर चला जाता है, इसलिए आप तुरंत w जैसे Vim movement commands इस्तेमाल कर सकते हैं
  • वर्तमान स्क्रीन पर Race Level: 12 Targets (Burn Detector), Race Mode: Standard, Navigations: 0/12 दिखते हैं
  • feedback Reddit community के माध्यम से लिया जाता है

सेटिंग्स और संचालन संबंधी सीमाएँ

  • relative lines को editor के ऊपर बाएँ कोने में gear icon settings से चालू किया जा सकता है
    • यह तब उपयोगी है जब आप 3j की तरह command से पहले relative movement count लगाना पसंद करते हैं
    • बड़े files में यह 1230gg टाइप करने से तेज़ हो सकता है
    • local setting का एक उदाहरण यह है कि केवल cursor line पर absolute line number दिखे और बाकी पर relative line numbers इस्तेमाल हों
  • donations फिलहाल vim-racer server और database upgrade के लिए उपयोग की जा रही हैं
    • वर्तमान database DynamoDB है
    • DynamoDB में छोटे site की शुरुआत के लिए free tier उपयोगी है, लेकिन cost efficiency के बजाय feature limitations होती हैं
    • मौजूदा मुख्य लक्ष्य SQL database में upgrade करना है, और सबसे छोटे instance की लागत लगभग 100 डॉलर प्रति वर्ष है
    • पहले के donations को vim-racer की recurring revenue source में फिर से निवेश किया जा रहा है
    • पहले donor ThePrimeagen थे

leaderboard और learning में उपयोग

  • leaderboard 1 सेकंड से कम के रिकॉर्ड स्वीकार नहीं करता
    • user how दिखाता है कि 2 सेकंड से कम के रिकॉर्ड भी वैध हो सकते हैं
    • गेम का उद्देश्य यह मापना है कि उपयोगकर्ता टेक्स्ट में manually कितनी अच्छी तरह navigate करता है
    • <20ms रिकॉर्ड Vim proficiency तो दिखाते हैं, लेकिन गेम के उद्देश्य से मेल नहीं खाते
    • आगे चलकर target variations के साथ-साथ अलग game types या capped/uncapped leaderboards भी आ सकते हैं
    • फिलहाल development resources सीमित हैं, इसलिए pure navigation से हासिल स्कोर ही leaderboard पर रखने की दिशा है
  • पूरा account system बनाने की जगह username को 1 घंटे में केवल एक बार बदला जा सकता है
    • यह सीमा leaderboard को अनावश्यक रूप से भरने से रोकने के लिए है
  • Vim Racer का उपयोग Vim movement learning के लिए भी किया जा सकता है
    • हर race type, targets तक कुशलता से पहुँचने के रास्ते सीखने के लिए tips देता है
    • हर leaderboard entry में high scorer द्वारा इस्तेमाल किए गए key inputs शामिल होते हैं
    • उपयोगकर्ता उन key sequences का विश्लेषण करके नए Vim movement commands सीख सकते हैं और navigation skill बेहतर कर सकते हैं

1 टिप्पणियां

 
GN⁺ 2024-08-27
Hacker News की राय
  • jpeg लेवल 17 सेकंड में पूरा करके leaderboard में अपना नाम डाला, और competitive game के तौर पर यह वाकई मज़ेदार था
    बिना optimization के, request की गई position तक instinctively move करते हुए खेला, फिर भी मज़ा आया; खासकर leaderboard play की movement process दिखाने वाला feature learning material के तौर पर भी उपयोगी लगता है
    हालांकि top ranks में 1 सेकंड का record है, जो प्रति move 0.05 सेकंड से कम है, इसलिए मानवीय रूप से संभव नहीं लगता। लगता है script input का इस्तेमाल हो रहा है, और इस interface में इसे रोकना मुश्किल होगा; इसलिए elapsed time के बजाय key input count से ranking की जाए तो सबसे तेज़ व्यक्ति नहीं बल्कि सबसे efficient व्यक्ति ऊपर आएगा, और script cheating का मतलब भी कम हो जाएगा

    • उस position तक पहुँचने के लिए shortest command combination कुछ हद तक खोजा जा सकता है
    • जानना चाहूँगा कि % इस्तेमाल किया गया था या नहीं। मैं कच्चे तरीके से भी 6.5 सेकंड तक आ गया था
    • VimGolf इसी तरीके से करता है
  • वाकई शानदार
    speed के बजाय key input count minimize करने वाला mode हो तो अच्छा होगा। तब तेज़ hjkl spam नहीं, बल्कि Vim golf-style optimal solution competition का विषय होगा
    एक छोटा bug: leaderboard में character ` “Unsupported” के रूप में दिखता है। marks इस्तेमाल करने वाले Duff's device को follow करते समय यह खास तौर पर दिखता है

    • बड़ी खोज है, धन्यवाद। मुझे पक्का नहीं था कि क्या missing था
      शायद allow list based handling है, इसलिए उसमें add करने से काम हो जाएगा
  • शुरू कर दें तो रुक नहीं सकते ऐसा game

    • क्या इसलिए कि Vim से बाहर नहीं निकल सकते? :-)
    • शायद कभी :q easter egg डालना पड़े
  • वाकई मज़ेदार। ऐसे और Vim games पता हैं क्या, यह जानना चाहूँगा
    हमेशा Vim इस्तेमाल करना चाहता था, लेकिन Emacs evil mode user होने की वजह से अभी तेज़ नहीं हूँ

    • Vim Adventure है। game से ज़्यादा tutorial जैसा है, लेकिन फिर भी ठीक है: https://vim-adventures.com/
    • vimgolf.com classic है
  • site कहीं टूटी हुई लगती है। कुछ भी करूँ कोई response नहीं, Chrome और Firefox दोनों में try किया

    • जब पहली बार Vim से सामना हुआ था तब भी ऐसा ही लगा था, तो शायद यह realistic implementation हो सकता है
    • माफ़ करें। लगता है deployment pipeline side में problem है
      पहले smooth transition होता था, लेकिन अब cache manually invalidate करना पड़ता है। लगता है सिर्फ कुछ deployments में होता है
    • वही problem है। Chrome में CPU भी काफी use हो रहा है लेकिन कुछ नहीं होता, कोई भी key दबाने पर response नहीं है
  • वाकई बढ़िया। लेकिन बाद के stage में target बनने वाली line delete कर दी तो crash हो गया

    • यह bug fix करना मुश्किल रहा। configuration के हिसाब से deletion impossible होना चाहिए, लेकिन लगता है VIM key binding library उसे override कर रही है
      फिर भी बताने के लिए धन्यवाद, priority तय करने में मदद मिली
  • leaderboard के ज़रिए यह देख पाना कि दूसरों ने कैसे किया, बहुत useful है

  • खेलकर देखना चाहता हूँ, लेकिन line numbers cursor के पीछे-पीछे चलते हैं। bug जैसा लगता है, या क्या मैं कुछ miss कर रहा हूँ? Vim बहुत ज़्यादा इस्तेमाल नहीं किया है, लेकिन आम तौर पर slow ही सही, move तो कर पाता हूँ
    Chrome और Firefox में try किया

    • वह Vim option relative line numbers है
    • अब उस setting को configurable बना दिया है, और default को normal Vim line numbers में बदल दिया है
      feedback की वजह से इस काम की priority बढ़ गई
    • local Vim में ऐसा करके देख सकते हैं:
      set rnu
      5j या 12k जैसे relative movements के लिए वाकई सुविधाजनक है :)
  • मज़ेदार है। key input count display और ऐसा mode add हो जाए जिसमें तेज़ जाने के बजाय key input count minimize करना हो, तो शानदार होगा
    game description में “target” क्या है, यह भी और साफ़ किया जाए तो अच्छा होगा

    • अच्छा point है। next release में बेहतर explanation डालूँगा
      key input count पर दुविधा है। क्योंकि इस game का focus सच में speed पर रखना चाहता हूँ। VimGolf ऐसे puzzles और scenarios पहले से अच्छी तरह handle करता है, और यहाँ की खासियत speed है
      इसके बजाय key input data analyze करना चाहता हूँ। उदाहरण के लिए यह result आ सकता है कि www f से तेज़ है। मेरी initial hypothesis थी कि f और F से search करना w, e, h, j जैसे common movements से efficient नहीं है, लेकिन वह पहले ही गलत दिख रही है। हालांकि शायद इसे “top ranks में काफी लोग f और F इस्तेमाल करते हैं” तक ही कहना चाहिए, और इसका मतलब हो सकता है कि वे तेज़ हैं या कम से कम वे keys बड़ा नुकसान नहीं हैं
    • competitive element के तौर पर key input minimization ज़रूर जोड़ना चाहिए। Vim आकर्षक इसलिए है कि speed तो है ही, लेकिन किसी जगह जाने या कुछ करने के लिए ज़रूरी key inputs कम कर देता है
      भले ही यह pure speed जैसा न हो, दूसरी editors से तुलना में usage comfort देता है और typing experience के लिए बहुत महत्वपूर्ण है
  • बेकार game है, लेकिन एक बात अच्छे से दिखाता है। Easymotion के बिना Vim movement race car नहीं, बल्कि पैदल race करने जैसा है