스크랩

2003년의 명작 RTS가 아이폰에서 네이티브로? Command & Conquer Generals의 Apple 포팅 이야기

2003년의 명작 RTS가 아이폰에서 네이티브로? Command & Conquer Generals의 Apple 포팅 이야기

핵심 요약

고전 RTS의 명작 Command & Conquer Generals: Zero Hour가 에뮬레이션 없이 Apple Silicon Mac, iPhone, iPad에서 네이티브로 실행되는 포팅 프로젝트가 공개되었습니다. 2003년 오리지널 엔진을 ARM64로 직접 컴파일한 결과물이라는 점, 그리고 엔지니어링의 상당 부분을 Anthropic의 Claude Fable 모델이 수행한 인간+AI 협업 프로젝트라는 점에서 큰 주목을 받고 있어요.

에뮬레이션이 아니라 '진짜 네이티브'입니다

이번 포팅의 가장 큰 특징은 가상화나 에뮬레이션 계층 없이 2003년 실제 엔진 코드를 ARM64로 컴파일했다는 점입니다. 그래픽 렌더링은 다음과 같은 변환 경로를 거칩니다.

DirectX 8 → DXVK → Vulkan → MoltenVK → Metal

캠페인, 스커미시, Generals Challenge 모드를 모두 지원하며, 모바일 환경을 위한 RTS 터치 조작도 구현되어 있습니다.

  • 탭으로 유닛 선택
  • 드래그 박스 선택
  • 길게 눌러 선택 해제
  • 두 손가락 스크롤, 핀치 줌

어떻게 가능했을까? — GPL 소스 공개와 커뮤니티의 힘

이 프로젝트는 갑자기 등장한 것이 아닙니다. 흐름을 정리하면 이렇습니다.

  1. EA의 GPL v3 소스 릴리스: 엔진 코드가 오픈소스로 공개되면서 모든 것이 시작됐습니다.
  2. GeneralsX 포트: fbraz3/GeneralsX 프로젝트가 macOS/Linux 포팅의 핵심 작업을 수행했습니다.
  3. 이번 포크: 여기에 iOS/iPadOS 대응과 엔진 수정사항을 얹은 것이죠.

한 가지 주의할 점은 게임 자산(에셋)은 포함되지 않는다는 것입니다. Steam 등에서 직접 소유한 게임 복사본의 데이터를 scripts/get-assets.sh 스크립트로 가져와야 합니다. 세일 기간에는 약 5달러 정도라고 하니 부담은 크지 않습니다.

빌드는 이렇게 진행됩니다

macOS의 경우

최초 1회 사전 준비(Xcode CLI 도구, Homebrew 패키지, vcpkg 전체 클론, LunarG Vulkan SDK 설치)를 마친 뒤 스크립트를 순서대로 실행하면 됩니다.

./scripts/build/macos/build-macos-zh.sh   # 의존성 확인 + 빌드
./scripts/build/macos/deploy-macos-zh.sh  # 배포 디렉터리 생성
./scripts/get-assets.sh <steam_username>  # 소유한 게임 데이터 가져오기
cd ~/GeneralsX/GeneralsZH && ./run.sh -win

참고로 vcpkg는 얕은 클론(shallow clone)을 쓰면 manifest baseline이 깨질 수 있어 전체 클론이 필요하고, Vulkan SDK는 Homebrew cask가 아닌 LunarG 공식 SDK를 사용해야 합니다.

iPhone·iPad의 경우

iOS 빌드는 조금 더 까다롭습니다. 전체 Xcode 설치, Apple Developer 계정, xcodegen이 추가로 필요하며, iOS용 DXVK 패치 빌드와 고정 버전 MoltenVK 프레임워크 다운로드 과정을 거칩니다. 게임 자산이 앱 번들 안에 포함되는 자체 완결형 설치 방식이라는 점도 흥미롭습니다.

아직 남아 있는 제약사항

완벽한 포팅은 아니므로 아래 내용은 알아두는 것이 좋습니다.

  • iPad 장시간 플레이 시 강제 종료 가능성: 메모리 상주가 약 3GB를 넘으면 iOS가 앱을 종료할 수 있습니다. 이때 경고 대화상자 없이 홈 화면으로 나가버립니다.
  • 백그라운드 전환 충돌: 게임 중 다른 앱으로 전환할 때 드물게 충돌하는 레이스 컨디션이 남아 있습니다.

결론은 하나입니다. 자주 저장하세요!

인간+AI 협업으로 만들어진 포트

이 프로젝트에서 특히 눈길을 끄는 부분은 제작 방식입니다. 엔지니어링은 Claude Code(Anthropic의 Claude Fable 모델)가 담당했고, Ammaar Reshi가 실제 기기에서 방향 설정과 플레이테스트를 수행했습니다. docs/port/ 디렉터리에는 편집되지 않은 엔지니어링 로그가 그대로 공개되어 있는데요, 특히 PORTING_PLAYBOOK.md는 실패 사례와 근본 원인, 수정 과정까지 기록되어 있어 고전 Windows 게임을 Apple 플랫폼으로 포팅하려는 개발자에게 훌륭한 참고 자료가 됩니다.

Hacker News에서도 "사람이 AI 모델을 이끌어 대규모 코드 변환을 수행한 좋은 사례"라는 평가와 함께, AI가 생성한 문서 특유의 문체에 대한 흥미로운 토론이 오갔습니다. 20년 이상 된 게임 엔진이 최신 모바일 기기에서 되살아나는 과정, 그리고 그 과정에서 AI 코딩 에이전트가 어디까지 기여할 수 있는지를 보여주는 인상적인 사례라고 할 수 있겠습니다.


원문: https://news.hada.io/topic?id=31138