1 คะแนน โดย GN⁺ 2024-01-03 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ใน NES Tetris ผู้เล่น Willis หรือที่รู้จักกันในชื่อ Blue Scuti กลายเป็นคนแรกที่ไปถึงเลเวล 157 และทำให้เกมแครชได้ สร้างสถิติ True Killscreen ครั้งแรกของชุมชน Classic Tetris แบบแข่งขันที่มีประวัติยาวนาน 34 ปี
  • เลเวล 29 ที่เคยถูกเรียกว่า “killscreen” แท้จริงแล้วไม่ใช่ข้อบกพร่องของโค้ด แต่เป็น ขีดจำกัดความเร็วในการบังคับ และเมื่อมี hypertapping กับ rolling ปรากฏขึ้น ขีดจำกัดของผู้เล่นมนุษย์ก็ถูกผลักออกไปเรื่อยๆ
  • glitched colors ที่เริ่มปรากฏหลังเลเวล 138 กดดันทั้งการมองเห็นและความอึด ทำให้การทำสถิติต่อไปไม่อาจอาศัยแค่ความสามารถในการกดเร็วเพียงอย่างเดียว
  • งานวิจัยกลไกการแครชในปี 2022 ระบุว่า จุดที่เกมต้นฉบับ NES Tetris มีโอกาสแครชได้เร็วที่สุดคือการเคลียร์ single line ตอนเข้าสู่เลเวล 155 และในที่สุด Blue Scuti ก็ทำให้เกมแครชได้สำเร็จที่เลเวล 157
  • แม้จะ “พิชิต” เกมได้แล้ว การแข่งขันก็ยังต่อยอดไปสู่เป้าหมายใหม่ เช่น ความเร็วในการไปถึงจุดแครช คะแนนสูงสุดก่อนแครช และการไปให้ถึง rebirth screen หลังเลเวล 255 โดยหลีกเลี่ยงการแครช

ขีดจำกัดแรกที่เลเวล 29 สร้างขึ้น

  • NES Tetris วางจำหน่ายสำหรับ Nintendo Entertainment System ในปี 1989 เป็นเกมที่ให้ประกอบบล็อกที่ตกลงมาและลบแถวที่เติมเต็มได้สำเร็จ
  • ทุกครั้งที่ลบครบ 10 แถว เลเวลจะเพิ่มขึ้นและความเร็วจะสูงขึ้น โดยที่เลเวล 29 เกมจะไปถึงความเร็วสูงสุดภายในเกม
  • เป็นเวลานานที่เลเวล 29 ถูกเรียกว่า killscreen เพราะยากมากที่จะส่งชิ้นส่วนไปถึงขอบจออย่างเสถียรด้วยการกดปุ่มซ้ายขวาค้างตามปกติ
  • อย่างไรก็ตาม มันไม่ใช่ killscreen ในความหมายดั้งเดิมแบบเดียวกับเลเวล 256 ของ Pac-Man ที่ไปต่อไม่ได้เพราะข้อผิดพลาดของโค้ด
    • หากมีวิธีขยับชิ้นส่วนให้เร็วขึ้น ก็ยังสามารถเล่น NES Tetris หลังเลเวล 29 ต่อได้

