- Trong NES Tetris, Willis, hay còn gọi là Blue Scuti, đã trở thành người đầu tiên đạt tới level 157 và khiến trò chơi bị crash, lập kỷ lục True Killscreen đầu tiên của cộng đồng Classic Tetris chuyên nghiệp sau 34 năm
- Level 29, từng được gọi là “killscreen”, không phải là lỗi mã nguồn mà là giới hạn tốc độ thao tác; khi hypertapping và rolling xuất hiện, giới hạn của người chơi liên tục được đẩy xa hơn
- Glitched colors xuất hiện sau level 138 gây áp lực đồng thời lên tầm nhìn và sức bền, khiến việc duy trì kỷ lục không còn chỉ là khả năng bấm nhanh
- Nghiên cứu năm 2022 về cơ chế crash đã xác định điểm crash sớm nhất có thể của bản NES Tetris gốc là single line clear khi bước vào level 155, và Blue Scuti cuối cùng đã gây crash thành công ở level 157
- Ngay cả sau khi “phá đảo” trò chơi, cuộc cạnh tranh vẫn có thể tiếp tục với các mục tiêu mới như tốc độ đạt đến crash, điểm số cao nhất trước khi crash, hay đạt tới rebirth screen sau level 255 trong khi tránh crash
Giới hạn đầu tiên do level 29 tạo ra
- NES Tetris được phát hành năm 1989 cho Nintendo Entertainment System, là trò chơi ghép các khối rơi xuống để xóa những hàng đã hoàn chỉnh
- Cứ xóa 10 hàng thì level tăng lên và tốc độ nhanh hơn; đến level 29, trò chơi đạt tốc độ tối đa trong game
- Trong thời gian dài, level 29 được gọi là killscreen vì khó đưa các mảnh ổn định ra sát mép bằng cách giữ nút trái/phải
- Tuy nhiên, đây không phải là killscreen theo nghĩa truyền thống, nơi tiến trình bị chặn do lỗi mã như level 256 của Pac-Man
- Nếu có cách di chuyển mảnh nhanh hơn, các level sau 29 của NES Tetris vẫn có thể vượt qua
Hypertapping và Rolling đẩy giới hạn lên cao hơn
- Năm 2011, Thor Aackerlund đã lập video đầu tiên ghi lại việc đạt level 30 bằng hypertapping, tức bấm tay cầm thật nhanh như làm ngón tay rung lên
- Sau level 29, tốc độ trong game không tăng thêm, nên về lý thuyết có thể đi tới các level cao hơn nữa
- Joseph Saelee lần đầu đạt level 31 vào năm 2018, vô địch Tetris World Championship năm 2018 và 2019, đồng thời nâng kỷ lục level lên 35
- EricICX, một hypertapper còn nhanh hơn, là người đầu tiên đạt level 37 và 38
- Hypertapping chỉ vừa đủ để theo kịp tốc độ level 29, nên các kỷ lục ở giữa và cuối nhóm level 30 đòi hỏi vận may mảnh tốt và cách xếp gần như hoàn hảo
- Năm 2020, sau khi xem nhiều chiến thuật bấm liên tục nhiều nút, cheez đã tạo ra rolling bằng cách kết hợp kỹ thuật nhiều ngón của Hector Fly dùng trên arcade cabinet với kỹ thuật dùng ngón phía dưới tay cầm đẩy lên để va vào ngón phía trên
- rolling cho phép tốc độ bấm liên tục nhanh hơn gấp đôi những hypertapper nhanh nhất
- cheez là người đầu tiên đạt level 40
- Sau đó, các người chơi top đầu chuyển sang rolling, và EricICX đã leo tới level 95 vào năm 2021
Rào cản mới do lỗi màu tạo ra
- NES Tetris ban đầu có 10 bảng màu sáng và dễ nhìn cho level 0–9, rồi lặp lại cùng bảng màu sau mỗi 10 level
- Từ level 138, mã xác định màu level bị lỗi và đọc dữ liệu ngoài bảng màu, khiến bảng màu bất thường khó nhìn xuất hiện
- Fractal161 là người đầu tiên đạt tới glitched colors trên bản PAL ít được dùng hơn, nhưng PAL chậm hơn 20% so với NTSC, vốn được dùng trong các giải vô địch và bảng xếp hạng chính
- EricICX là người đầu tiên đạt glitched colors trên bản NTSC, và trong một trận đấu giải thực tế đã đi tới level 146 nhưng bị top out ở một level tối
- Sau đó, việc phá kỷ lục bị cản trở đồng thời bởi tầm nhìn và sức bền; ván lập kỷ lục thế giới của EricICX kéo dài gần 40 phút
- PixelAndy đã vượt qua level tối từng loại EricICX, nhưng bị loại ở một level khó hơn nữa với các mảnh gần như màu đen
Nguyên lý của True Killscreen và thành công của Blue Scuti
- Năm 2021, Cannon tạo ra AI chơi Tetris stackrabbit để thử vượt qua giới hạn con người
- stackrabbit không bị hạn chế bởi thể lực và tầm nhìn nên đã vượt qua các level glitched color khó, cũng như vượt qua những lỗi kỳ lạ như level 235 kéo dài trong 800 hàng thay vì 10 hàng như thông thường
- Ở các level rất cao, mã game hoạt động kém hiệu quả và có thể xảy ra tình huống trò chơi đọc RAM như mã lệnh thay vì mã lệnh thật
- Nếu kết quả dẫn tới lệnh dừng, trò chơi sẽ hỏng hoàn toàn; điều này được gọi là true killscreen
- Crash không phải lúc nào cũng xảy ra tại cùng một điểm
- Nó có thể bị kích hoạt ở những điểm rất cụ thể tùy theo các điều kiện như level, mảnh hiện tại và số hàng xóa cùng lúc
- Vì stackrabbit chơi trên bản đã chỉnh sửa, trong đó bộ đếm điểm đổi từ 6 chữ số sang 7 chữ số, nên điểm crash không giống bản gốc
- Năm 2022, HydrantDude đã tổng hợp mọi tình huống có thể gây crash vào một bảng tính, và điểm crash sớm nhất có thể trên bản gốc chưa chỉnh sửa được xác nhận là bằng single khi bước vào level 155
- Năm 2023, sau khi vô địch World Championship, Fractal bắt đầu livestream thử thách gây crash hằng ngày, nhưng ngay ngày đầu tiên Blue Scuti đã vượt qua charcoal trước và đạt level 153
- Kỷ lục này vừa là kỷ lục thế giới mới về level, vừa là kỷ lục thế giới về điểm số, và chỉ còn cách lần crash đầu tiên 18 hàng
- Sau đó, Blue Scuti bước vào cuộc cạnh tranh thử thách crash với Fractal, và ở level 154 đã bỏ lỡ cơ hội crash khi xóa triple thay vì single
- Mục tiêu tiếp theo là level 157, nơi mỗi lần xóa 1 hàng có xác suất crash là 73%
- Ở level 157, Blue Scuti đã xóa hàng trong nỗ lực cuối cùng với mảnh J đặt bên trái, kích hoạt crash game và tạo nên khoảnh khắc người chơi con người lần đầu “thắng” NES Tetris
Cuộc đua kỷ lục sau crash và những mục tiêu còn lại
- Khi rolling xuất hiện, cheez từng lo kỹ thuật này quá mạnh và có thể làm hỏng cộng đồng, nhưng trên thực tế nó đã mang lại một renaissance cho Classic Tetris
- Lo ngại rằng các trận đấu giải có thể kéo quá dài thành endless lineout đã dẫn tới một bản vá ROM bổ sung tốc độ nhanh hơn ở level 39, và các trận đấu chuyển sang hướng nhắm tới các line clear lớn hơn
- Kỷ lục thế giới về level và điểm số tưởng như sẽ cố định thành cuộc đua sức bền đơn thuần, nhưng trong quá trình thử thách crash, nó biến thành một cuộc rượt đuổi với nhiều lần đổi kỷ lục chỉ trong một tuần
- Các mục tiêu sau crash có thể chia thành nhiều hướng
- speedrun để đạt crash nhanh nhất
- Điểm số cao nhất có thể trước khi crash
- Thử thách đi xa hơn bằng cách tránh các điều kiện crash
- Một phần cộng đồng đã dùng speedrun có hỗ trợ công cụ (TAS) để mô phỏng đường đi tránh các bẫy crash bằng cách nhập thủ công mọi chuyển động
- Nếu tránh được mọi crash, level cuối cùng có thể đạt tới là 255, cũng là level cuối cùng có thể lưu trong bộ nhớ game
- Màu sắc là bảng màu lỗi đỏ thuần
- 5 trong 7 mảnh có thể gây crash chỉ bằng cách rơi bình thường, nên để sống sót cần nhấn xuống với gần như mọi mảnh
- Nếu hoàn thành level 255, trò chơi sẽ quay lại level 0
- Khoảnh khắc quay về level 0 sau level 255 không chỉ là lúc người chơi phá đảo, mà còn được ghi lại như rebirth screen, nơi cả người chơi lẫn trò chơi cùng sống sót
1 bình luận
Ý kiến trên Hacker News
Trong vài năm gần đây, sân chơi Tetris đã thay đổi thật sự chóng mặt
Từ nhỏ tôi đã chơi theo kiểu DAS[1] truyền thống, và không có thời gian học hypertapping; rồi vài năm trước rolling xuất hiện, từ đó tôi bỏ hẳn ý định cố theo kịp. Điểm cao nhất của tôi là gần maxout ở level 29
Điều nổi bật hơn là các tuyển thủ trẻ đang áp đảo phe truyền thống bằng cách thay đổi chính luật chơi. Ở CTWC giờ không còn ai chơi bằng DAS nữa, và có lẽ Jonas là tuyển thủ DAS lớn cuối cùng trước khi chuyển sang tapping. Tôi nghĩ lý do là những người trên 30 tuổi học bằng DAS, còn các tuyển thủ trẻ có thể bắt đầu ngay từ rolling
RIP Jonas Neubauer(NubbinsGoody https://www.twitch.tv/nubbinsgoody). Sau khi bộ phim ra mắt và Thor gần như giải nghệ, anh ấy là người dẫn dắt làn sóng Tetris; năm 2018, khi tôi đang nhắm tới maxout, anh ấy và vợ đã khuyên tôi tìm một màn hình CRT. Khi đó đó chính là nút thắt cổ chai
[1] https://tetris.fandom.com/wiki/DAS
Nhân nói về Tetris, có thể chơi Tetris single-player/multiplayer trong terminal qua SSH
ssh playnetris.comMã nguồn: https://code.rocket9labs.com/tslocum/netris
Connection to playnetris.com closed by remote host.Connection to playnetris.com closed.>ssh playnetris.comssh: connect to host playnetris.com port 22: Connection refusedThật đáng kinh ngạc khi chỉ cần luyện tập đủ, con người có thể đẩy các chuyển động cơ bắp nhanh và phức tạp lên mức gần như phi nhân loại. Đây thật sự là một thành tựu lớn
Vì vậy các game thủ trẻ thường cũng chơi game bắn súng góc nhìn thứ nhất giỏi hơn, và đó cũng là lý do tôi khó sống sót quá 1 phút trong CoD :)
Năm 2020, tôi đã phá đảo Tetris theo một cách khác: https://jasoneckert.github.io/myblog/i-finally-beat-tetris/
Phiên bản Tetris tôi từng biết chỉ là bản nằm trong Windows Entertainment Pack <https://en.wikipedia.org/wiki/Microsoft_Entertainment_Pack>
Vì bản này dành cho Windows 16-bit nên việc nó lưu điểm bằng số nguyên 16-bit cũng không có gì đáng ngạc nhiên. Điều đáng ngạc nhiên là nó dùng số nguyên 16-bit có dấu, nên khi vượt quá 32.767 điểm thì điểm số chuyển thành số âm
Hồi tuổi teen tôi chơi khá giỏi, đến mức mỗi ván mà điểm không thành số âm thì tôi thấy thất vọng
Vài năm sau, xem Guinness Book of World Records thì thấy kỷ lục Minesweeper expert khoảng 25 giây. Tất nhiên muốn chứng minh thì phải đào cái máy tính cũ từ bãi rác lên, nên tôi đành sống với việc mình là người giữ kỷ lục thế giới không được công nhận
Tôi cũng thấy thất vọng nếu không làm điểm thành số âm. Nếu đúng phong độ, có đủ thời gian và thêm chút may mắn, trong một ván có thể đi từ dương sang âm, rồi lại dương, rồi lại âm nhiều lần. Tôi chưa từng đếm, nhưng có ván chắc chắn kéo dài ít nhất hơn 45 phút
Tuy nhiên việc dùng số nguyên có dấu trong trường hợp nào đó cũng không quá bất ngờ. Trong mọi codebase tôi từng làm việc, số nguyên có dấu gần như là lựa chọn hiển nhiên cho các con số, giống như mặc định vậy. Tôi chỉ thấy
uintkhi thật sự quan trọng hoặc khi lập trình viên quá nghiêm ngặtCũng có bài liên quan: Celebrating the first NES Tetris game crash (biggieblog.com)
Bài do davidrjones1977 đăng 10 ngày trước, 197 điểm, 56 bình luận
https://news.ycombinator.com/item?id=38734106
Video thật sự truyền cảm hứng. Có thể nói chính mức độ mọt công nghệ/kỳ quặc như thế này đang đẩy nền văn minh của chúng ta tiến lên
Thật đáng kinh ngạc khi chứng kiến các tiến bộ gần đây, và GameScout hiện là một trong những người kể chuyện về game hay nhất, có thể đặt ngang hàng với Summoning Salt
Video nhập môn cộng đồng Tetris mà John Green làm năm 2018 cũng rất tuyệt:
https://www.youtube.com/watch?v=twS0SrDg-fc
Dù không quan tâm đến Tetris, tôi vẫn thấy bất ngờ là nó thú vị
Câu hỏi bây giờ là liệu thực thi mã trong RAM có thể dẫn tới các trạng thái game hoặc exploit thú vị như Pokémon Yellow Total Control Hack hay không: https://youtube.com/watch?v=p5T81yHkHtI
Tuy nhiên quá trình chuẩn bị phức tạp và đòi hỏi độ chính xác khủng khiếp. Phải tạo ra một điểm số gần như bất khả thi, nhập các tên cụ thể vào danh sách điểm cao, rồi chạm tới crash đúng vào khung hình mà giá trị nội bộ của bộ sinh số ngẫu nhiên tình cờ biểu diễn lệnh nhảy tới chính danh sách điểm cao đó. Hơn nữa, một số thanh ghi cũng phải tình cờ chứa đúng các giá trị cần thiết
Sau đó là một chút bootstrapping cho đến khi có được quyền kiểm soát hoàn toàn