클리어 불가능한 스테이지 만들기: 마리오 메이커의 취약점을 찾아서

슈퍼 마리오 메이커에서는 아무도 클리어할 수 없는 스테이지가 올라오는 것을 막기 위해서 스테이지할 때 “업로드 체크”를 거치도록 한다. 스테이지를 올릴 때 업로더는 직접 그 스테이지를 플레이해야 하고, 클리어한 뒤에야 업로드가 가능해지는 식. 그러나 많은 사람들은 이 마리오 메이커의 룰의 빈틈을 파고들어 클리어 불가능 스테이지 업로드에 도전해왔다.

그 노력의 결실들 중 하나. 위 스테이지는 중간에 죽지 않으면 그냥 클리어하는 것은 가능하지만, 만약 도중에 죽어 체크포인트에서 시작하게 되면 클리어가 불가능하게 만들어졌다.

체크포인트가 있는 스테이지의 경우 업로드할 때의 클리어 체크 과정에서 스타트 지점에서의 클리어 체크와 동시에 체크포인트에서의 클리어 체크도 이루어지기 때문에 보통은 이런게 가능하지 않다. 이를 가능케하기 위해서 이 업로더는 한 가지 사실을 주목했다. 바로 레드코인을 먹고 체크포인트에 다다른 후 이 체크포인트에서 다시 시작하게 되면 그 레드코인은 먹은 것으로 카운트되며 해당 레드코인은 사라지게 되는 것. 한 편 체크포인트에서의 클리어 체크 과정에서는 앞의 레드코인을 먹은 것으로 여기지 않으며 그대로 남겨둔다는 것.

원래대로라면 이는 어쩔 수 없는 방편이기도 하며(클리어체크부터 시작한다면 그 이전에 플레이한 기록 자체가 없으므로 레드코인은 그대로 남겨둘 수밖에 없다) 동시에 이 스테이지를 플레이하게 될 다른 플레이어들에 대한 닌텐도의 배려이기도 하다 (체크포인트에서 다시 시작했는데 이전에 먹은 레드코인을 먹을 수 없어 클리어가 불가능해지는 경우를 미연에 방지할 수 있다)

업로더는 플레이도중 레드코인을 먹고 체크 포인트를 지나는 것을 강제함과 동시에, 이 레드코인이 남아있어야 깰 수 있는 스테이지를 만들었다. 이로써 클리어 체크에서는 레드코인이 있어서 클리어할 수 있지만 실제 게임을 플레이하게 된다면 도중 체크 포인트에서 시작할 때 이 레드코인이 없어져 클리어할 수 없게 만드는 것이 가능해졌다고.

단 이 스테이지의 경우 리플을 보니 다른 사람이 체크포인트에서 시작해 클리어하는 것에 성공했다고 한다. 중요한 것은 레드코인 트릭 자체는 여전히 유효하기 때문에 이를 활용하면 얼마든지 코인의 유무만으로 실제 플레이에선 체크 포인트부터는 깰 수 없게 만드는 것은 여전히 가능성이 열려있다는 점.

이렇게 클리어 체크 플레이와 실제 플레이의 룰의 차이점에 주목하여 실제 플레이로는 클리어 불가능하게 만드는, 마치 해커가 취약점 찾아서 악용하는 듯한 기법은 위 영상에서도 나타난다. 이번에는 체크포인트 없이, 매우 높은 확률로 클리어가 불가능한 스테이지.

이번 스테이지에서는 “길쭉한 버섯”을 이용한다. 마리오 메이커에는 “길쭉한 버섯”이 있고 이걸 먹으면 점프력이 증가한 길쭉한 마리오로 변신할 수 있다. 보통 버섯이 들어있는 ?블록에서 1/100의 확률로 등장하는데, 닌텐도는 이것에 의존하는 스테이지의 악용을 막기 위해 클리어 체크에서는 이 버섯이 나오지 않게 했다.

이 배려를 역이용해서 위 스테이지에서는 점프 높이의 차이를 이용해 길쭉한 마리오로는 클리어가 불가능한 스테이지를 만들었다. 자동적으로 ?블록들을 오픈시켜 나오는 버섯들을 강제적으로 먹이면 실제 클리어에서는 매우 높은 확률로 길쭉한 마리오가 되어 클리어가 불가능해지는 것이다. 위 스테이지의 경우 버섯이 132개가 있어서 1-0.99^{132}=0.73의 확률로 클리어가 불가능해지지만 ?블록 개수는 충분히 늘릴 수 있다. complexity theory에서도 확률을 충분히 1로 가깝게 만들 수 있는가에 따라 class를 분류하는 것을 생각하면 비록 무조건 클리어 불가능은 아니더라도 납득이 가는 “불가능한 스테이지”가 되는 셈이다.

여기서는 다른 접근법을 쓴다. (앞의 두 영상을 소개하기도 한다.)

마리오 메이커의 초기 1.0 버젼에서는 버그도 심했고 이를 이용해서 클리어하는 스테이지들도 있는데 패치를 통해 이게 막혔다. 그런데 마리오 메이커의 업로드 절차상 클리어 체크를 통과한 후 오프라인 상태라면 보류했다가 나중에 온라인 상태가 되면 다시 업로드할 수 있게 하는데, 이 때 클리어 체크를 다시 거치지 않는다는 것을 이용한 것이다. 즉 오프라인 상태에서 1.0으로 버그 이용한 스테이지 만들어 클리어 체크 통과한 후, 바로 올리지 않고 온라인으로 패치하여 올리는 식. 근데 이쪽은 쉽게 악용될 수도 있어서 닌텐도 입장에서 충분히 새로운 패치를 통해 막기 쉬울 듯. 해당 영상 업로더는 100인 마리오 챌린지 플레이어들을 위해 업로드되는걸 확인한 후 삭제했다.

트윗 타래를 정리. (2019/03/17)

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중