시간의 오카리나 스피드러너가 새로운 방식으로 게임을 깨는 방법

리스펙 dt 특집 이미지 2
이 이야기는 PC 게임 및 하드웨어의 세계를 다루는 Jacob Roach의 ReSpec 시리즈의 일부입니다.

ReSpec은 일반적으로 PC 게임의 훌륭하고 기술적인 세계에 대한 칼럼이지만 때때로 지나치기에는 너무 좋은 주제가 있습니다. 젤다의 전설:시간의 오카리나 하나로서 보편적으로 찬사를 받고 있습니다 최고의 닌텐도 64 게임 PC 타이틀은 아니지만 최고 수준의 가장 기술적인 게임 스피드런은 게임이 기본 수준에서 작동하는 방식을 보여줍니다. 더 중요한 것은 이러한 놀라운 성과는 커뮤니티의 많은 노력을 통해서만 가능하다는 것입니다.

내용물

  • 임의와는 거리가 멀다
  • 실시간 해킹

추천 동영상

시간의 오카리나 일반 플레이어가 이기는 데 약 30시간이 걸리는 게임입니다. 최대한 빨리 게임을 플레이하는 것을 목표로 하는 가장 숙련된 스피드러너는 결함 없이 약 3시간 40분 안에 게임을 이길 수 있습니다. 그러나 사용된 방법에 관계없이 플레이어가 게임을 완료해야 하는 게임의 Any% 범주는 3분 54초 566밀리초로 줄었습니다. 그리고 네, 그 밀리초가 중요합니다. 2위 기록 보유자는 세계 기록보다 1초도 채 뒤지지 않습니다.

닌텐도 64용 시간의 오카리나 게임.

눈부신 위업인데도 그게 다가 아니다. 시간의 오카리나 스피드 런이 테이블로 가져옵니다. 2022년 Summer Games Done Quick 2022에서 자선을 위한 반기별 스피드런닝 마라톤 행사가 열렸습니다. 새로운 그래픽을 표시하고, 새로운 음악을 재생하고, Twitch 채팅을 실행하기 위해 즉석에서 게임을 재프로그래밍하는 스피드러너 그룹 씌우다. 그리고 그 모든 것은 사전 프로그래밍 없이 게임의 재고 사본에서 수행되었습니다.

그만큼 시간의 오카리나 스피드런 커뮤니티는 계속해서 불가능해 보이는 방식으로 게임을 깨뜨려 왔습니다. 저는 클래식 Nintendo 64 게임이 작동하는 이유를 알아보기 위해 커뮤니티의 두 명의 주요 인물에게 연락을 취했고, 모든 것은 하나의 익스플로잇인 임의 코드 실행으로 귀결되었습니다.

임의와는 거리가 멀다

Nintendo 64 콘솔 및 게임.
롭 텍/Shutterstock

임의 코드 실행(Arbitrary Code Execution, ACE)은 실제보다 훨씬 위협적으로 들립니다. 기본적으로 실행되어서는 안 되는 코드(또는 프로그램) 실행을 의미하는 사이버 보안에서 사용되는 용어입니다. 스피드러너인 dannyb는 

시간의 오카리나 Any% 카테고리에서 2위 기록을 보유하고 있는 ACE는 시간의 오카리나: "OoT의 임의 코드 실행은 플레이어가 게임 내 작업을 사용하여 메모리에 데이터를 배열하여 게임 코드를 모방한 다음 게임에서 코드를 실행하려는 위치를 방금 수행한 위치로 조작합니다. 편곡.”

올바른 행동을 통해 dannyb는 플레이어가 "본질적으로 게임 내에서 원하는 모든 코드를 실행할 수 있으며 게임이 프로그래밍되지 않은 일을하십시오.” 이러한 작업에는 시작 시 입력하는 이름처럼 겉보기에 쓸모 없어 보이는 것들이 포함됩니다. 게임. 그것이 바로 허용한 조치입니다. 시간의 오카리나 너무 빨리 때려.

같은 게임에서 시간의 오카리나, 게임은 게임을 이기기 위해 충족해야 할 특정 요구 사항에 대해 메모리를 확인합니다. Any% 스피드런의 목표는 일반적으로 보이는 위치 대신 캐릭터의 이름을 보도록 메모리를 재정렬하는 것입니다. 이를 부실 참조 조작(Stale Reference Manipulation, SRM)이라고 하며 dannyb는 익스플로잇이 크랙된 것이라고 말했습니다. 시간의 오카리나 스피드 런은 주요 방식으로 열립니다.

[이전 세계 기록] OoT Any% Speedrun in 3:55.300!