Hypertapping และ Rolling ที่ผลักขีดจำกัดออกไป

  • ในปี 2011 Thor Aackerlund สร้างบันทึกวิดีโอคนแรกที่ไปถึงเลเวล 30 ด้วย hypertapping ซึ่งเป็นการสั่นนิ้วกดคอนโทรลเลอร์อย่างรวดเร็วมาก
  • หลังเลเวล 29 ความเร็วของเกมจะไม่เพิ่มขึ้นอีกแล้ว ดังนั้นในทางทฤษฎีจึงสามารถไปถึงเลเวลที่สูงกว่านี้ได้
  • Joseph Saelee ไปถึงเลเวล 31 ได้เป็นคนแรกในปี 2018 คว้าแชมป์ Tetris World Championship ในปี 2018 และ 2019 และดันสถิติเลเวลขึ้นไปถึง 35
  • EricICX ซึ่งเป็น hypertapper ที่เร็วยิ่งกว่า เป็นคนแรกที่ไปถึงเลเวล 37 และ 38
  • แต่ hypertapping อยู่ในระดับที่แทบจะรับมือกับความเร็วเลเวล 29 ได้พอดี ทำให้การทำสถิติช่วงเลเวลกลางถึงปลาย 30 ต้องอาศัยทั้งดวงชิ้นส่วนที่ดีและการวางที่แทบสมบูรณ์แบบ
  • ในปี 2020 cheez หลังจากเห็นกลยุทธ์การรัวปุ่มหลายแบบ ได้ผสานเทคนิคใช้นิ้วหลายตัวของ Hector Fly ที่ใช้กับ arcade cabinet เข้ากับวิธีใช้นิ้วด้านล่างดันคอนโทรลเลอร์ให้กระแทกนิ้วด้านบน จนเกิดเป็น rolling
    • rolling ทำให้กดซ้ำได้เร็วกว่า hypertapper ที่เร็วที่สุดมากกว่าสองเท่า
    • cheez เป็นคนแรกที่ไปถึงเลเวล 40
    • หลังจากนั้นผู้เล่นระดับท็อปก็หันมาใช้ rolling และ EricICX ก็ขึ้นไปถึงเลเวล 95 ในปี 2021

อุปสรรคใหม่จากสีเพี้ยน

  • เดิมที NES Tetris มีพาเลตสีสว่างและมองง่าย 10 ชุดสำหรับเลเวล 0~9 และจะวนใช้พาเลตเดิมทุกๆ 10 เลเวล
  • ตั้งแต่เลเวล 138 เป็นต้นไป โค้ดที่กำหนดสีของเลเวลจะทำงานผิดพลาดและไปอ่านข้อมูลนอกตารางสี ทำให้เกิด พาเลตสีผิดปกติ ที่มองได้ยาก
  • Fractal161 ไปถึง glitched colors ได้ก่อนในเวอร์ชัน PAL ที่คนนิยมน้อยกว่า แต่ PAL ช้ากว่า NTSC ซึ่งใช้ในการแข่งขันและลีดเดอร์บอร์ดหลักอยู่ 20%
  • EricICX เป็นคนแรกที่ไปถึง glitched colors ในเวอร์ชัน NTSC และเคยไปถึงเลเวล 146 ในการแข่งขันจริง แต่ top out ในเลเวลมืด
  • หลังจากนั้นการทำลายสถิติก็ติดขัดเพราะทั้งการมองเห็นและความอึด โดยเกมทำสถิติโลกของ EricICX กินเวลาเกือบ 40 นาที
  • PixelAndy ผ่านเลเวลมืดที่ทำให้ EricICX ตกรอบได้ แต่ก็ไปหยุดที่เลเวลยากกว่านั้นซึ่งมีชิ้นส่วนสีเกือบดำ

