맥과 아이폰에서 네이티브로 구동되는 하프라이프 2 (정적 재컴파일)
Half-Life 2 running natively on Mac and iPhone (static recompilation)
핵심 요약
Claude Code를 활용해 하프라이프 2를 맥과 아이폰에서 네이티브로 구동하는 정적 재컴파일 프로젝트를 성공시켰습니다.
- 프로젝트 성과 — 하프라이프 2와 에피소드 시리즈를 맥과 아이폰에서 구동함
- 개발 과정 — Claude Code를 활용해 x86 리눅스 코드를 ARM64 C 코드로 변환함
- 기술적 구현 — OpenGL 대신 Metal을 사용하고 터치 컨트롤을 지원함
- 사용 방법 — 스팀 게임 파일을 이용해 맥에서 직접 설치 파일을 빌드함

Portal 2에 이어 이제 Half-Life 2도 Apple Silicon에서 돌아갈 때가 됐다! Episode One, Episode Two, 그리고 Lost Coast까지 전부 포함임. (몇 년 전에 이미 네이티브 포트가 있긴 했는데, 그건 유출된 코드를 쓴 거라 좀 그랬지.)
Claude Code(주로 Opus 5.5)가 코드를 짰고, 내가 내 Mac이랑 iPhone에서 테스트하면서 결정 내리는 식으로 진행함. Portal 2 때 만든 리컴파일러가 Linux 버전의 x86 코드를 C로 번역한 다음 ARM64용으로 컴파일하는 방식인데, 이게 아주 제대로 먹혔음. Half-Life 2 첫 커밋부터 내 iPhone에서 게임이 돌아가기까지 이틀도 안 걸렸다.
-
1일 차: Claude가 게임별 프로필이랑 SSSE3 명령어, HL2에 빠진 Linux 임포트들을 추가했고, 최신 Steam SDK도 연결함. 저녁쯤 되니까 게임은 돌아가는데 텍스처 필터링이 안 되더라. macOS의 OpenGL에는 샘플러 객체가 없거든. Claude가 이것도 고치고, Portal 2에서 썼던 Direct3D 9 브릿지를 써서 HL2를 Metal 위에서 돌아가게 만들었음.
-
2일 차: 성능 최적화, 기본값으로 Metal 설정, 그리고 터치 컨트롤이 들어간 iOS 빌드까지 완료 (터치 컨트롤은 아직 좀 손봐야 할 수도 있음).
이제 설치 앱도 있다. 이걸로 Steam 게임을 찾아서 Mac에서 직접 빌드하면 됨(게임당 10~20분 정도 걸림). Xcode 커맨드 라인 툴이랑 (Steam 콘솔로 다운받은) Linux 바이너리가 필요함.
당연히 Steam에서 게임을 소유하고 있어야 함. 게임 파일은 하나도 안 들어있으니까. 빌드된 앱은 공유하지 마라. 이 프로젝트는 비공식이고 Valve랑은 아무 상관 없음.
Repo: https://github.com/kanapitsas/source-recomp
Installer: https://github.com/kanapitsas/source-recomp/releases/tag/v0.3.1
피드백은 언제든 환영!