“모든 비디오 게임에서 ACE는 항상 다음 두 가지를 필요로 합니다. 거기에 있는 데이터를 코드와 비슷하게 만들고 코드 실행 위치를 사용자 지정 코드가 있는 위치로 변경하는 기능 거짓말. 2019년에 OoT에서 Stale Reference Manipulation이라는 결함이 발견되어 두 번째 요구 사항이 크게 열렸습니다.”라고 dannyb는 말했습니다.

정상인의 경우 시간의 오카리나 실행하면 무작위로 보이는 행동이 추가되어 게임을 속여서는 안 될 때 완료 요구 사항을 확인하기 위해 영역(예: 캐릭터 이름)을 확인하도록 합니다. 두 부분으로 구성된 프로세스입니다. 캐릭터 이름과 같은 데이터 페이로드를 생성하고 해당 페이로드를 가리키도록 SRM으로 메모리를 조작합니다.

실시간 해킹

OoT Triforce Percent ACE 쇼케이스: TASBot이 SGDQ 2022에서 함께합니다! (베타 + 신규 콘텐츠)

그게 바로 스피드러너들이 이기는 방식이야 시간의 오카리나 하지만 사랑스러운 이름의 Triforce% 쇼케이스가 어떻게 추가할 수 있었는지 완전히 설명하지는 않습니다. 새로운 텍스처, 모델, 음악, 코드, 심지어 Twitch 오버레이를 게임에 수정하지 않고도 게임에 추가할 수 있습니다. 탄약통. 수년에 걸친 이 프로젝트의 배후에 있는 마음가짐 중 하나인 Savestate는 Nintendo 64 콘솔이 컨트롤러 데이터를 게임 데이터로 이해하도록 준비하는 것이 전부라고 설명했습니다.

초인적인 속도로 입력을 실행할 수 있는 TASBot 덕분에 가능한 쇼케이스입니다. Savestate는 “컨트롤러 데이터를 N64 명령어로 읽기 시작하도록 메모리의 명령어를 수정합니다. 일반적으로 이것은 충돌하지만 TASBot 덕분에 컨트롤러를 시뮬레이션하고 비인간적으로 조작할 수 있습니다. 게임이 컨트롤러 데이터를 미리 결정된 세트로 실행하도록 N64 명령어처럼 보이는 속도 지침."

러너는 컨트롤러 입력을 통해 원하는 코드를 게임에 추가할 수 있습니다.

요컨대 Triforce% 쇼케이스는 평소처럼 ACE와 SRM을 사용하고 있습니다. 시간의 오카리나 speedrun이지만 특히 Nintendo 64 콘솔이 지침을 이해하는 방식을 변경하고 있습니다. 이러한 설정을 통해 러너는 컨트롤러 입력을 통해서만 원하는 코드를 게임에 추가할 수 있습니다. Savestate는 계속해서 다음과 같이 말했습니다. “게임 카트리지에는 수정 사항이 없습니다. 커스텀 데이터를 메모리로 가져오기 위해 우리는 글리치를 사용하여 컨트롤러를 통해서만 N64 콘솔과 인터페이스하면서 TASBot의 도움으로 메모리 포트.”

Nintendo 64의 컨트롤러 포트.

이러한 익스플로잇은 무작위로 발견되는 것도 아닙니다. Savestate는 시간의 오카리나 커뮤니티는 게임에서 메모리가 어떻게 배열되는지 살펴보는 도구와 다양한 메모리 배열을 시뮬레이트하는 프로그램을 개발했습니다. Project64와 같은 에뮬레이터는 러너와 도구 개발자가 게임에서 코드를 단계별로 실행하는 방법을 살펴볼 수 있도록 많은 도움이 됩니다.

시간의 오카리나 지금까지 만들어진 가장 상징적인 게임 중 하나이며, 강력하고 헌신적인 스피드런 커뮤니티를 통해 게임이 처음 출시된 후 수십 년 동안 새로운 개발로 번창할 수 있었습니다. 가장 빠른 전력을 제공하는 것과 같은 익스플로잇 시간의 오카리나 스피드런은 일반적으로 가능한 한 빨리 게임을 이기는 것과 관련된 도전을 사소하게 만들지만, 사랑하는 사람을 해부하고 분석하는 놀라운 기술 전문 지식과 커뮤니티 노력을 강조합니다. 계략.

dannyb에 따르면 커뮤니티도 이러한 균형을 알고 있습니다. 다른 모든 경우에 우리는 애초에 이러한 범주에 생명을 불어넣은 고유성을 보존하기 위해 ACE를 금지합니다.”

이 글은 ReSpec – PC 게임 이면의 기술에 대한 토론, 조언 및 심층 보고가 포함된 격주 칼럼입니다.

편집자 추천

  • 젤다: 시간의 오카리나, 비디오 게임 명예의 전당에 합류
  • Switch Online의 N64 확장은 반투명 컨트롤러 없이는 완료되지 않습니다.