Depois de 34 anos, alguém derrotou “Tetris” [vídeo]
(youtube.com)- No NES Tetris, Willis, também conhecido como Blue Scuti, foi o primeiro a chegar ao nível 157 e provocar um travamento do jogo, estabelecendo o primeiro recorde de True Killscreen da comunidade profissional de Classic Tetris em 34 anos
- O nível 29, antes chamado de “killscreen”, não era uma falha de código, mas um limite de velocidade de controle; com o surgimento do hypertapping e do rolling, o limite dos jogadores humanos continuou sendo empurrado para frente
- As glitched colors que aparecem após o nível 138 pressionam ao mesmo tempo a visão e a resistência, tornando difícil continuar batendo recordes apenas com a capacidade de apertar botões rapidamente
- Uma pesquisa de 2022 sobre o mecanismo de travamento concluiu que, no NES Tetris original, o primeiro ponto possível de travamento era um single line clear ao entrar no nível 155, e Blue Scuti acabou conseguindo provocar o travamento no nível 157
- Mesmo depois de “zerar” o jogo, a competição pode continuar com novos objetivos, como a velocidade até o travamento, a maior pontuação antes do travamento e chegar à rebirth screen após o nível 255 evitando travamentos
O primeiro limite criado pelo nível 29
- NES Tetris foi lançado em 1989 para o Nintendo Entertainment System; é um jogo em que blocos que caem são organizados para apagar linhas completas
- A cada 10 linhas apagadas, o nível sobe e a velocidade aumenta, chegando à velocidade máxima do jogo no nível 29
- Por muito tempo, o nível 29 foi chamado de killscreen, porque era difícil levar as peças de forma estável até as bordas mantendo pressionados os botões para a esquerda ou direita
- Porém, não era uma killscreen no sentido tradicional, em que uma falha de código impede o progresso, como no nível 256 de Pac-Man
- Se houver uma forma de mover as peças mais rapidamente, também é possível passar dos níveis após o 29 em NES Tetris
Hypertapping e rolling empurram o limite para cima
- Em 2011, Thor Aackerlund estabeleceu o primeiro registro em vídeo de alguém chegando ao nível 30 usando hypertapping, apertando rapidamente o controle como se vibrasse os dedos
- Como a velocidade do jogo não aumenta mais depois do nível 29, em teoria era possível chegar a níveis ainda mais altos
- Joseph Saelee foi o primeiro a chegar ao nível 31 em 2018, venceu o Campeonato Mundial de Tetris em 2018 e 2019 e elevou o recorde de nível até 35
- EricICX, um hypertapper ainda mais rápido, foi o primeiro a chegar aos níveis 37 e 38
- O hypertapping mal dava conta da velocidade do nível 29, então recordes na metade final da casa dos 30 exigiam muita sorte nas peças e posicionamento quase perfeito
- Em 2020, depois de ver várias estratégias de apertar botões repetidamente, cheez criou o rolling combinando a técnica de múltiplos dedos de Hector Fly, usada em arcade cabinets, com uma técnica de empurrar com os dedos pela parte de baixo do controle para que ele bata nos dedos da parte de cima
- O rolling permite uma cadência de apertos mais de duas vezes maior que a dos hypertappers mais rápidos
- cheez foi o primeiro a chegar ao nível 40
- Depois disso, os jogadores de ponta migraram para o rolling, e EricICX chegou ao nível 95 em 2021
A nova barreira criada pelo glitch de cores
- NES Tetris originalmente tem 10 paletas de cores claras e fáceis de ver nos níveis 0 a 9, repetindo a mesma tabela de cores a cada 10 níveis
- A partir do nível 138, o código que define as cores do nível quebra, lê dados fora da tabela de cores e passa a exibir paletas de cores anômalas difíceis de enxergar
- Fractal161 chegou primeiro às glitched colors na versão PAL, menos usada, mas PAL é 20% mais lenta que NTSC, usada nos campeonatos e nos principais leaderboards
- EricICX foi o primeiro a chegar às glitched colors na versão NTSC e chegou ao nível 146 em uma partida real de torneio, mas sofreu top out em um nível escuro
- Depois disso, a busca por recordes passou a ser dificultada tanto pela visão quanto pela resistência, e a partida de recorde mundial de EricICX durou quase 40 minutos
- PixelAndy passou pelo nível escuro que eliminou EricICX, mas caiu em um nível ainda mais difícil, com peças quase pretas
O princípio da True Killscreen e o sucesso de Blue Scuti
- Em 2021, Cannon criou a IA de Tetris stackrabbit para explorar além dos limites humanos
- Sem limitações de stamina e visão, stackrabbit passou por níveis difíceis de glitched colors e também superou glitches estranhos, como o level 235, que dura 800 linhas em vez das 10 linhas normais
- Em níveis muito altos, o código do jogo passa a funcionar de forma ineficiente e pode acabar lendo a RAM como se fosse código, em vez de instruções do jogo
- Se o resultado levar a uma instrução de parada, o jogo quebra completamente; isso é chamado de true killscreen
- O travamento nem sempre acontece no mesmo ponto
- Ele pode ser provocado em pontos muito específicos, dependendo de condições como nível, peça atual e número de linhas apagadas de uma vez
- Como stackrabbit jogava em uma versão modificada em que o contador de pontos passava de 6 para 7 dígitos, os pontos de travamento não eram os mesmos da versão original
- Em 2022, HydrantDude organizou em uma planilha todas as situações capazes de provocar travamento, e o primeiro ponto possível de travamento na versão original sem modificações foi confirmado como um single ao entrar no nível 155
- Em 2023, depois de vencer o Campeonato Mundial, Fractal começou a transmitir diariamente tentativas de travamento, mas logo no primeiro dia Blue Scuti passou antes pelo charcoal e chegou ao nível 153
- Esse foi um novo recorde mundial de nível e também de pontuação, ficando a apenas 18 linhas do primeiro travamento
- Depois disso, Blue Scuti entrou em uma disputa com Fractal por tentativas de travamento e perdeu uma chance ao apagar um triple em vez de um single no nível 154
- O objetivo seguinte era o nível 157, onde cada clear de 1 linha tinha 73% de chance de travamento
- No nível 157, Blue Scuti fez uma última tentativa colocando uma J piece à esquerda, apagou uma linha e provocou o travamento do jogo, criando o momento em que um jogador humano “venceu” NES Tetris pela primeira vez
A disputa por recordes após o travamento e os objetivos restantes
- Quando o rolling surgiu, cheez temia que a técnica fosse forte demais e pudesse estragar a comunidade, mas, na prática, ela trouxe uma renaissance ao Classic Tetris
- A preocupação de que partidas de torneio pudessem ficar longas demais em endless lineout levou a um patch de ROM que adicionou uma velocidade ainda maior no nível 39, e as partidas passaram a se concentrar em buscar line clears maiores
- Os recordes mundiais de nível e pontuação pareciam estar se consolidando como uma simples disputa de resistência, mas, durante as tentativas de travamento, viraram uma perseguição em que recordes mudavam várias vezes em uma semana
- Os objetivos pós-travamento podem se dividir em várias direções
- Um speedrun para chegar rapidamente ao travamento
- A maior pontuação possível antes do travamento
- O desafio de ir mais longe evitando as condições de travamento
- Parte da comunidade simula, com speedruns assistidos por ferramentas (TAS), rotas que evitam armadilhas de travamento inserindo manualmente todos os movimentos
- Se todos os travamentos forem evitados, o último nível alcançável é o 255, que é o último nível que pode ser armazenado na memória do jogo
- A cor é uma paleta glitch de vermelho puro
- 5 das 7 peças podem provocar um travamento apenas com a queda normal, então, para sobreviver, é preciso pressionar quase todas as peças para baixo
- Ao limpar o nível 255, o jogo volta ao nível 0
- O momento de voltar ao nível 0 depois do nível 255 permanece como a rebirth screen, em que, mais do que o jogador zerar o jogo, jogador e jogo sobrevivem juntos
1 comentários
Comentários no Hacker News
Nos últimos anos, o cenário de Tetris mudou de forma completamente insana.
Eu jogava desde criança no estilo tradicional de DAS[1] e nunca investi tempo para aprender hypertapping, mas quando rolling apareceu há alguns anos, desisti de vez de tentar acompanhar. Minha melhor pontuação foi quase um maxout no nível 29.
O mais impressionante é ver jogadores jovens dominando os tradicionalistas ao literalmente mudarem as regras do jogo. No CTWC, agora ninguém mais joga de DAS, e acho que Jonas foi o último grande jogador de DAS antes de migrar para tapping. Acho que isso acontece porque quem tem mais de 30 aprendeu com DAS, enquanto os mais novos já podem começar direto com rolling.
RIP Jonas Neubauer (NubbinsGoody https://www.twitch.tv/nubbinsgoody). Ele foi quem impulsionou o boom de Tetris depois do documentário, quando Thor praticamente se aposentou, e em 2018, quando eu estava tentando chegar ao maxout, ele e a esposa me aconselharam a arranjar um monitor CRT. Aquilo era o gargalo na época.
[1] https://tetris.fandom.com/wiki/DAS
Já que estamos falando de Tetris, dá para jogar Tetris single-player/multiplayer no terminal via SSH
ssh playnetris.comCódigo: 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 refusedÉ impressionante como, com prática suficiente, pessoas conseguem levar movimentos musculares rápidos e complexos a um nível quase desumano. É uma conquista incrível
É por isso que jogadores jovens também costumam ser melhores em jogos de tiro em primeira pessoa, e provavelmente explica por que eu mal consigo sobreviver mais de um minuto em CoD :)
Em 2020, Tetris foi derrotado de outra forma: https://jasoneckert.github.io/myblog/i-finally-beat-tetris/
O único Tetris que eu conhecia era a versão que vinha no Windows Entertainment Pack <https://en.wikipedia.org/wiki/Microsoft_Entertainment_Pack>
Como essa versão era para Windows 16-bit, não era surpreendente que a pontuação fosse armazenada em um inteiro de 16 bits. O surpreendente era terem usado um inteiro com sinal de 16 bits, então ao passar de 32.767 pontos a pontuação ficava negativa.
Quando eu era adolescente, jogava bem o suficiente para me decepcionar se a pontuação não ficasse negativa em toda partida
Anos depois, vi no Guinness Book of World Records que o recorde de Minesweeper no expert era algo em torno de 25 segundos. Claro que, para provar isso, eu teria de escavar meu computador antigo num aterro, então só me resta viver sabendo que fui um recordista mundial não reconhecido
Eu também fico decepcionado se não consigo deixar a pontuação negativa. Se estou num bom dia, tenho tempo suficiente e um pouco de sorte, dá para ir de positivo para negativo, voltar para positivo e depois para negativo várias vezes na mesma partida. Nunca contei, mas já joguei por pelo menos mais de 45 minutos em uma única partida
Dito isso, não é tão surpreendente assim terem usado inteiros com sinal. Em todas as bases de código em que trabalhei, inteiro com sinal era simplesmente a escolha padrão para números. Eu só via
uintquando era realmente importante ou quando o desenvolvedor era excessivamente rigorosoTambém há este post relacionado: Celebrating the first NES Tetris game crash (biggieblog.com)
postado há 10 dias por davidrjones1977, 197 pontos, 56 comentários
https://news.ycombinator.com/item?id=38734106
Vídeo realmente inspirador. Dá até para dizer que esse nível de nerdice é o que empurra nossa civilização para frente
É impressionante ver os avanços recentes, e GameScout é uma das pessoas que melhor conta narrativas de jogos hoje, no mesmo nível de Summoning Salt.
O vídeo de introdução à comunidade de Tetris feito por John Green em 2018 também é excelente:
https://www.youtube.com/watch?v=twS0SrDg-fc
Eu não me interesso por Tetris, mas ainda assim isso foi surpreendentemente interessante
Agora a pergunta é se a execução de código via RAM pode levar a estados de jogo interessantes ou exploits como o Pokémon Yellow Total Control Hack: https://youtube.com/watch?v=p5T81yHkHtI
Só que a preparação é absurdamente complexa e precisa. Você precisa fazer uma pontuação quase impossível, inserir certos nomes na lista de recordes e então chegar ao crash exatamente no frame em que um valor interno do gerador de números aleatórios por acaso representa uma instrução para saltar para aquela lista de recordes. Além disso, vários registradores também precisam conter por acaso os valores necessários.
Depois disso, ainda há um pouco de bootstrapping até obter controle total