2 คะแนน โดย GN⁺ 2024-08-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Vim Racer เป็นเกมออนไลน์ที่ให้ผู้เล่นไปยังตำแหน่งเป้าหมายในข้อความอย่างรวดเร็วด้วยคำสั่งการเคลื่อนที่ของ Vim และช่วยฝึกแบบแข่งขันทำเวลาโดยบันทึกความชำนาญในการใช้คำสั่ง
  • ทุกครั้งที่ไปถึงเป้าหมาย เป้าหมายถัดไปจะปรากฏขึ้น และผู้เล่นจะลงแข่งแบบ 12 เป้าหมายโดยผสม คำสั่งการเคลื่อนที่ของ Vim เช่น w, 3j
  • หากเปิดการตั้งค่า relative lines จะฝึกการย้ายตำแหน่งโดยอิงเลขบรรทัดสัมพัทธ์ได้ง่ายขึ้น ช่วยลดการต้องพิมพ์เลขบรรทัดแบบค่าสัมบูรณ์ที่ยาวในไฟล์ขนาดใหญ่
  • ลีดเดอร์บอร์ดปฏิเสธ สถิติที่ต่ำกว่า 1 วินาที เพื่อวัดความสามารถในการนำทางด้วยตนเอง และยังจำกัดการเปลี่ยนชื่อผู้ใช้ไว้ที่หนึ่งครั้งต่อ 1 ชั่วโมง
  • สามารถดูการกดคีย์ของผู้ทำคะแนนสูงและเคล็ดลับรายสนามแข่งได้ ทำให้ใช้งานเป็น สื่อการเรียนรู้การเคลื่อนที่ใน Vim ได้มากกว่าแค่เกมอย่างเดียว

เกมวัดความเร็วด้วยคำสั่งการเคลื่อนที่ของ Vim

  • เป้าหมายของ Vim Racer คือการเคลื่อนที่ไปยังเป้าหมายทั้งหมดให้เร็วที่สุด
    • เมื่อไปถึงเป้าหมาย เป้าหมายถัดไปจะปรากฏขึ้น
    • เป้าหมายจะแสดงเป็น A
    • สามารถใช้คำสั่งการเคลื่อนที่ของ Vim ได้ทั้งหมด ดังนั้นเวลาที่เร็วมากจึงขึ้นอยู่กับการเลือกใช้คำสั่งเคลื่อนที่ที่มีประสิทธิภาพอย่างมาก
  • หากต้องการเริ่มการแข่งขัน ให้คลิก reset
    • หลังคลิก โฟกัสของเบราว์เซอร์จะย้ายไปที่ตัวแก้ไข ทำให้สามารถใช้คำสั่งการเคลื่อนที่ของ Vim เช่น w ได้ทันที
  • บนหน้าจอปัจจุบันจะแสดง Race Level: 12 Targets (Burn Detector), Race Mode: Standard, Navigations: 0/12
  • รับข้อเสนอแนะผ่านคอมมูนิตี้ Reddit

การตั้งค่าและข้อจำกัดในการดำเนินงาน

  • สามารถเปิด relative lines ได้จากการตั้งค่าที่ไอคอนรูปเฟืองมุมซ้ายบนของตัวแก้ไข
    • มีประโยชน์เมื่อชอบวิธีใส่จำนวนการย้ายแบบสัมพัทธ์ไว้หน้าคำสั่ง เช่น 3j
    • ในไฟล์ขนาดใหญ่ อาจเร็วกว่า 1230gg
    • ตัวอย่างการตั้งค่าในเครื่องคือแสดงเลขบรรทัดแบบค่าสัมบูรณ์เฉพาะบรรทัดที่เคอร์เซอร์อยู่ และใช้เลขบรรทัดสัมพัทธ์กับบรรทัดอื่น
  • เงินบริจาคตอนนี้ถูกนำไปใช้กับการอัปเกรดเซิร์ฟเวอร์และฐานข้อมูลของ vim-racer
    • ฐานข้อมูลปัจจุบันคือ DynamoDB
    • DynamoDB มี free tier ที่เหมาะกับการเริ่มต้นเว็บไซต์เล็ก ๆ แต่มีข้อจำกัดด้านความสามารถแลกกับความคุ้มค่าด้านต้นทุน
    • เป้าหมายหลักตอนนี้คืออัปเกรดไปใช้ฐานข้อมูล SQL โดยค่าใช้จ่ายของอินสแตนซ์ขนาดเล็กที่สุดอยู่ที่ราว 100 ดอลลาร์ต่อปี
    • เงินบริจาคก่อนหน้านี้กำลังถูกนำกลับไปลงทุนในแหล่งรายได้ประจำของ vim-racer
    • ผู้บริจาคคนแรกคือ ThePrimeagen

