조금 이상한 말처럼 보이겠지만, 나는 게임을 PC에서 플레이하는 것을 몹시 선호한다.
약간 다르게 이야기하면, 스마트폰으로 나온 게임조차 PC에서 플레이하려 한다는 말이다.
게임에 PC 전용 클라이언트가 있는 경우는 매우 편하다. 그저 공식 홈페이지에서 클라이언트를 다운로드해 설치하고 즐기면 되니까.
대개 그런 게임은 PC에서 더 월등한 그래픽 옵션을 즐길 수 있기 때문에, PC 게임으로 분류하는 편이다. 스마트폰 버전은 그냥 '스마트폰에서도 할 수 있다' 정도의 느낌이고.
하지만 모든 게임에 PC 전용 클라이언트가 있는 건 아니다. 그런 경우에는 흔히 '앱플레이어'라고 부르는 안드로이드 에뮬레이터를 사용해야 한다.
거의 대부분이 중국에서 만든 것이긴 해도, 수많은 앱플레이어가 인터넷에 무료로 공개되어 있다.
후술할 블루스택이나 원게임루프, 뮤뮤 앱플레이어를 제외하더라도 미뮤 앱플레이어, 녹스 앱플레이어 등 정말 많은 앱플레이어가 있다.
하지만 그중 내가 사용할 수 있는 건 얼마 없다. 바로 Hyper-V 때문이다.
프로그램 개발에 있어 필요한 요소인 WSL과 Docker 모두가 Hyper-V를 요구하는데, 대부분의 앱플레이어는 Hyper-V를 지원하지 않는다.
그런 앱플레이어를 Hyper-V가 활성화된 상태에서 실행하면 Hyper-V를 끄고 다시 실행하라는 메시지가 나온 후, 앱플레이어가 종료된다.
Hyper-V를 끄려면 반드시 재부팅이 필요하다. 귀찮기 짝이 없다.
하이퍼바이저는 호스트 컴퓨터에서 다수의 OS를 동시에 실행하기 위한 논리적 플랫폼이다.
Hyper-V나 앱플레이어 모두 이 기술을 기반으로 한다.
Hyper-V는 Type 1 하이퍼바이저로, 하드웨어에서 직접 하이퍼바이저를 실행하여 다른 OS 모두를 게스트 OS로 취급하는 하이퍼바이저이다.
- 하드웨어 → 하이퍼바이저 → 게스트 OS
대부분의 앱플레이어가 기반으로 하는 VMware나 VirtualBox는 호스트 OS에서 하이퍼바이저를 실행하고 그 위에 게스트 OS를 구동하는 Type 2 하이퍼바이저이다.
흔히 말하는 '가상머신'이 바로 Type 2 하이퍼바이저인 것이다.
- 하드웨어 → 호스트 OS → 하이퍼바이저 → 게스트 OS
당연히 한 하드웨어에서 Type 1 하이퍼바이저와 Type 2 하이퍼바이저를 동시에 쓰는 건 불가능하다.
그렇기에 Hyper-V를 지원하지 않는 앱플레이어는 Hyper-V가 활성화되었을 경우 오류 메시지를 출력하는 것이다.
하지만 최근 VirtualBox와 VMware 모두 Hyper-V를 지원하기 시작했다.
- VirtualBox: 6.0 이상
안정적 지원은 7.0 이상이라고 한다. - VMware: 15.5 이상
그러니 이들을 기반으로 하는 앱플레이어가 기반 소프트웨어를 업그레이드한다면 그것들 역시 Hyper-V를 지원하게 될 수도 있지 않을까.
내가 앱플레이어를 평가하는 기준이 되는 게임은 다음과 같다.
- 블루 아카이브
곧 스팀에 PC 전용 클라이언트를 내놓을 계획이라는데, 그때가 되면 앱플레이어를 쓸 일이 아예 없어질지도 모르겠다.
평가 항목은 다음과 같다.
- Hyper-V 지원
당연하게도 여기 적는 모든 앱플레이어가 Hyper-V를 지원한다. 하지만 거기에 대해 따로 적고 싶은 것이 있다. - 구동 성능
- 가상키 지원
앱플레이어 이름을 달고 가상키를 지원하지 않는 앱플레이어는 극히 드물다. 그러니 내가 중점적으로 볼 것은 각 게임별로 가상키 기본 프로필을 제공하느냐, 그리고 사용자가 편집한 프로필을 내보내고 불러올 수 있는가가 될 것이다. - 기타 좋은 점과 나쁜 점
블루스택 5
블루스택(BlueStacks)은 미국 캘리포니아에 소재한 Bluestack Systems, Inc. 에서 만든 앱플레이어이다.
MSI 앱플레이어는 블루스택 5에 MSI 스킨을 씌운 것이다. 다만 블루스택 5 원본보다 버전이 조금 낮다.
블루스택을 제외한 나머지 앱플레이어는 전부 중국에서 만들었기 때문에, 중국산 앱플레이어가 싫다면 블루스택이 유일한 선택지가 된다.
Hyper-V 지원
내가 기억하기로 블루스택은 Hyper-V를 지원한다고 공식적으로 밝힌 최초의 앱플레이어이다.
하지만 Hyper-V의 성능이 가상머신에서 쓰는 VT-x나 SVM보다 조금 떨어지는 탓인지, Hyper-V가 활성화되지 않은 PC에 블루스택을 설치하면 Hyper-V를 지원하지 않는 실행파일이 설치된다.
그래서 블루스택을 설치한 다음 Hyper-V를 활성화했다면 블루스택을 재설치해 Hyper-V를 지원하는 실행파일로 교체해야 한다.
구동 성능
한마디로 말하자면, 나쁘지도 좋지도 않다. 딱 중간 정도.
앱플레이어 하면 제일 먼저 언급되는 것 중 하나가 바로 블루스택이다. 그 이름값대로, 블루스택은 대부분의 게임을 큰 문제없이 구동할 수 있다.
하지만 그게 모든 게임을 아무런 문제 없이 30 FPS 이상으로 돌릴 수 있다는 말은 아니다.
가상키 지원
블루스택의 가상키 지원은 어디 크게 나무랄 데가 없다.
각 게임별로 가상키 기본 프로필을 제공하고, 사용자가 편집한 프로필을 별도로 저장하고 불러올 수 있다.
다만 '한 자리를 짧은 간격으로 여러 번 클릭하는 행위'는 가상키로 구현할 수 없었다.
기타 장점
광고 차단 가능
중국산 앱플레이어의 대표적 단점은 꼭 어딘가에 광고가 붙는다는 것이다.
일부 광고를 숨길 수 있는 옵션을 제공하는 앱플레이어가 있긴 하지만, 그 옵션을 활성화하더라도 모든 광고를 완벽하게 없앨 수는 없다.
하지만 블루스택은 가능하다.
광고를 보기 싫다면 설정에서 광고를 끄고 기본 홈 런처를 Mini Desktop 같은 경량 홈 런처로 교체하면 된다.
추가로 더 많은 광고를 차단하거나 기타 트윅을 하고 싶다면 BlueStacks Tweaker를 이용하면 되지만, 안타깝게도 해당 프로그램의 마지막 업데이트 일자는 23년 2월이다.
아마 MSI 앱플레이어와도 함께 쓰지 못할 정도로 오래되었을 거다.
기타 단점
블루스택 X 강제 설치
블루스택 온라인 인스톨러는 클라우드 기반의 블루스택 X를 강제로 설치하며, 이를 막을 수 있는 방법은 전혀 없다.
문제는 한국에서 블루스택 X를 제대로 활용할 수 없다는 거다.
지원하는 게임은 없다시피 하고, 사용 환경도 그리 좋지 않다.
블루스택 X의 설치를 막는 방법은 오프라인 인스톨러를 이용하는 것뿐이다.
블루스택 앱 내에 있는 업데이트 버튼 역시 온라인 인스톨러를 사용하기 때문에, 블루스택을 업데이트할 때에도 오프라인 인스톨러를 써야 블루스택 X의 설치를 막을 수 있다.
시스템 스터터링
가끔 블루스택뿐만 아니라 PC 전체를 버벅거리게 하는 버그가 있다.
말 그대로 모든 시스템이 버벅거리기 때문에 마우스조차 느리게 움직이게 되며, 이를 해결하는 방법은 블루스택을 강제종료하는 것뿐이다.
원게임루프
원게임루프(ONE GameLoop)는 중국 선전에 소재한 Tencent Holdings Ltd. 에서 만든 앱플레이어이다.
Tencent와 통신 3사가 합작하여 원게임루프를 만들었다고 하는데, 그 실상은 Tencent GameLoop에 스킨을 씌운 것에 불과하기에 Tencent 독자 개발이라 보아도 무방하다.
Hyper-V 지원
공식 홈페이지 그 어디에도 Hyper-V를 지원한다는 말은 없었는데, 막상 설치해 보니 정상적으로 Hyper-V를 지원한다.
구동 성능
대부분의 경우 블루스택보다 쾌적하게 게임이 돌아간다.
하지만 일부 예외가 존재하며, 꽤 치명적으로 다가온다.
블루 아카이브 <빛으로 나아가는 그녀들의 소야곡> 이벤트에서 극단적으로 프레임이 떨어진다.
이벤트 메인 화면에 진입하는 로딩 화면부터 프레임이 뚝뚝 떨어지기 시작하며, 화면에 표시할 것이 별로 없는 단순 대화 화면에서조차 프레임이 못 볼 수준으로 떨어진다.
제대로 게임을 할 수 없을 정도까지 프레임이 떨어지는 바람에 결국 원게임루프를 지우게 되었다.
가상키 지원
원게임루프의 가상키 지원은 조금 이상하다.
블루 아카이브 19세 버전의 가상키 기본 프로필이 없다.
설치된 파일을 뒤져보면 블루 아카이브 15세 버전의 가상키 기본 프로필은 존재하는데, 그 파일을 수정해 19세 버전을 대상으로 지정해도 가상키 기본 프로필이 나타나지 않는다.
수동으로 가상키를 추가하는 것 자체에는 전혀 문제가 없다는 점이 다행이다.
앱플레이어가 제공하는 뒤로 가기 키 역시 이상하기 짝이 없다.
대부분의 앱플레이어는 ESC키를 뒤로 가기 키로 할당해 두는데, 원게임루프는 뒤로 가기 키에 가상키를 할당하지 않는다.
창 상단에 있는 뒤로 가기 버튼은 빠르게 두 번 누르면 게임을 강제 종료하도록 하드 코딩되어 있기 때문에, 게임 내에 있는 뒤로 가기 버튼을 누르도록 가상키를 수동으로 설정해 눌러야 한다.
기타 단점
독특한 설계 구조
원게임루프의 구조는 다른 앱플레이어와 확연히 다르다.
대부분의 앱플레이어는 VirtualBox 혹은 VMware 기반이기 때문에, 가상 디스크 파일에 필요한 파일들을 저장한다.
시스템 영역을 담당하는 가상 디스크 파일이 읽기 전용으로 마운트 되고, 사용자 영역을 담당하는 가상 디스크 파일이 읽고 쓰기로 마운트 되는 형식이다.
하지만 원게임루프가 안드로이드를 구현하는 방식은 매우 생소하다.
나도 정확히 모든 걸 파악한 건 아니지만, 원게임루프는 물리 디스크에 트리 구조로 파일을 저장하는 것으로 보인다.
여기에 관여하는 프로세스는 aow_rootfs_100.exe
이고, aow_rootfs_100.exe
가 생성한 트리 구조를 사용자가 임의로 변경하면 원게임루프가 제대로 실행되지 않는다.
따라서 빈 폴더를 제거하는 프로그램을 쓴다면, 원게임루프가 설치된 경로를 반드시 제외해야 한다.
원게임루프가 게임을 실행하는 방식 역시 다른 앱플레이어와 다르다.
대부분의 앱플레이어는 실행 즉시 안드로이드 OS를 부팅한다. 이후 게임 실행이나 OS 설정 등은 사용자가 직접 조작해야 한다.
하지만 원게임루프는 실행 시 런처만 실행한다. 사용자가 직접 런처의 게임 실행 버튼을 눌러야만 안드로이드 OS를 부팅하고, 부팅이 완료되는 즉시 게임을 실행한다.
이는 OS 부팅과 게임 실행 사이에 사용자의 조작이 개입할 여지를 전혀 주지 않아, 가장 깨끗한 게임 환경을 이용할 수 있게 한다.
만약 여러 개의 게임을 하는 사람이라면 각 게임 사이에 안드로이드 OS 부팅이라는 긴 과정이 추가되기에 귀찮다고 느낄 수 있다.
- 통상적인 앱플레이어: 안드로이드 OS 부팅 → 게임 1 실행 → 게임 1 종료 → 게임 2 실행 → 안드로이드 OS 종료
- 원게임루프: 안드로이드 OS 부팅 → 게임 1 실행 → 안드로이드 OS 종료 → 안드로이드 OS 부팅 → 게임 2 실행 → 안드로이드 OS 종료
무슨 자신감인지는 몰라도, RAM 청소 기능이 없는 것 역시 이 독특한 설계 구조 때문인 것으로 보인다.
제한된 앱 설치 환경
원게임루프에 설치할 수 있는 게임은 오직 원스토어에 등재된 게임뿐이다.
즉 Play 스토어 버전의 게임을 설치할 수 없다.
아예 방법이 없는 건 아니다.
위에서 말한 게임 강제 종료를 통해 홈 런처에 진입한 다음 F9를 눌러 숨겨진 앱을 표시하면 '인터넷'이라는 앱이 나타난다.
구글에서 원하는 앱을 검색하면 Play 스토어 검색 결과가 나오는데, 우측 하단의 '설치' 버튼을 눌러 원하는 앱을 설치할 수 있다.
하지만 큰 의미는 없다고 생각한다.
원게임루프를 시작하면 원스토어 버전의 게임이 실행되는데, Play 스토어 버전의 게임을 실행하려면 매번 원스토어 버전 게임을 강제 종료한 후 홈 런처에서 Play 스토어 버전을 찾아 실행해야 하는 귀찮은 과정을 거쳐야 한다.
그게 그렇게 큰 의미가 있냐고 묻는다면… 아니라고 하고 싶다.
초경량 OS
캐시 파일을 생성하지 않는 게임은 없다. 캐시 파일이 많이 쌓이면 게임의 성능이 떨어지는 건 당연한 일이다. 따라서 캐시 파일은 주기적으로 청소해 줘야 쾌적한 게임을 즐길 수 있다.
원게임루프가 제공하는 임시 파일 제거 기능은 단순히 게임의 모든 데이터를 삭제하는 방식이기 때문에, 이를 이용하면 수 기가바이트의 게임 파일을 다시 다운로드해야 한다.
하지만 다른 앱플레이어에서 했던 것처럼 SD Maid를 설치해 캐시 파일을 지우려 하자, 파일 삭제에 필요한 애플릿이 없다는 오류 메시지와 함께 SD Maid 앱이 죽어버렸다.
캐시 파일 삭제를 대체 어떻게 하려고 파일 삭제에 필요한 애플릿까지 없앤 걸까?
오디오 재생 장치
대다수의 앱플레이어는 오디오 재생 장치로 '시스템 기본 재생 장치'를 선택할 수 있다.
어떤 장치가 현재 시스템 기본 재생 장치로 선택되어 있든 간에, 그 장치로 오디오를 출력하는 것이다.
하지만 원게임루프는 이를 지원하지 않는다. 반드시 시스템에 연결된 재생 장치 중 하나를 선택해야 한다.
따라서 나처럼 스피커와 무선 헤드셋을 동시에 이용하는 사람은 둘 중 하나를 포기해야 한다.
왜냐면 오디오 재생 장치를 바꾸는 것마저도 안드로이드 OS 재부팅을 필요로 하거든.
게다가 원게임루프는 시스템 오디오 출력 형식마저 깐깐하게 따진다.
만약 선택한 오디오 재생 장치의 출력 비트 수준이 48000Hz보다 높게 설정되어 있다면 아무런 소리가 나지 않는다.
따라서 오디오 재생 장치의 샘플 속도와 비트 수준이 '24비트, 48000Hz'를 넘지 않도록 조절해야 한다.
뮤뮤 앱플레이어 12
뮤뮤 앱플레이어 12(MuMu Player 12)는 중국 광저우에 소재한 NetEase, Inc. 에서 만든 앱플레이어이다.
Hyper-V 지원
다른 앱플레이어보다 높은 버전의 VirtualBox를 사용하고 있는 건지, Hyper-V를 잘 지원한다.
그런데 공식 홈페이지에서는 Hyper-V를 지원하지 않는 것처럼 써두었다.
구동 성능
매우 쾌적하다. 블루스택이나 원게임루프보다 더 프레임이 안정적으로 나온다는 느낌이다.
현재 쓰고 있는 앱플레이어가 바로 뮤뮤 앱플레이어이다.
가상키 지원
원스토어를 통해 설치한 블루 아카이브 19세 버전에도 가상키 기본 프리셋을 지원한다.
기타 단점
홈 런처 변경 불가
뮤뮤 앱플레이어에서 광고가 나오는 부분은 홈 런처가 유일하다. 그래서일까, 홈 런처를 변경할 수 없도록 되어 있다.
설정 앱에 들어가 기본 홈 런처를 별도로 설치한 앱으로 변경할 수는 있다. 하지만 앱플레이어의 다양한 부분이 시스템 홈 런처가 기본 홈 런처로 설정되어 있음을 가정하고 짜여 있기 때문에, 이를 변경하면 오히려 불편함이 가중된다.
- 앱플레이어 구동 시 사용자 설정과 관계없이 시스템 홈 런처가 열린다.
- 사용자가 설치한 홈 런처는 다른 앱과 마찬가지로 '새 탭'으로 열린다.
- 홈 버튼을 누르면 시스템 홈 런처로 이동한다.
프로세스 미종료
정확한 목적은 모르겠지만, 뮤뮤 앱플레이어를 종료해도 이 두 프로세스는 종료되지 않고 그대로 남아있다.
MuMuPlayerService.exe
crashpad_handler.exe
추측하기로, 뮤뮤 앱플레이어가 예기치 못한 이유로 강제종료되었을 때 관련 오류 보고서를 전송하기 위한 것으로 보인다.
MuMuPlayer/shell
경로에 위치한 두 프로세스의 이름을 변경해 실행을 막아도 뮤뮤 앱플레이어의 실행에는 전혀 문제가 없다.