หลักการของ True Killscreen และความสำเร็จของ Blue Scuti

  • ในปี 2021 Cannon สร้าง AI เล่น Tetris ชื่อ stackrabbit เพื่อดูว่าจะไปไกลกว่าขีดจำกัดมนุษย์ได้แค่ไหน
  • stackrabbit ไม่มีข้อจำกัดเรื่องกำลังหรือการมองเห็น จึงผ่านเลเวล glitched color ที่ยากได้ รวมถึงผ่านกลิทช์ประหลาดอย่างเลเวล 235 ที่คงอยู่ยาว 800 แถวแทนที่จะเป็น 10 แถวตามปกติ
  • ที่เลเวลสูงมาก โค้ดของเกมจะทำงานอย่างไม่มีประสิทธิภาพ และเกิดสถานการณ์ที่เกมอ่าน RAM ราวกับเป็นโค้ดแทนคำสั่งจริง
    • หากผลลัพธ์นำไปสู่คำสั่งหยุด เกมจะพังโดยสมบูรณ์ และสิ่งนี้เรียกว่า true killscreen
  • การแครชไม่ได้เกิดขึ้นที่จุดเดิมเสมอไป
    • มันอาจถูกกระตุ้นได้ในจุดที่เฉพาะเจาะจงมากตามเงื่อนไขอย่างเลเวล ชิ้นส่วนปัจจุบัน และจำนวนแถวที่ลบในครั้งเดียว
    • stackrabbit เล่นบนเวอร์ชันดัดแปลงที่ตัวนับคะแนนเปลี่ยนจาก 6 หลักเป็น 7 หลัก ดังนั้นจุดแครชจึงไม่ตรงกับเวอร์ชันต้นฉบับ
  • ในปี 2022 HydrantDude จัดทุกสถานการณ์ที่ทำให้เกิดการแครชได้ไว้ในสเปรดชีต และยืนยันว่าจุดแครชที่เร็วที่สุดในเวอร์ชันต้นฉบับที่ไม่ดัดแปลงคือการทำ single ตอนเข้าสู่เลเวล 155
  • หลัง Fractal คว้าแชมป์โลกปี 2023 เขาเริ่มสตรีมท้าทายการทำให้เกมแครชทุกวัน แต่วันแรก Blue Scuti กลับผ่าน charcoal ได้ก่อนและไปถึงเลเวล 153
    • สถิตินี้เป็นทั้งสถิติโลกใหม่ด้านเลเวลและคะแนน และเหลืออีกเพียง 18 แถวก่อนถึงแครชครั้งแรก
  • จากนั้น Blue Scuti ก็เข้าสู่การแข่งขันท้าทายการแครชกับ Fractal และพลาดโอกาสแครชที่เลเวล 154 เพราะลบ triple แทน single
  • เป้าหมายถัดไปคือเลเวล 157 ซึ่งในเลเวลนี้การเคลียร์ 1 แถวแต่ละครั้งมีโอกาสทำให้แครช 73%
  • Blue Scuti ทำให้เกมแครชได้ในที่สุดด้วยความพยายามครั้งสุดท้ายที่เลเวล 157 โดยวาง J piece ทางซ้ายแล้วลบแถว กลายเป็นช่วงเวลาที่มนุษย์ “ชนะ” เกม NES Tetris ได้เป็นครั้งแรก

