같은 기법으로 Mac의 Asahi Linux에서 Fallout: New Vegas를 실행해 봤음. 만만한 작업은 아니지만, https://github.com/doitsujin/dxvk 덕분에 많은 작업을 건너뛰고 하루 만에 게임을 구동할 수 있었음.
이후 원하는 변경을 더해 울트라와이드 화면의 기본 해상도로 실행하고, 실시간 전역 그림자 맵, SSAO, 톤 매핑과 색 보정, FXAA, Hor+ 시야각도 적용함. 대부분 60fps를 안정적으로 유지하며, 가끔 생기는 버그도 대개 금방 고칠 수 있음. 초기에 10분 간격 자동 저장을 추가해 둔 덕분에 버그의 영향도 크지 않음.
이 기기에서 게임을 구동하고 직접 즐기는 재미뿐 아니라, LLM에 맞는 개발 도구를 만들어 가며 창의적인 활용법을 찾기에도 좋은 작업임.
이런 걸 보면 AI가 정말 반가움. AAA 게임에 없거나 제작사가 의도적으로 제공하지 않는 편의 기능을 이제 직접 구현할 수 있게 됨.
업체들이 클라우드 게임으로 더 이동하더라도 놀랄 일은 아님. 이미 Xbox Cloud Gaming으로 그 방향에 들어섰고, 앞으로는 실제 게임이 월드 모델 뒤에 감춰진 채 시뮬레이션될 것임.
Wine, CrossOver, Rosetta 같은 에뮬레이터를 전혀 쓰지 않는다고 했는데, 다른 둘은 몰라도 Wine은 에뮬레이터가 아님. 이름부터 “WINE Is Not an Emulator”임.
CrossOver는 Wine의 상용판임. Rosetta는 Wine과 정반대의 문제, 즉 운영체제는 같지만 CPU 아키텍처가 다른 상황을 해결하며 x86 명령어를 ARM64 명령어로 재컴파일함.
Apple은 이를 에뮬레이터라고 부르지 않음. 운영체제를 에뮬레이션하지는 않지만 사용자 모드 CPU 에뮬레이션은 하니, 정확히 뭐라고 불러야 할지는 모르겠음.
역대 최고의 게임으로 꼽는 N64의 Wave Race 64와 1080° Snowboarding이 정적 재컴파일되어 Steam Deck에서 즐기고 있음.
다만 Anthropic이 이미 시스템 프롬프트에서 게임 재구현을 막고 있어, 이 즐거움도 곧 끝날 것 같음.
Anthropic은 거의 모든 것을 금지함. ChatGPT는 훨씬 관대한 편임.
Wave Race를 리메이크해 주면 좋겠음. 정말 훌륭한 게임.
증류를 통해 거부 성향을 제거한 모델이 나오면, 불과 몇 주 안에 이런 작업이 다시 가능해지고 이후에도 계속 가능할 것임.
실제 재컴파일은 어떻게 하는 건가요? 기존 도구를 쓰나요? 에이전트가 모든 루틴을 훑으며 어셈블리를 일일이 번역할 것 같지는 않음.
맞음. 핵심 작업은 기존 도구 두 개가 담당함. Remill이 x86 기계어를 LLVM IR로 변환하고, LLVM이 그 IR을 ARM64로 컴파일함. 나도 에이전트도 어셈블리를 손으로 번역하지 않으며, 15만 개 함수 모두 이 자동화 경로를 거침.
Claude와 작성한 것은 그 밖의 거의 모든 부분임. 사용자 정의 LLVM 패스, Windows 호출을 대체하는 직접 작성한 런타임, Direct3D 11→Metal 계층, 셰이더 변환이 여기에 해당함. 직접 플레이하고 수정을 반복하며 충돌도 하나씩 해결함. 자세한 내용은 README의 Pipeline 절에 있음. https://github.com/adrbn/bo2-mac#pipeline.
본문에 따르면 Remill이 각 함수를 LLVM IR로 변환하고, 자체 패스들이 IR을 재작성한 뒤 직접 작성한 Win32 런타임과 링크함. Direct3D 11 렌더링은 Metal이 담당하며, Wine이나 JIT 없이 단일 프로세스의 네이티브 코드로 실행됨.
실행 파일 3개에 걸쳐 약 15만 개 함수를 변환함. 복사 방지 기능이 숨기는 짧은 명령어 구간과 변환에서 누락된 코드는 작은 x86 인터프리터로 실행하므로, 변환에 빈틈이 있어도 게임이 충돌하는 대신 속도만 느려지도록 설계됨.
인상적인 작업임. 개인적인 게임 플레이 외에도 흥미로운 활용 가능성이 많아 보임. 다른 곳에서 Claude로 4개월 걸렸다고 했는데, 이 정도로 복잡한 작업치고는 매우 빠른 편임.
어떤 작업 흐름으로 만들었나요? 이제 디컴파일·역공학 제한이 추가됐는데, 지금도 가능한 작업이라고 보나요? 아니면 제한이 생기기 전에 작업할 수 있었던 건가요?
각자 별도 worktree에서 병렬로 실행한 Claude 세션들을 활용해 거의 4개월이 걸림. 수정이 끝났다고 판단하기 전에 반드시 측정했고, 개발 내내 테스트와 플레이를 병행해 각 변경의 실제 영향을 확인함.
아직 비슷한 새 프로젝트를 시작하지 않아 제한이 얼마나 달라졌는지는 모르지만, 적어도 지난 한 달 동안은 문제가 없었고 기존 세션들도 계속 정상적으로 작업 중임. Claude가 일부 요청을 거절할 때는 Codex(Astra) 도 큰 도움이 됨. 도구가 Steam에서 구매한 게임 사본으로만 작동한다는 점이 도움이 됐을 수도 있지만, 이는 매우 불확실한 추측임.
디컴파일 작업 중 Claude가 제한을 걸면 “오탐임”, “교육 목적임”, “문제를 수정하려는 작업임”이라고 말하는 것만으로 우회하고 있음. 안전장치라고 하기엔 허술한 수준임.