테트리스(Tetris) '환생(Rebirth)' 달성, 그 비하인드 스토리

by DD
1일 전
조회수 0

닌텐도 테트리스(Tetris)의 레벨 255 롤오버, 즉 '환생(Rebirth)'을 목표로 한 탐구 과정을 상세히 다룸

Antithesis의 독자적인 퍼징(Fuzzing) 기술강화된 게임 플레이 전략을 활용하여 목표 달성

게임 후반부의 예상치 못한 버그(Unexpected Bugs)글리치(Glitches) 발견 및 해결 과정이 흥미로움

데이터 격리 아키텍처(Data Isolation Architecture)를 활용한 게임 상태 재현 및 분석 방식 소개

Antithesis의 독특한 테트리스 플레이 방식

커뮤니티에서는 Antithesis가 화면을 보고 반응하는 로봇이나 도구 지원 스피드런(Tool-Assisted Speedrun) 방식이 아닌, 무작위 입력(Random Inputs)을 실행하고 그 결과를 평가하는 독자적인 퍼징(Fuzzing) 방식을 사용한다고 언급함. 데이터 격리 아키텍처(Data Isolation Architecture)를 통해 게임 상태를 효율적으로 재현하고 분석하는 점이 주목받음.

레벨 29 '킬 스크린' 극복과 그래프 기반 전략

초기에는 레벨 29의 급격한 속도 증가를 극복하지 못했으나, 그래프 기반 전략(Graph-Aware Strategy) 도입으로 레벨 41까지 도달하는 데 성공함. 각 게임 상태를 노드로, 상태 전이를 간선으로 하는 그래프를 구성하고 최적 경로를 탐색하는 방식이 핵심임. 이는 탐색 공간(Search Space)을 효과적으로 관리하여 복잡한 게임에서도 높은 성능을 달성하는 데 기여함.

인간 플레이어의 발전과 '환생(Rebirth)' 목표

13세 게이머 Willis Gibson('Blue Scuti')이 롤링(Rolling) 기법으로 레벨 157에 도달하며 게임을 크래시시킨 사건은 인간 플레이어의 한계를 재정의함. 이후 16세 게이머 Michael Artiaga('dogplayingtetris')가 레벨 255 롤오버, 즉 '환생(Rebirth)'을 최초로 달성하며 새로운 목표가 설정됨. 이는 고성능 입력 기법(High-Performance Input Techniques)의 발전을 보여줌.

레벨 160 벽과 BCD 버그의 발견

레벨 160에서 진행이 멈춘 원인은 이진화 십진법(Binary-Coded Decimal, BCD)으로 잘못 해석된 라인 카운트(Line Count) 계산 버그였음. 1600 라인 클리어 시 실제로는 1000 라인으로 계산되어 목표 함수 점수가 음수로 처리되는 문제였음. 이 버그는 2020년 코드 수정 시 발생했으며, 단순한 버그 수정으로 목표 달성이 가능해졌음을 시사함.

프로젝트 999999와 새로운 목표 함수

최고 점수(999999) 달성을 위해 '테트리스 준비도(Tetris Readiness)'를 평가하는 새로운 항이 추가된 목표 함수(Objective Function)가 설계됨. 레벨, 버블 카운트, 피스 깊이, 라인 클리어 수, 게임 점수 등을 종합적으로 고려하며, 특히 4줄 동시 클리어(Tetris)를 위한 준비 상태를 보상함. 이는 강화 학습(Reinforcement Learning)의 탐색 전략과 유사한 접근 방식을 보여줌.

고레벨에서의 기괴한 글리치(Glitches)와 데이터 분석

레벨 255 도달 과정에서 색상 팔레트 글리치(Color Palette Glitch), 게임 리셋, 화면 깨짐 등 다양한 예상치 못한 버그와 글리치가 발견됨. 특히 'FBFBFB' 점수 글리치와 같이 인터넷에서도 기록되지 않은 현상들이 관찰됨. 테스트 속성(Test Properties)버그(Bugs)를 식별하기 위해 입력 데이터를 분석하는 방식이 언급됨.

My quest to see all of Tetris