การแข่งขันทำสถิติหลังการแครชและเป้าหมายที่ยังเหลือ

  • ตอน rolling ปรากฏขึ้นใหม่ๆ cheez กังวลว่าเทคนิคนี้จะทรงพลังเกินไปจนทำลายชุมชน แต่ในความเป็นจริงมันกลับนำ renaissance มาสู่ Classic Tetris
  • ความกังวลว่าเกมแข่งขันอาจยาวเกินไปจนกลายเป็น endless lineout นำไปสู่ ROM patch ที่เพิ่มความเร็วขึ้นอีกในเลเวล 39 และการแข่งขันก็เปลี่ยนไปสู่การล่า line clear ที่ใหญ่กว่า
  • แม้สถิติโลกด้านเลเวลและคะแนนจะดูเหมือนกำลังกลายเป็นการแข่งขันด้านความอึดล้วนๆ แต่กระบวนการท้าทายการแครชกลับทำให้มันกลายเป็นศึกไล่บี้ที่มีการเปลี่ยนสถิติหลายครั้งต่อสัปดาห์
  • เป้าหมายหลังการแครชอาจแยกออกได้หลายทาง
    • speedrun เพื่อไปถึงจุดแครชให้เร็วที่สุด
    • คะแนนสูงสุดที่เป็นไปได้ก่อนแครช
    • ความท้าทายในการไปให้ไกลกว่าเดิมโดยหลีกเลี่ยงเงื่อนไขที่ทำให้แครช
  • คนบางส่วนในชุมชนใช้ tool-assisted speedrun (TAS) ป้อนทุกการเคลื่อนไหวด้วยมือเพื่อจำลองเส้นทางที่หลบกับดักการแครชทั้งหมด
  • หากหลีกเลี่ยงการแครชได้ทั้งหมด เลเวลสุดท้ายที่สามารถไปถึงได้คือ 255 ซึ่งเป็นเลเวลสุดท้ายที่เกมสามารถเก็บไว้ในหน่วยความจำได้
    • สีจะกลายเป็นพาเลตกลิทช์สีแดงล้วน
    • จากชิ้นส่วนทั้ง 7 แบบ มี 5 แบบที่สามารถทำให้เกมแครชได้แม้ปล่อยตกตามปกติ ดังนั้นหากจะเอาตัวรอดแทบทุกชิ้นต้องกดลงล่าง
  • เมื่อเคลียร์เลเวล 255 ได้ เกมจะวนกลับไปที่เลเวล 0
  • ช่วงเวลาที่เกมกลับจากเลเวล 255 ไปยังเลเวล 0 ไม่ได้เป็นเพียงการที่ผู้เล่นชนะเกมเท่านั้น แต่เป็น rebirth screen ที่ทั้งผู้เล่นและเกมรอดไปด้วยกัน

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

 
GN⁺ 2024-01-03
ความคิดเห็นจาก Hacker News
  • ช่วงไม่กี่ปีที่ผ่านมา วงการ Tetris เปลี่ยนไปแบบบ้าคลั่งจริงๆ
    ผมเล่นแบบดั้งเดิมด้วย DAS[1] มาตั้งแต่เด็ก และไม่เคยมีเวลาฝึก hypertapping แต่พอ rolling โผล่มาเมื่อไม่กี่ปีก่อน ผมก็เลิกพยายามตามให้ทันไปเลย สถิติสูงสุดของผมคือเกือบ maxout ที่เลเวล 29
    สิ่งที่เด่นยิ่งกว่าคือผู้เล่นอายุน้อยกำลังเปลี่ยนกติกาของเกมไปเลยจนสายดั้งเดิมสู้ไม่ไหว ใน CTWC ตอนนี้ไม่มีใครเล่นแบบ DAS แล้ว และดูเหมือน Jonas จะเป็นผู้เล่น DAS ระดับใหญ่คนสุดท้ายก่อนย้ายไปเล่นแบบ tapping ผมคิดว่าน่าจะเป็นเพราะคนอายุเกิน 30 เรียนแบบ DAS มาก่อน แต่ผู้เล่นเด็กๆ สามารถเริ่มด้วย rolling ได้ตั้งแต่แรก
    RIP Jonas Neubauer(NubbinsGoody https://www.twitch.tv/nubbinsgoody) เขาคือคนที่จุดกระแส Tetris บูมหลังหนังออกมา และตอนที่ผมกำลังพยายามทำ maxout ในปี 2018 เขากับภรรยาก็แนะนำให้ผมหา CRT monitor มาใช้ ซึ่งตอนนั้นมันเป็นคอขวดพอดี
    [1] https://tetris.fandom.com/wiki/DAS

    • ผมนึกว่าตัวเองรู้จัก Tetris ดีแล้ว ที่ไหนได้ไม่เลย พอเห็นว่าผมแทบไม่เข้าใจคอมเมนต์ข้างบนแค่ไหนก็ถ่อมตัวลงทันที
    • ผมไม่รู้มาก่อนว่า Jonas เสียชีวิตแล้ว เศร้ามาก ผมยังจำได้ว่าเคยดูวิดีโอ Tetris ที่เขาเล่นบน YouTube และคนที่พูดว่า “Boom Tetris”
    • hypertapping กับ tapping คืออะไร?
  • ไหนๆ ก็พูดถึง Tetris แล้ว คุณสามารถเล่น Tetris แบบ เล่นคนเดียว/หลายคน บนเทอร์มินัลผ่าน SSH ได้
    ssh playnetris.com
    โค้ด: https://code.rocket9labs.com/tslocum/netris

    • ผมโดนตัดการเชื่อมต่อหลังเริ่มเกมไปประมาณ 1~2 นาที
      Connection to playnetris.com closed by remote host.
      Connection to playnetris.com closed.
      >ssh playnetris.com
      ssh: connect to host playnetris.com port 22: Connection refused
  • น่าทึ่งที่ถ้าฝึกมากพอ มนุษย์สามารถยกระดับ การเคลื่อนไหวของกล้ามเนื้อ ที่รวดเร็วและซับซ้อนไปจนแทบเหนือมนุษย์ได้ นี่เป็นความสำเร็จที่ยอดเยี่ยมจริงๆ

    • ด้านจิตใจก็เหมือนกัน ลองนึกถึงหมากรุกก็ได้ โดยรวมแล้วมันน่าทึ่งมากที่มนุษย์สามารถเก่งสิ่งต่างๆ ได้ขนาดนี้ และก็ทำให้นึกภาพได้ว่าในยุคสงครามที่ยังเน้นการต่อสู้ประชิดตัวก็คงมีคนพิเศษแบบนี้เหมือนกัน คนที่มีทั้งพันธุกรรมดี อาหารดี และการฝึกดี คงเหมือนภูเขาท่ามกลางมนุษย์คนอื่นอย่างแท้จริง
    • ผมคิดว่ามีเหตุผลที่ผู้เล่น Tetris ระดับท็อปส่วนใหญ่เป็นเด็ก ต่อให้ผู้ใหญ่ฝึกแค่ไหนก็คงยากจะไปถึงระดับ การประสานงานระหว่างมือกับตา แบบเดียวกัน
      เพราะแบบนี้ผู้เล่นเด็กมักเล่นเกมยิงมุมมองบุคคลที่หนึ่งได้ดีกว่าด้วย และก็น่าจะเป็นเหตุผลว่าทำไมผมถึงรอดใน CoD ได้ไม่เกินหนึ่งนาที :)
    • ไม่แน่ใจว่าตั้งใจพาดพิงถึง เทคนิคการเล่น เครื่องดนตรีหรือเปล่า แต่ยังไงผมก็เห็นด้วยเต็มที่
  • ในปี 2020 มีคนชนะ Tetris ด้วยอีกวิธีหนึ่ง: https://jasoneckert.github.io/myblog/i-finally-beat-tetris/

    • น่าจะเปลี่ยนฟอนต์หน่อย อ่านบทความยาวๆ ลำบากเกินไป
  • Tetris ที่ผมรู้จักมีแค่เวอร์ชันที่มากับ Windows Entertainment Pack <https://en.wikipedia.org/wiki/Microsoft_Entertainment_Pack>
    เวอร์ชันนี้ทำมาสำหรับ Windows 16 บิต ดังนั้นการเก็บคะแนนด้วยจำนวนเต็ม 16 บิตก็ไม่น่าแปลก อะไรที่แปลกกว่าคือมันใช้จำนวนเต็ม 16 บิตแบบ signed พอคะแนนเกิน 32,767 คะแนนก็เลยกลายเป็นค่าติดลบ
    ตอนเป็นวัยรุ่นผมเล่นเก่งพอที่ถ้าเกมไหนคะแนนไม่ติดลบจะรู้สึกผิดหวังเลย

    • ช่วงหน้าร้อนยุค 90 ผมเล่น Minesweeper แทบทุกวัน เล่นเก่งขึ้นเรื่อยๆ จนสุดท้ายกดเวลาของด่าน expert ซึ่งเป็นกระดานใหญ่สุดลงมาเหลือ 17 วินาที พอถึงจุดนั้นก็รู้สึกว่าคงเร็วไปกว่านี้ไม่ได้แล้วเลยย้ายไปเล่นเกมอื่น
      หลายปีต่อมาผมเปิด Guinness Book of World Records แล้วเห็นว่าสถิติ Minesweeper ระดับ expert อยู่แถวๆ 25 วินาที แน่นอนว่าถ้าจะพิสูจน์ก็คงต้องไปขุดคอมพิวเตอร์เก่าออกมาจากหลุมฝังกลบ ดังนั้นผมคงต้องอยู่ต่อไปพร้อมสถานะเจ้าของสถิติโลกที่ไม่มีใครรับรอง
    • ตอนนี้ผมก็ยังชอบ Tetris เวอร์ชันนั้นที่สุด และยังเล่นอยู่บ้างเป็นครั้งคราว เพราะ Windows 64 บิตไม่ค่อยถูกกับโปรแกรม 16 บิต ผมเลยรันมันใน Windows XP virtual machine โดยเฉพาะ
      ผมเองก็ผิดหวังเหมือนกันถ้าทำคะแนนให้ติดลบไม่ได้ ถ้าฟอร์มดี มีเวลาเพียงพอ และโชคช่วยนิดหน่อย ในเกมเดียวคะแนนสามารถสลับจากบวกเป็นลบ กลับมาเป็นบวก แล้วกลับไปเป็นลบได้หลายรอบ ผมไม่เคยนับ แต่เคยเล่นเกมเดียวเกิน 45 นาทีอย่างน้อยหนึ่งครั้ง
    • ผมจำได้ว่า Solitaire รุ่นเก่าหรือไม่ก็ Freecell ก็มีปัญหาแบบเดียวกัน ผมเคยตั้งใจแพ้เพื่อทำคะแนนให้ไปใกล้ -32767 และนั่นก็เป็นครั้งแรกที่ผมได้เจอกับ integer wrapping ตอนเด็กๆ มันสอนอะไรหลายอย่างแบบไม่ได้ตั้งใจ
      แต่ไม่ว่าอันไหน การใช้จำนวนเต็มแบบ signed ก็ไม่ได้ทำให้ผมแปลกใจมากนัก ในทุกโค้ดเบสที่ผมเคยทำงานด้วย signed integer คือทางเลือกปกติสำหรับตัวเลขจนแทบเป็นค่า default ส่วน uint จะเห็นก็ต่อเมื่อมันสำคัญจริงๆ หรือเมื่อนักพัฒนาเข้มงวดเป็นพิเศษ
  • มีโพสต์ที่เกี่ยวข้องด้วย: Celebrating the first NES Tetris game crash (biggieblog.com)
    โพสต์โดย davidrjones1977 เมื่อ 10 วันก่อน, 197 คะแนน, ความเห็น 56 รายการ
    https://news.ycombinator.com/item?id=38734106

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

    • ดูเหมือนคอมมูนิตี้นี้ก็ช่วยพยุงกันและกันดีมาก ตรงข้ามกับ “King of Kong” ที่ดูแข่งขันกันหนักและน่าสงสัยกว่ามาก
    • วิดีโอตัดต่อมาดีจริงๆ และดูสนุกมาก
  • น่าทึ่งที่ได้เห็นพัฒนาการล่าสุด และ GameScout ก็เป็นหนึ่งในคนที่เล่าเรื่องราวในวงการเกมได้ดีที่สุดตอนนี้ ระดับเดียวกับ Summoning Salt เลย
    วิดีโอแนะนำชุมชน Tetris ที่ John Green ทำไว้ในปี 2018 ก็ดีมากเช่นกัน:
    https://www.youtube.com/watch?v=twS0SrDg-fc

  • ทั้งที่ผมไม่ได้สนใจ Tetris เลย แต่กลับพบว่าน่าสนใจกว่าที่คิด

    • ผมก็เหมือนกัน แถมแทบไม่ดูวิดีโอ YouTube ด้วย แต่พอดูเลยช่วงต้นไปนิดเดียวก็อินทันที
  • ตอนนี้คำถามคือ การรันโค้ดจาก RAM จะนำไปสู่สถานะเกมหรือช่องโหว่น่าสนใจแบบ Pokémon Yellow Total Control Hack ได้ไหม: https://youtube.com/watch?v=p5T81yHkHtI

    • ได้ และมีการทำ arbitrary code execution บน NES Tetris สำเร็จแล้ว
      แต่ขั้นตอนเตรียมการซับซ้อนและต้องแม่นยำอย่างโหดร้าย ต้องทำคะแนนที่แทบเป็นไปไม่ได้ ใส่ชื่อบางชื่อในตารางคะแนนสูงสุด จากนั้นต้องไปถึงจังหวะแครชในเฟรมเดียวกันพอดีกับที่ค่าภายในของตัวสร้างเลขสุ่มบังเอิญกลายเป็นคำสั่งให้กระโดดไปยังตารางคะแนนสูงสุดนั้น แถมรีจิสเตอร์หลายตัวก็ต้องบังเอิญมีค่าที่ต้องการอยู่ด้วย
      หลังจากนั้นก็ยังต้อง bootstrap ต่ออีกเล็กน้อยกว่าจะได้สิทธิ์ควบคุมเต็มรูปแบบ
    • Super Mario World ก็มีอะไรคล้ายกัน: https://youtu.be/jnZ2NNYySuE