클라이언트 기기의 전체 해상도로 스트리밍할 수 있게 해주는 Sunshine Fork 프로젝트, Apollo

게임과는 거리가 먼 애플 플랫폼을 쓰다보니 문라이트나 스팀링크 같은 게임 스트리밍을 자주 쓰곤 합니다.

컴퓨터 방에 게임용으로 쓰는 rtx 3070 게이밍 데스크탑이 있긴 하지만 전 주로 게임을 책상에서 안하고 식탁이나 소파에서 하거든요. 소음이나 발열 걱정 없이 집안 어디에서나 플레이할 수 있습니다.

다만 게임 스트리밍을 쓸 때 자주 접하게 되는 몇가지 문제가 있는데 가장 큰 문제가 해상도와 화면 비율 문제입니다. 특히 아이패드처럼 화면 비율이 일반적이지 않은 경우 16:9로 게임을 해야하니 상당한 공간을 손해보게 됩니다.

아이패드에서 게임 스트리밍할 경우 위 아래에 상당한 공간이 낭비 됩니다.

물론 PC 게임은 해상도 선택이 비교적 자유롭기 때문에 해상도를 조절하면 되지만 아이패드 같은 화면 비율은 프리셋(미리 설정된 해상도)에 없습니다. 심지어 맥북 에어 화면 비율 16:10만 해도 지원하는 게임이 많지 않습니다.

그래서 보통은 가짜 HDMI 어댑터를 이용하거나 그래픽 카드 제조사의 앱을 이용해 해상도를 강제로 조정하기도 하지만 스트리밍을 할 때마다 설정을 다시 해줘야 하는 번거로움이 있습니다.

해외 Reddit을 돌아다니다가 이런 번거로운 문제를 한번에 해결해줄 수 있는 프로젝트를 하나 발견했습니다. 오픈소스인 Sunshine의 Fork 프로젝트인 Apollo 입니다.

Sunshine은 Moonlight를 사용하기 위해 호스트 PC에 설치하는 스트리밍 프로토콜입니다. 이 Sunshine에 최적화된 해상도에 맞게 스트리밍할 수 있도록 기능을 추가한 것이 바로 Apollo 입니다.

Apollo를 설치하면 다음과 같이 아이패드에서도 해상도에 딱 맞게 스트리밍할 수 있습니다.

Apollo를 이용해 스팀 Big Picture를 띄운 모습
Forza Horizon 5에서 HDR + 풀 화면으로 스트리밍

Apollo의 또 다른 장점은 스트리밍 세션 자체가 가상 데스크탑으로 취급되기 때문에 스트리밍하는 동안 호스트 컴퓨터의 디스플레이를 아예 꺼버릴 수도 있다는 겁니다.

원래 게임 스트리밍은 주 모니터에서 출력하는걸 미러링하기 때문에 호스트 컴퓨터의 디스플레이는 수동으로 꺼줘야 합니다.(노트북 같은 경우에는 디스플레이만 따로 끌 수 있는 방법이 없어서 그냥 뚜껑만 닫기도)

하지만 Apollo는 스트리밍이 시작되면 호스트 PC의 디스플레이를 끄고 클라이언트에서만 스트리밍하도록 설정할 수 있습니다. 스트리밍을 끝내면 다시 원래 디스플레이가 켜집니다.

마지막 장점은 스트리밍 세션에 맞도록 디스플레이 설정을 조정해줄 수 있다는 겁니다. 호스트의 모니터가 HDR을 지원하지 않아도 클라이언트 기기가 HDR을 지원한다면 HDR을 설정해줄 수 있고, 화면 배율이나 해상도도 호스트의 설정에 영향 없이 별개로 설정해줄 수 있습니다.

원격 데스크탑 사용시에도 클라이언트 기기에 최적화된 해상도로 사용할 수 있습니다.

설치 방법

Apollo를 설치하는 방법은 어렵지 않습니다.

일단, 시스템에 Sunshine 이 설치되어있다면 기존 Sunshine 을 완전히 지워야 합니다. 충돌 가능성이 있기 때문입니다. 기존에 Nvidia 제어판 등으로 가상 디스플레이 설정을 만들어서 쓰고 계신다면 그것도 제거해주시는게 좋습니다.

아래 사이트에서 Apollo를 다운 받습니다.

https://github.com/ClassicOldSong/Apollo

참고로 현재 Apollo는 윈도우 버전 밖에 없습니다. 스팀덱을 호스트로 쓰고 계시다면 잠시 기다리셔야할 것 같습니다.

Apollo.exe 파일을 실행하여 설치합니다. 윈도우에서 위험한 파일이라는 경고가 나올 수 있는데 무시하고 설치하시면 됩니다.(해당 프로그램이 디지털 서명을 받지 않아서 나오는 경고이나 검증된 프로그램이므로 무시하셔도 좋습니다.)

Apollo 를 설치하면 가상 디스플레이 설치를 위해 재부팅을 한번 합니다.

Apollo를 설치 후 실행해보면 웹 브라우저에서 인터페이스가 실행됩니다. 계정과 암호를 만든 뒤 로그인하고 아래 화면이 나오면 설치 성공입니다.

참고로 위 화면에서는 iOS 용 클라이언트는 개발 중이라고 되어있지만 기존 Moonlight 클라이언트로도 사용할 수 있으므로 무시하셔도 됩니다.

그 다음 Moonlight에서 기기를 검색하거나 IP 주소를 입력해 호스트 PC를 추가해줍니다.

