옛 Macromedia Director 게임을 요즘 하드웨어에서 돌리기

Getting old Macromedia Director Games to run on modern Hardware

werwolv.net ▲ 93 댓글 16 speckx

요약

어린 시절 하던 Macromedia Director 게임의 복사 방지를 세 단계에 걸쳐 풀고 다시 실행했습니다.

개발자 WerWolv는 2000년대 초 도서관에서 빌려 하던 독일어 어드벤처 게임 "Findus bei den Mucklas"를 다시 돌려 보기로 했습니다. 인터넷 아카이브에 올라온 CD 이미지에서 출발해 복사 방지 장치를 하나씩 찾아 고친 과정을 정리했습니다.

왜 중요한가

  • 같은 시기 Director 게임 상당수가 거의 같은 복사 방지를 써서, 이 방법을 다른 게임에도 적용할 수 있습니다.
  • 작업 중 ProjectorRays(Director 파일 디컴파일러)에 넣은 기능을 원 프로젝트에 보내 다른 사람도 쓸 수 있게 했습니다.
  • CD 없이 실행 파일 하나로 돌게 되어, 작성자는 이 게임을 안드로이드 휴대용 기기에서도 실행했다고 밝혔습니다.

핵심 내용

  • 게임 실행 파일 끝에는 Director 스크립트가 붙어 있었고, 디컴파일하자 원래 함수·변수 이름이 그대로 나왔습니다.
  • 이 Lingo(Director 전용 스크립트 언어) 코드는 모든 드라이브를 돌며 CD를 찾고, 없으면 게임을 끝냈습니다.
  • 조건 분기의 점프 거리를 3바이트로 바꿔 종료 분기를 건너뛰게 하자 인트로 영상이 나왔습니다.
  • 다음 관문인 보호용 DLL은 CD 드라이브 응답으로 특정 값을 만들었고, 그 값을 바로 돌려주게 고쳐 메뉴까지 들어갔습니다.
  • 맥용에는 이 DLL 검사가 아예 없었고, 작성자는 두 패치를 자동으로 적용하는 파이썬 스크립트도 공개했습니다.

HN 반응

  • 원본 CD 이미지를 그대로 마운트하면 됐다는 지적에, 작성자는 CD 에뮬레이터 없이 실행 파일 하나로 돌리고 싶었다고 답했습니다.
  • 같은 시리즈 게임을 LLM으로 2시간 만에 웹용으로 옮겼다는 경험담과, 원본을 돌려 보지 못하면 결과를 검증할 수 없다는 반론이 맞섰습니다.

댓글