ลีดเดอร์บอร์ดและการนำไปใช้เพื่อการเรียนรู้

  • ลีดเดอร์บอร์ดปฏิเสธ สถิติที่ต่ำกว่า 1 วินาที
    • ผู้ใช้ how แสดงให้เห็นว่าสถิติต่ำกว่า 2 วินาทีก็อาจสมเหตุสมผลได้
    • เกมนี้ต้องการวัดว่าผู้ใช้สามารถนำทางในข้อความด้วยตนเองได้ดีแค่ไหน
    • สถิติ <20ms แสดงถึงทักษะการใช้ Vim แต่ไม่สอดคล้องกับเจตนาของเกม
    • ในอนาคตอาจมีทั้งการปรับรูปแบบเป้าหมาย รวมถึงประเภทเกมอื่น หรือกระดานคะแนนแบบ capped/uncapped
    • ตอนนี้ทรัพยากรการพัฒนายังจำกัด จึงมุ่งเก็บคะแนนบนลีดเดอร์บอร์ดจากการนำทางล้วน ๆ
  • ชื่อผู้ใช้สามารถเปลี่ยนได้เพียง หนึ่งครั้งต่อ 1 ชั่วโมง แทนการสร้างบัญชีเต็มรูปแบบ
    • ข้อจำกัดนี้มีไว้เพื่อป้องกันไม่ให้ลีดเดอร์บอร์ดถูกถมจนมากเกินไป
  • Vim Racer ยังสามารถใช้เพื่อ เรียนรู้การเคลื่อนที่ใน Vim ได้ด้วย
    • การแข่งขันแต่ละประเภทมีเคล็ดลับสำหรับเรียนรู้เส้นทางการเคลื่อนที่ไปยังเป้าหมายอย่างมีประสิทธิภาพ
    • แต่ละรายการในลีดเดอร์บอร์ดมีการกดคีย์ที่ผู้ทำคะแนนสูงใช้รวมอยู่ด้วย
    • ผู้ใช้สามารถวิเคราะห์ลำดับคีย์เหล่านั้นเพื่อเรียนรู้คำสั่งการเคลื่อนที่ใหม่ ๆ ของ Vim และพัฒนาทักษะการนำทางของตนเอง

