2014년 5월 19일

언리얼 엔진 4 와 리눅스

저자: * Dmitry Rekman

과거 언리얼 엔진에 리눅스가 지원된 적이 있기는 했지만, 언리얼 엔진 4 에도 리눅스는 저희가 지원하고자 하는 일등급 플랫폼입니다. 리눅스 플랫폼 관련 저희의 계획은, 내부 프로젝트와 몇몇 협력사 프로젝트의 필요 사이의 균형을 맞추며 늘어가는 리눅스 커뮤니티의 요구를 수용하는 것입니다. 이는 언리얼 엔진 4 리눅스 개발에 있어서 크게 (저마다의 난제를 지닌) 네 영역으로 옮겨가고 있습니다:

  • 탄탄하고 안전하면서 CPU 효율도 높은 게임 서버
  • 모든 기능이 포함된 리눅스 클라이언트 지원
  • 기능적으로 풍부한 네이티브 리눅스 개발 툴
  • 리눅스를 타겟으로 쉽게 잡을 수 있도록 윈도우와 Mac OS 상에서의 툴 강화

언리얼 엔진 4 가 리눅스를 지원한다고 하면, 처음 세 가지만 떠올리기 쉽습니다. 그러나 리눅스를 게임 개발 업계에서 일반적인 플랫폼으로 부상시키고자 한다면, 기존 게임 회사의 작업방식에 매끄럽게 통합될 수 있도록 하여 리눅스 버전 게임 발매 비용을 최소화시켜야 합니다. 그것이 직관적으로 약간 어긋나 보이기는 해도 탄탄한 윈도우 및 Mac OS 툴이 필요한 이유입니다. 그래야 프로젝트 컴파일과 패키징을 다시 하는 것만으로 누구나 리눅스를 타겟으로 잡을 수 있기 때문입니다. 이것이 바로 네이티브 개발 작업을 더욱 쉽게 만들기 위한 작업과 아울러 크로스 컴파일 작업의 착수 및 계속적인 지원을 계획중인 이유이기도 합니다.

리눅스가 더욱 폭넓은 견인력을 발휘하도록 하기 위해서는 이렇게 크로스 툴을 가지고 기존 개발 환경을 이용하여 리눅스(, 그리고 특히 SteamOS)를 타겟으로 삼을 수 있는 능력이 필요하다고 믿습니다.

커뮤니티 참여

두 달 전 4.0 을 발매했을 당시는 리눅스 데디케이티드 서버만 지원했었으며, 이제는 패키징된 게임 실행까지 (독립형 게임 및 클라이언트 모두) 공식 지원되고 있습니다. SteamOS 를 염두에 두었기에, 윈도우에서의 크로스 컴파일 개발 방식을 공식 지원하도록 하는 x86-64 아키텍처를 의식적으로 고수해 왔습니다 (Mac OS 툴체인은 나중에 추가시킬 예정입니다). 그 프로세스에 대한 문서가 (솔직히 말씀드려 부족하기는 하지만) community wiki 를 통해 유지되고 있습니다.

말씀드릴 필요도 없이, 활기찬 리눅스 커뮤니티는 처음서부터 우렁찬 목소리를 내었습니다. 언리얼 엔진이라는 야수가 풀려나자마자, 열정적인 개발자들은 (저희보다 훨씬 큰 회사에 근무하시는 분들도 포함해서) 빠르게 느슨해진 고삐를 틀어쥐고 바로 자신만의 독창력을 발휘하기 시작, 개발 툴이 리눅스 플랫폼에서 실행되도록 하는 데 집중했습니다. 물론 그런 부분이 저희 계획에 있었(고 또 있)지만 (저희가 최근 공개한 엔진 로드맵 참고), 정말 솔직하게 이렇게나 빠를 줄은 몰랐습니다. 결국 커뮤니티 덕에 리눅스에서 언리얼 에디터가 실행되고야 말았습니다.☺

여기서 커뮤니티의 노력을 가장 활발히 주도해 주신 분들의 이름을 언급하지 않을 수가 없습니다:

물론 Freenode 의 #ue4linux IRC 채널과 저희 포럼을 자주 찾아주시는 분들이 많이 계십니다. 풀 요청이나 (제작진 목록에 반영하겠습니다), 피드백, 소중한 조언을 해 주신 그 모든 분들께 대단히 감사드립니다! 자유 시간을 할애하여 리눅스용 언리얼 엔진 4 를 개선시키는 데 도움을 주신 Google, Red Hat, MIT 분들, 뵙게 되어 영광이었습니다! 또한 DarkSide 분들께, 특히 어깨를 맞대고 UE4 리눅스 지원 작업을 함께 해 준 Michael Liebenow 에게 특별한 감사의 마음을 전합니다.

가 보지 못한 길

AAA 급 게임 엔진을 막 실험용으로 쓸 수 있다는 것은, 저희나 오픈 소스 커뮤니티에도 득이 되는 일입니다. 리눅스 소프트웨어군(과 물론 드라이버 포함) 컴포넌트 다수에 중점을 두고 있기에, 가끔씩 개선되는 기능이 있기도 합니다 (예: Valve 의 매우 편리한 OpenGL 디버거). 폭넓은 분야의 프로젝트를 만날 것을 기대하겠습니다!

컴파일러에 관련된 모든 종류의 연구에 저희 엔진이 매우 적합한 환경인 것으로 믿고 있으며, 특히나 가장 최신의 C++11 기능을 수용하고자 하는 적극적인 의지가 있다는 것을 감안하여, gcc 와 clang 커뮤니티 모두 저희의 방대한 코드 베이스를 활용할 것으로 희망합니다.

리눅스 플랫폼에서 언리얼 엔진 4 로 하고자 하는 작업이 너무 많은데, 시간이 부족한 것이 아쉬울 따름입니다:

  • 십 (또는 백) 단위 CPU 의 대규모 NUMA 머신에 게임 서버를 실행하고 그 활용 방법을 분석하여 언리얼 엔진 4 의 범위성(scalability) 개선
  • Loongson 같이 약간 이국적인 아키텍처에 이식하여 무슨 일이 발생하는지 확인
  • GCW Zero 핸드헬드 또는 Raspberry Pi 같은 리눅스 기반 디바이스로 이식 (과거 부분 작업을 한 적이 있기에, 써드 파티 라이브러리 제작에 도움이 될 수 있습니다.)
  • Phoronix Test Suite 에 포함시킬 수 있는 (라이선스에 의하면 소스나 툴을 배포하지만 않는 한) 무료로 사용가능한 벤치마크 제작 및/또는 리눅스 그래픽 드라이버 개선에 사용
  • 다른 *nix (FreeBSD, Solaris) 로 이식

그리고 물론, UE4 커뮤니티 여러분께서도 앞서갈 수 있는 기회가 있습니다. 언리얼 엔진 4 리눅스 게임을 처음 발매하는 분은 어떤 분이 될지, 기대가 큽니다!☺

여러분의 생각을 듣고싶습니다. 남기실 말씀이 있는 경우, 저희 네이버 카페 또는 포럼에서 (영문) 토론에 참가해 보시기 바랍니다!