지난 주 '카드를 완벽하게 섞으려면 몇 번 섞어야 할까요?' 메일을 보내고 나서 '아차!' 했습니다. 완벽한 아웃 셔플을 8번 하면 카드가 섞이지 않고 원래 상태로 돌아온다는 재밌는 내용을 준비해 놓고는 적는 걸 깜빡 했거든요. 블로그 글이었다면 얼른 수정했겠지만 페퍼노트는 기본적으로 이메일이기 때문에 그럴 수 없었습니다. 이런 게 메일링 서비스의 묘미인 것 같습니다.
저는 어쩌다 이걸 깜빡했을까요? 그걸 답하기 전 먼저 '스피드런'이 뭔지 설명해야 합니다. 스피드런은 어떤 비디오 게임을 최대한 빠르게 깨는 데 도전하는 플레이 방법입니다. 보통의 게이머라면 며칠에 걸쳐 클리어했을 게임을 10여 분만에 클리어하는 모습들을 보면 경이적입니다. 어떤 게임의 스피드런 기록을 세웠다고 주장하는 것만으론 당연히 아무도 믿어주지 않기 때문에 스피드런 도전자들은 보통 기록 영상을 남깁니다.
2013년 DOTA_Teabag이라는 게이머가 '슈퍼 마리오 64'라는 게임의 스피드런에 도전합니다. 그리고 'Tick Tock Clock'이라는 단계에서 주인공인 마리오 캐릭터가 갑자기 순간이동을 하며 층을 건너 뛰는 버그가 발생합니다. 1분, 1초를 단축하는 게 중요한 스피드런에서 순간이동을 하며 층을 건너 뛸 방법이 있다면 기록 단축에 대단히 도움이 되기 때문에 스피드런에 도전하는 게이머들은 모두 이 버그에 주목할 수 밖에 없었습니다. 문제는 이 버그를 일으킨 본인을 포함해 누구도 이 버그를 재현하는 데 성공하지 못했다는 것입니다. 스피드런 도전이었던 만큼 플레이가 녹화되어 있어서 거짓말로 볼 수도 없었습니다.
이 버그의 재현이 워낙 어려워서 재현하는 사람에게는 1,000 달러를 주겠다는 현상금까지 붙습니다. 그러나 이 버그의 재현 방법이 밝혀지는 데에는 8년의 시간이 더 걸렸습니다.
우주에서 지구로 들어오는 방사선을 '우주 방사선'이라고 합니다. 그리고 이 방사선이 마이크로프로세서, 반도체 메모리, 전력 트랜지스터 같은 장치를 팅- 치고 가면서 버그를 일으키는 걸 '싱글 이벤트 업셋'이라고 합니다. 8년이 지나 제기된 가설은, 우주 방사선이 그의 게임기를 지나가며 마리오의 위치 좌표를 순간 1비트만 건드리면서 마리오가 순간이동을 했다는 것이었습니다. 8년 간 누구도 재현하는 데 성공하지 못한 것도 우주 방사선이 하필 그 타이밍에 그 데이터를 건드릴 확률이 지극히 낮기 때문에 설명 가능합니다. 과거로 돌아갈 수는 없기에 정말로 그 순간 우주 방사선이 개입했는지를 확인할 수는 없습니다. 그러나 그 상황을 모방해 실제로 그 순간 마리오의 위치 좌표를 1비트만 조작하면 그 때와 같은 플레이가 재현됩니다. 그래서 우주 방사선 가설은 현재 정설로 받아들여지고 있습니다.
우주 방사선이 마리오의 위치만 바꿔서 다행이지, 비행기가 사용하는 데이터를 수정하기라도 하면 큰일이 납니다. 실제로 콴타스 72편 급강하 사고가 싱글 이벤트 업셋으로 인해 발생했다고 합니다. 우리가 아무리 완벽하게 준비를 했어도 때로는 온우주가 억까하는 상황이 생기기도 하는 것입니다. 지난 주 메일에 제가 내용을 빠뜨린 것도 사실은 제 잘못이 아니라 온우주의 잘못이 아닐까요?
댓글 2개
의견을 남겨주세요
빔일
단순 버그로 치부하고 잊혀질 수도 있었을 텐데 집요하게 원인 규명해낸게 인상적이네요
페퍼노트 (1.58K)
저도 개발자지만 버그에 저렇게 열 올려 본 적은 없는 것 같아요. 게임이 세상을 바꿀 때가 있는 것 같습니다 ㅎㅎ
의견을 남겨주세요