우주에서 내려온 입자가 슈퍼마리오64 스피드러너에게 도움을 줬다고?
본문 바로가기

용어 정리, 이슈/과학&기술

우주에서 내려온 입자가 슈퍼마리오64 스피드러너에게 도움을 줬다고?

728x90
과연 우주는 컴퓨터 프로그램과 그 프로그램을 사용하는 유저에게 도움을 줄 수 있을까?

1. 원인 불명의 글리치가 발견되다.

What the... What the!!

- 2013년, 슈퍼마리오64 스피드런을 진행하던 DOTA_Teabag

https://www.youtube.com/watch?v=bhBf5crp0i8


수많은 다양한 게임들은 스피드런 경로에서 난수생성(RNG)에 크게 의존한다. 이는 플레이어들이 종종 가장 최적화된 경로를 이용하기 위해 약간의 운에 의존해야 한다는 말이다. 2013년에 일어난 한 독특한 이야기를 살펴보자.
스피드러너 도타_티백(DOTA_Teabag)은 우주에서 온 한 우주선 덕택으로 그의 플레이 시간을 아끼면서 위로 올라갔고, 운 좋게 그 오르막길을 넘어갔다.

게임 슈퍼마리오 64 타임어택 중 별(스타)을 70개 모으는 타임어택이 있다. DOTA_Teabag이 미드보스(MidBoss)와 이 70 스타 스피드런 시합을 하던 중, DOTA_Teabag은 개임 내에서 절대로 불가능하다고 여겨지는 글리치(glitch, 진행 가능 게임 오류)를 마주했다. 이 글리치로 인해 마리오는 아주 높이 텔레포트되었는데, 이는 보통 매우 특정한 조건에서만, 그것도 그 어떤 조건들도 충족되지 않는 특별한 상황에서만 겨우 이루어질 수 있는 글리치였다.

슈퍼마리오 64의 14번째 코스인 똑딱시계맵(Tick Tock Clock)


이 글리치는 러너가 똑딱 시계 맵(TTC)에서 레드코인을 모으고 있을 때 발생했으며, 단 몇 초를 아끼는 정도에 그쳤지만, 잡을 수 있는 천장이 없는 상황에서 업워프(upwarp, 윗방향 텔레포트)를 할 수 있는 방법에 대한 지식은 게임 진행 경로에 큰 영향을 미칠 것으로 판단되었다. 보통, 플레이어는 양쪽 벽으로 벽치기를 한 뒤 천장부에 위치한 잡을 것을 잡는 형태로 업워프를 하지만, DOTA_Teabag은 어떤 벽도 천장도 건드리지 않은 채 상단부에 착륙했다. 이게 뭔 큰 일인가 싶지만, 게임을 잘 모르는 사람이라도 그가 놀라 소리치는 것만으로 충분히 이상한 현상임을 알 수 있을 것이다. 물론 뭔가 다른 트릭이 있었다 정도만 짐작할 수 있을 뿐이다.

2015년, 그 영상을 본 유명한 슈퍼마리오 64 플레이어 파넌쿡12(pannenkoek12)은 이 글리치를 복제할 수 있는 방법을 알아낼 수 있는 사람에게 1000달러 포상금이 걸었다. 슈퍼마리오 64는 사상 최대의 가장 인기 있는 스피드러닝용 게임으로 유명하기 때문에, 이러한 발견은 엄청난 것이 될 수도 있다.

수많은 스피드러너와 글리치 헌터들이 이 글리치를 재현하기 위해 했던 수많은 시도는 물거품이 되어가고 있었다. 분명 DOTA_Teabag이 사용한 에뮬레이터의 모든 정보와 프레임을 맞추었지만 몇년간 아무도 이 글리치의 원인을 알아낼 수 없었다. 재밌는 건 DOTA_Teabag이 사용한 입력 정보를 그대로 복제할 수 없었는데, 그 이유는 바로 글리치의 원인이 단일사건혼란(SEU, Single-Event Upset)이었기 때문이다.

2. 단일사건혼란(SEU)과 슈퍼마리오64의 글리치

단일사건혼란(SEU)민감한 마이크로일렉트릭 장치와 이온화된 단일 입자가 충돌해 일어나는 비트의 이진 상태(0과 1로 구성된 상태)가 변화하는 것을 말한다. 이는 노드(node, 단말기 접속점) 근처의 입자의 이온화로 자유전하가 만들어진 뒤 이것에 의해 일어난 저장요소(메모리 비트) 방전으로 발생한다.

지구 대기로 들어오는 우주 입자는 대기의 원자와 충돌하고, 이로 인해 입자와 원자가 접촉하는 전자기구에 영향을 끼칠 수 있는 일종의 양성자와 중성자로 이루어진 비를 내리게 한다. 대부분의 경우, 그 영향을 받는 부분이 크게 중요하지 않았기 때문에 지금껏 거의 눈에 띄지 않지만, 2013년 게임 슈퍼마리오64에서 일어난 SEU는 특이하게 눈에 띄었다.

2013년, 레이스가 진행되는 동안, 우주에서 온 이온화된 입자가 DOTA_Teabag의 N64와 충돌하여, 마리오의 첫번째 높이(Z축) 바이트의 8번째 비트를 뒤집었다. 구체적으로, 우주에서 온 그 입자는 바이트를 11000101에서 11000100으로, C5에서 C4로 뒤집었다. 그 결과 마리오의 높이가 C5837800에서 C4837800으로 변경되었는데, 이는 우연히 마리오를 정확하게 원래 있던 순간에서 바로 다음의 더 높은 층으로 워프하는데 필요한 양이었다.
https://www.youtube.com/watch?v=X5cwuYFUUAY

이는 현상금을 걸었던 pannenkoek12에 의해 적절한 시간에 특정 비트를 수동으로 뒤집는 스크립트를 사용해 테스트 되었고, 비트플립(bit flip, 하나의 비트값을 0에서 1, 혹은 1에서 0으로 바꾸는 것)의 원인이 우주선이라는 결론을 내리게 되었다.

그러나 이런 일은 1조분의 1의 확률로 일어날 만큼 희박한 경우였다. 운좋게도 SEU를 통해 스피드런이 단축되는 큰 성과가 나타났으나, 항상 이 SEU가 좋은 것은 아니다. 기존에 진행되고 있던 비트가 바뀌기 때문에 정상적으로 하늘을 날던 항공기가 잠깐 몇 km 아래로 추락한다거나, 전자 투표 용지의 일부 정보가 날아가버리는 것과 같이 일상 생활에 큰 영향을 줄 수 있기 때문이다.

현재는 이 SEU의 위험성을 잘 알고 있기 때문에, 매 일정한 시간마다 전체 메모리를 읽고 쓰는 메모리 워시(memory wash)를 사용하거나 방사선 영향을 받지 않는 사파이어와 같은 재료로 반도체를 만들거나, 같은 정보를 여러 칩에 넣고 하나가 손상되면 다른 곳에서 정보를 받을 수 있게 하는 방식을 사용한다. 지금도 SEU에 의한 위험을 최소화하려는 각종 연구가 계속되고 있으니 우주선에 의해 숫자 하나 바뀌는 일로 큰 문제가 일어나는 일은 점차 사라질 것으로 보인다.

반응형