페어링을 하려면 호스트 PC에 4자리 수의 Pin을 입력해야합니다. 페어링 요청을 할 때 호스트 쪽에서 Alert이 따로 표시되긴 하지만 만약 Alert이 따로 표시되지 않는다면 Apollo의 웹 인터페이스에서 Pin으로 이동하여 Pin Paring 부분에 해당 Pin 번호를 입력합니다.

이렇게 하면 페어링은 완료됩니다. 만약 세팅을 완료했는데도 Moonlight 쪽에서 연결시 403 Permission Denied 같은 에러가 나온다면, 아래 Device Management 항목에서 권한을 설정해줘야 합니다.

추가된 기기에서 수정 버튼을 클릭하면 권한 설정 편집 창이 나오는데, 모든 권한을 다 체크해줘야 정상적으로 게임이 실행됩니다.

세팅 방법

위 설치 방법까지는 일반적인 Sunshine / Moonlight 와 다르지 않은데, 해상도를 맞게 세팅하기 위해서는 다소 추가 세팅이 더 필요합니다.

일단 Moonlight의 해상도 설정을 아이패드의 네이티브 해상도로 설정해줘야 합니다. Full 또는 Safe Area로 설정하면 됩니다.(M4 아이패드는 둘 다 별 차이 없음)

일단 Moonlight를 실행해보면 Sunshine에서 실행하던 때와 다르게 아이콘이 하나 더 보입니다. 바로 이 부분이 가상 데스크탑을 추가해서 실행하는 부분입니다. Virtual Desktop 을 선택해서 실행합니다.

Virtual Desktop 으로 실행해보면 아무것도 없는 빈 윈도우 화면이 나옵니다. 해상도에 맞긴 한데 커서도 보이지 않습니다. 윈도우에서 멀티 모니터처럼 인식된 것으로 호스트 PC에서 디스플레이 설정을 해줘야 합니다.

윈도우에서 바탕화면 클릭 후 디스플레이 설정으로 이동합니다.

디스플레이 설정에서 보면 1번과 2번으로 디스플레이가 인식된게 보입니다. 가상데스크탑으로 설정된 2번 디스플레이를 선택한 후 “이 디스플레이를 주 모니터로 만들기” 설정을 체크합니다.

여기까지만 진행해도 게임 스트리밍이 가능하나 저는 웬만하면 게임 스트리밍을 하고 있는 동안은 호스트 PC의 모니터는 끄고 싶었습니다. 이 세팅을 위해 아래 셀렉트 박스에서 “2에만 표시“를 선택합니다.

이렇게 설정하면 스트리밍을 시작하면 호스트 PC의 모니터가 꺼지고, 스트리밍을 종료하면 다시 켜지도록 할 수 있습니다.

윈도우는 각 모니터별로 설정을 다르게 할 수 있기 때문에 HDR 설정이나 화면 배율 설정을 원래 PC와 다른 설정으로 해줄 수 있습니다. 아이패드에 맞게 HDR도 팍팍 켜주고 화면 배율도 크게 해주면 아이패드에 최적화된 화면으로 볼 수 있습니다.

여기까지 하면 세팅이 완료됩니다. 이제 게임을 실행해서 해상도 설정을 해주면 됩니다.

귀찮긴 하지만 게임별로 해상도 설정은 각각 해줘야 합니다. 웬만한 2D 게임은 아이패드 네이티브 해상도를 지원하지 않지만 대부분 3D 게임은 아이패드의 네이티브 해상도를 잘 지원합니다.

605:417 이라는 괴랄한 해상도이긴 하지만..

아이패드 뿐 아니라 스팀덱, 맥북 에어와 같은 16:10 화면비를 가진 장치나 아이폰 같은 디바이스에서도 빈 공간 없이 게임을 즐길 수 있습니다.

덧. 어제 올린 HDR 설정과 함께 여기까지 설정해주니 아이패드의 OLED 화면으로 훌륭하게 HDR 게임을 즐기고 있습니다. 여러 게임을 해보는 중인데 가장 몰입도가 뛰어난건 아무래도 포르자 호라이즌 5 이었습니다. HDR이 제대로 지원되는 게임을 OLED 화면으로 하니 정말 차원이 다르네요.(사진으로는 표현이 안된다는게 아쉽습니다)

OLED 아이패드로 스트리밍해보니 OLED 스팀덱이 탐나게 되었다는..

덧2. Moonlight는 게임패드 뿐 아니라 매직 키보드, 마우스, 트랙패드 같은 장치들도 인식합니다. 그렇다는 이야기는 윈도우 원격 데스크탑 용도로 쓰기도 좋다는거죠. 게임도 스트리밍할 정도로 응답속도나 동영상은 거의 네이티브에 가깝게 사용할 수 있습니다. 심지어 8k HDR 120 프레임 화질의 유튜브 영상도 볼 수 있습니다.

아이패드로 원격을 통해 오피스로 문서 작업

덧3. 왜 Apollo라는 이름으로 따로 포크되었나 보니 해당 개발자가 Sunshine / Moonlight 쪽 개발진들과 갈등이 있었던 것 같습니다. 해상도 문제의 해결 방법에 대한 의견 차이가 있었고 결국 포럼에서 쫓겨났다고.

그래서 호스트와 클라이언트 앱을 각각 포크했는데 그게 각각 Apollo와 Artemis 입니다. Sunshine 역할을 Apollo(태양의 신)가 하고 Moonlight 의 역할을 Artemis(달의 여신)가 한다고 합니다. Artemis는 좀 더 최적화된 기능을 제공한다고 하는데 아직 안드로이드 용 밖에 개발되지 않은 것 같습니다.