The Swiss Cheese model, pt. 3

Marcin Wichary

스위스 치즈 모델, 3부

원문은 Marcin Wichary님이 에 게재했습니다. 이 블로그 구독하기

이 시리즈에서 편의 진지한 글을 쓴 뒤, 이번에는 좀 더 가볍고 사소한 이야기로 잠시 쉬어가고 싶었다.

Retro Game Mechanics Explained의 13분짜리 영상은 “재미로 한번 해볼 만한 게 있습니다”라는 말로 시작한다:

영상이 소개하는 이 숨은 트릭의 전제는 다소 복잡하다:

  • 닌텐도 엔터테인먼트 시스템에 마리오 카트리지를 꽂고 전원을 켠다,
  • 전원을 끄지 않은 채 카트리지를 뽑아 테니스(Tennis) 카트리지로 교체한다,
  • 게임을 시작해 음악이 멈출 때까지 기다린 뒤 잠시 돌아다닌다,
  • 카트리지를 빼고 다시 마리오를 꽂는다,
  • A+Start를 누르면 존재하지 않는 무작위의 “잘못된” 레벨에서 시작하게 되는데, 원래라면 불가능해야 할 일이다.

자세한 설명은 영상을 직접 보는 게 좋겠지만, 개인적으로 이 사례는 스위스 치즈 모델의 좋은 예시라고 생각한다:

  • A+Start는 새로 게임을 시작해도 마지막으로 클리어한 레벨부터 이어서 할 수 있게 해주는 실제 기능이다(Start만 누르면 항상 레벨 1부터 시작하는 것과는 대조된다).
  • NES는 전원이 켜진 상태에서도 카트리지를 빼고 다시 꽂을 수 있다.
  • 마리오 제작진은 게임 오버 때마다 게임이 스스로 리셋되도록 만들었고, 콜드 부트와 웜 부트를 특정한 방식으로 구분하도록 했다.
  • 테니스는 시작할 때 메모리를 지우지 않는다.
  • 테니스는 우연히도 메모리를 아주 특정한 방식으로 바꾸는데, 그 결과가 마리오와 우연히 “호환”된다.
  • 마리오는 진입 시 레벨 번호를 검증하지 않으므로, 잘못된/​깨진 레벨에서 시작할 수 있다.

이전과 마찬가지로, 이 스위스 치즈 구멍 중 하나라도 없었다면 이 버그는 일어나지 않았을 것이다. 하지만 구멍들이 완벽하게 일렬로 늘어서 버렸다.

나는 이 모든 과정이 꽤 재미있고 유쾌하다고 느꼈고, 마리오 제작진이 왜 (작은 예외를 제외하고) 게임 오버 때마다 게임을 리셋하도록 했는지 이해하게 됐다. 잔혹하면서도 우아한 방식이며, 지난 수십 년간 내가 작업했던 여러 프로젝트에서 ‘이렇게 하기가 더 쉬웠으면’ 하고 바라게 된 지점이기도 하다.

물론 이건 너무나 인위적으로 만들어진 시나리오라서(도대체 누가 처음에 이런 걸 발견한 거지!?) 어차피 무작위 레벨에 도달하는 것이라면 그 가치가 제한적이라는 반론도 있을 수 있다. 이 이야기는 여기서 끝나지 않으므로, 그 부분은 다음 글에서 더 풀어보려 한다. 오래된 게임을 해킹하는 데 시간을 쏟는 사람들은 이보다 훨씬 더 멀리 나아가기 때문이다.

이 글은 muse-spark-1.2-contributor 모델을 사용해 번역했습니다.

댓글