16개 표시 · 전체 16개
  1. milchek HN

    저도 Director(와 Lingo)로 개발을 시작했고, 그다음에 광고 대행사 프로젝트를 하려고 Flash와 ActionScript로 넘어갔습니다. 개발자로 지내기에 정말 재미있던 시절이었어요. 온라인에서 만들고 싶은 건 뭐든 만들 수 있었고, 브랜드들도 꽤 모험적이었습니다.

  2. Wistar HN

    저는 Director를 정말 좋아했습니다. 90년대에는 Director 프로젝트로 생계의 상당 부분을 꾸렸습니다.

  3. radley HN

    저는 학교에서 Director(와 Authorware)를 조금 배웠습니다. 하지만 졸업할 무렵에는 Flash가 대세였고, 그 뒤로 거의 10년 동안 Flash를 전문으로 했습니다.

  4. Keyframe HN

    저도 그렇습니다. 특히 통신사용 인터랙티브 CD-ROM을 많이 만들었죠. 이유야 이래저래 있겠지만 그런 일은 늘 넘쳐났습니다.

  5. hereonout2 HN

    저는 대학에서 좀 특이한 인터랙티브 미디어 과정을 들었습니다. 컴퓨터공학은 아니었지만 여러 언어로 프로그래밍을 많이 했습니다.

    저는 Director를 좋아해서 과제 대부분에 썼습니다. CD-ROM을 정말 많이 만들었고, Shockwave와 3DS Max로 만든 모델로 3D 게임까지 만들었습니다.

    2003년에 졸업하고 취업하려던 때가 기억나네요! CD-ROM이 과거의 유물이 되어 간다는 걸 깨닫고, 곧바로 HTML과 Flash를 독학해야 했습니다.

    돌아보면 그 경험이 이후 20년 넘게 이어진 끊임없는 학습과 언어 갈아타기의 시작이었습니다!

  6. bend4r HN

    기사에 나온 게임은 "Findus 4"입니다. 이 게임은 당시 판매될 때부터 CD 복사 방지 때문에 문제가 있었습니다. 그래서 퍼블리셔가 직접 복사 방지를 제거해 Windows NT5.0 이후 버전과 호환되게 하는 패치를 냈습니다. 이 패치는 지금도 Internet Archive에서 받을 수 있습니다. CD에 처음 들어 있던 바이너리와 퍼블리셔가 공식 패치한 버전을 비교해 보면, 이후 리버스 엔지니어링에 도움이 될지도 모릅니다.

  7. hias HN

    흥미롭네요! 그런데 목표가 그냥 게임을 실행하는 것이었다면, 언급된 archive.org 페이지에 이렇게 적혀 있습니다. "덤프할 때 ccd를 썼으니 복사 방지도 문제를 일으키지 않을 것입니다.

    이 ccd 파일을 마운트하려면 WinCD를 추천합니다."

    그러니 원래의 CCD 이미지 파일로 게임을 실행했다면 그냥 됐을 겁니다. 굳이 CCD를 ISO 파일로 변환해서 복사 방지 지원을 잃어버린 이유는 모르겠네요.

  8. WerWolv HN

    제 목표는 무엇보다 CD 에뮬레이터 같은 것들을 만지작거리지 않고 최대한 쉽게 게임을 실행하는 것이었습니다.

    그러니까 그냥 exe 파일을 실행하면 끝나게 하고 싶었어요. 덕분에 결국 안드로이드 휴대용 게임기 중 하나에도 이 게임을 넣을 수 있었습니다! 이 게임들은 놀라울 만큼 터치스크린에 잘 맞아요 :)

  9. wavewrangler HN

    저는 이걸 "Getting Old - Macromedia Director Games to run on modern hardware"로 읽었어요.

  10. shellwizard HN

    scummvm 프로젝트에서 Director 게임 대부분을 scummvm으로 옮기는 작업을 하고 있습니다. 현재 진행 상황은 여기서 확인할 수 있습니다.

    https://wiki.scummvm.org/index.php/Director/Games?hl=es-ES

  11. KellyCriterion HN

    요즘 LLM이면 이런 걸 최신 JS 같은 걸로 옮기는 건 못 하나요?

  12. foxtacles HN

    물론 됩니다. 우연이지만 몇 주 전에 최신 수준의 LLM에게 그런 옛날 Director 게임 하나를 디코딩해서 웹 브라우저에서 돌아가게 포팅해 달라고 시켰습니다. 2시간쯤 걸렸어요. (기존 오픈소스 라이브러리를 재사용하긴 했습니다): https://github.com/foxtacles/findus3 (공교롭게도 이 게임은 블로그 글쓴이가 말하는 시리즈에 속한 게임이기도 합니다)

    저는 LLM이 등장하기 전부터 10년 넘게 게임을 디컴파일하고 리버싱해 왔습니다. 최근 모델들은 정말 강력합니다. 결과물만 필요하다면 이제 수작업으로 리버싱할 이유가 거의 없습니다.

  13. schrijver HN

    LLM이 원본 코드를 실행해 볼 수 없다면, 번역이 정확한지 비교해서 검증할 수가 없죠.

  14. londons_explore HN

    LLM은 바이너리의 평범한 16진수 덤프만 보고도 비슷하게 동작하는 소스 코드로 다시 써내는 데 놀랄 만큼 능숙합니다.

    이런 오래된 게임이라면 대부분 성공할 거라고 확신해요.

  15. TheSkyHasEyes HN

    글쎄요, 그건 잘 모르겠습니다. 저는 다른 곳에서 TRS-80 CoCo(6809 CPU) 모임에 있는데, 올드스쿨 분들이 Claude 같은 걸 써서 인상적인 것들을 만들어 내고 있어요.

  16. moritzwarhier HN

    런타임이 완전히 다르다면 번역이라기보다 에뮬레이션이라고 봐야 하지 않을까요? 어쨌든요. 번역하다 보면 뭔가 잃어버리게 마련이죠(Lost in translation).

Hacker News에서 보기 ↗