1 ความคิดเห็น

 
GN⁺ 2024-08-27
ความคิดเห็นบน Hacker News
  • ทำเวลาเลเวล jpeg ได้ 17 วินาที และมีชื่อขึ้นบนตารางอันดับ เกมแบบแข่งขันนี้สนุกมากจริง ๆ
    ผมเล่นโดยขยับไปยังตำแหน่งที่กำหนดตามสัญชาตญาณโดยไม่ได้ปรับให้เหมาะที่สุด ก็ยังสนุก และโดยเฉพาะ ฟีเจอร์ที่แสดงกระบวนการเคลื่อนที่ของการเล่นบนตารางอันดับ ก็ดูมีประโยชน์ในฐานะสื่อการเรียนรู้ด้วย
    แต่ในอันดับต้น ๆ มีสถิติ 1 วินาที ซึ่งต่ำกว่า 0.05 วินาทีต่อการเคลื่อนที่หนึ่งครั้ง ดูไม่น่าเป็นไปได้สำหรับมนุษย์ น่าจะใช้สคริปต์ป้อนอินพุต และอินเทอร์เฟซนี้คงกันได้ยาก ดังนั้นถ้าจัดอันดับตามจำนวนการกดปุ่มแทนเวลาที่ใช้ คนที่ขึ้นไปด้านบนจะไม่ใช่คนที่เร็วที่สุด แต่เป็นคนที่มีประสิทธิภาพที่สุด และการโกงด้วยสคริปต์ก็น่าจะมีความหมายน้อยลง

    • สามารถค้นหา ชุดคำสั่งที่สั้นที่สุด เพื่อไปถึงตำแหน่งนั้นได้ในระดับหนึ่ง
    • สงสัยว่าใช้ % หรือเปล่า ผมทำแบบไม่เก่งยังลงไปได้ถึง 6.5 วินาที
    • VimGolf ทำแบบนั้นอยู่แล้ว
  • ยอดเยี่ยมจริง ๆ
    ถ้ามีโหมดที่ ลดจำนวนการกดปุ่มให้น้อยที่สุด แทนความเร็วคงดี แบบนั้นสิ่งที่แข่งกันจะเป็นวิธีแก้ปัญหาที่เหมาะที่สุดแบบ Vim golf ไม่ใช่การรัว hjkl ให้เร็ว
    มีบั๊กง่าย ๆ อย่างหนึ่งคือในตารางอันดับ อักขระ ` แสดงเป็น “Unsupported” เห็นชัดเป็นพิเศษเวลาตาม Duff's device ที่ใช้มาร์ก

    • เป็นการค้นพบครั้งใหญ่ ขอบคุณมาก ยังไม่แน่ใจว่าขาดอะไรไป
      น่าจะประมวลผลโดยอิงจาก รายการอนุญาต อยู่ เพิ่มเข้าไปตรงนั้นก็น่าจะได้
  • เกมที่เริ่มแล้วหยุดไม่ได้

    • เพราะออกจาก Vim ไม่ได้หรือเปล่า? :-)
    • สักวันอาจต้องใส่ อีสเตอร์เอ้ก :q เข้าไปก็ได้
  • สนุกมาก อยากรู้ว่ามี เกม Vim แบบนี้อีกไหม
    อยากใช้ Vim มาตลอด แต่เป็นผู้ใช้ evil mode ของ Emacs เลยยังไม่เร็วเท่าไร

    • มี Vim Adventure อยู่ ถึงจะใกล้เคียงกับบทเรียนมากกว่าเกม แต่ก็ยังใช้ได้: https://vim-adventures.com/
    • vimgolf.com เป็นของคลาสสิก
  • ดูเหมือนเว็บไซต์จะพังตรงไหนสักอย่าง ทำอะไรก็ไม่ตอบสนอง ลองทั้ง Chrome และ Firefox แล้ว

    • ตอนที่เริ่มใช้ Vim ครั้งแรกก็รู้สึกแบบนี้เหมือนกัน บางทีอาจเป็นการทำให้สมจริงก็ได้
    • ขอโทษด้วย ดูเหมือนมีปัญหาที่ deployment pipeline
      เมื่อก่อนสลับเวอร์ชันได้ลื่น แต่ตอนนี้ต้อง invalidate แคชเอง ดูเหมือนเกิดเฉพาะบาง deployment
    • เจอปัญหาเดียวกัน ใน Chrome ยังใช้ CPU เยอะด้วย แต่ไม่มีอะไรเกิดขึ้นเลย กดปุ่มอะไรก็ไม่ตอบสนอง
  • เจ๋งมาก แต่พอลบแถวที่โปรแกรมจะตั้งเป็นเป้าหมายในขั้นตอนถัด ๆ ไปแล้ว แครช

    • เป็นบั๊กที่แก้ยาก ตามการตั้งค่าแล้วควรลบไม่ได้ แต่ดูเหมือน ไลบรารีคีย์ไบนดิงของ VIM จะเขียนทับส่วนนั้น
      อย่างไรก็ขอบคุณที่แจ้งมา ช่วยให้จัดลำดับความสำคัญได้
  • ฟีเจอร์ที่ให้ดูผ่านตารางอันดับว่าคนอื่นทำอย่างไรมีประโยชน์มาก

  • อยากลองเล่นดู แต่ เลขบรรทัดตามเคอร์เซอร์ไปด้วย ดูเหมือนบั๊ก หรือผมพลาดอะไรไป? ผมไม่ได้ใช้ Vim มากนัก แต่ปกติถึงจะช้าก็น่าจะขยับได้
    ลองทั้ง Chrome และ Firefox แล้ว

    • นั่นคือออปชัน Vim ที่เรียกว่า เลขบรรทัดแบบสัมพัทธ์
    • ตอนนี้ทำให้ตั้งค่านั้นปรับแต่งได้แล้ว และค่าเริ่มต้นจะเปลี่ยนเป็นเลขบรรทัดแบบ Vim ปกติ
      ฟีดแบ็กนี้ช่วยดันงานนี้ให้มีความสำคัญสูงขึ้น
    • ใน Vim บนเครื่องลองแบบนี้ได้:
      set rnu
      สะดวกมากสำหรับการเคลื่อนที่แบบสัมพัทธ์อย่าง 5j หรือ 12k :)
  • สนุกดี ถ้าเพิ่ม การแสดงจำนวนการกดปุ่ม และโหมดที่ต้องลดจำนวนการกดปุ่มให้น้อยที่สุดแทนการไปให้เร็วขึ้น คงยอดเยี่ยม
    ในคำอธิบายเกมก็ควรทำให้ชัดเจนขึ้นด้วยว่า “target” คืออะไร

    • เป็นประเด็นที่ดี จะใส่คำอธิบายที่ดีกว่านี้ในรีลีสถัดไป
      เรื่องจำนวนการกดปุ่มยังลังเลอยู่ เพราะอยากให้โฟกัสของเกมนี้อยู่ที่ ความเร็ว จริง ๆ VimGolf ทำปริศนาและสถานการณ์แบบนั้นได้ดีอยู่แล้ว และจุดต่างของที่นี่คือความเร็ว
      แทนที่จะทำแบบนั้น อยากลองวิเคราะห์ข้อมูลการกดปุ่ม เช่น อาจพบว่า www เร็วกว่า f ก็ได้ สมมติฐานแรกคือการค้นหาด้วย f และ F ไม่ได้มีประสิทธิภาพกว่าการเคลื่อนที่ทั่วไปอย่าง w, e, h, j แต่ดูเหมือนจะผิดไปแล้ว อย่างไรก็ตามคงต้องพูดประมาณว่า “ผู้เล่นอันดับต้น ๆ จำนวนมากใช้ f และ F” ซึ่งอาจหมายความว่าพวกเขาเร็ว หรืออย่างน้อยปุ่มเหล่านั้นก็ไม่ได้เสียเปรียบมาก
    • อยากให้ใส่ การลดจำนวนการกดปุ่มให้น้อยที่สุด เป็นองค์ประกอบการแข่งขันจริง ๆ เหตุผลที่ Vim น่าดึงดูดไม่ใช่แค่ความเร็ว แต่ยังเป็นการลดจำนวนปุ่มที่ต้องกดเพื่อไปที่ไหนสักที่หรือทำอะไรบางอย่าง
      แม้สิ่งนี้จะไม่เหมือนความเร็วล้วน ๆ แต่เมื่อเทียบกับเอดิเตอร์อื่น มันนำไปสู่ความสบายในการใช้งาน และสำคัญมากต่อประสบการณ์การพิมพ์
  • เป็นเกมห่วย ๆ แต่แสดงให้เห็นอย่างหนึ่งได้ดีว่า การเคลื่อนที่ใน Vim ที่ไม่มี Easymotion ก็เหมือนแข่งด้วยการเดิน ไม่ใช่รถแข่ง