본문 바로가기
게임/출시 정보

닌텐도 3DS 에뮬레이터 시트라, 안드로이드 버전 공식 출시

by 사과향잉크 2020. 5. 28.

닌텐도 3DS 에뮬레이터 시트라(Ctira)가 안드로이드로 출시했습니다.

오래 전에 PC에서 안정적으로 실행할 수 있게 된 뒤로 에뮬레이터 기능보다도 많은 이들이 요청한 것이었죠.

휴대하면서 어디서든 게임을 하고 싶다며 질문하는 사람이 많아 개발사 디스코드 '자주 묻는 질문'란을 만들기까지 했습니다. 처음 답변은 '아직 안 만든다', 이후에는 '만드는 중이나 언제 나올지 모른다'였습니다.

 

기다리지 못한 사람들은 비공식 버전을 만들어 사용하기도 했습니다.

아래에서 설명하겠지만 그건 공식 개발진에게 악재였습니다만, 이제는 그럴 필요가 없습니다.

드디어 공식 안드로이드 버전이 나왔으니까요. 아직 베타 버전이라 완벽하진 않지만 말입니다.

 

 

Citra Emulator - Google Play 앱

Citra is a Nintendo 3DS emulator for Android, enabling you to play your favorite 3DS games on your phone! Features include: - Compatibility with hundreds of Nintendo 3DS games - Enhanced graphics, such as resolution scaling and texture filtering (these opt

play.google.com

개발진은 우선 순위가 밀렸고, 안드로이드 버전을 만들기에는 시간이 부족했기에 늦었다며 개발 과정을 설명했습니다.

먼저 2016~2017년, 외부 개발자였던 SachinVin이 혼자서 시트라를 안드로이드로 이식했습니다.

그렇지만 성능이 썩 좋지 않았죠. 사람들은 어쨌든 '시트라'라는 이름이니 시트라 공식 개발진에게 개선을 요구했습니다.

개발진은 SachinVin의 노력에 박수를 보내면서도, 난데없이 만든 적 없는 앱을 지원해달라는 요구는 거절하였습니다.

 

그러면서도 개발진은 사람들의 요청에 따라 각자 안드로이드 버전을 만들고 있었습니다.

시간을 낭비하지 않기 위해 SachinVin을 초청하여 같이 작업했죠.

 

시트라는 처음부터 크로스 플랫폼을 염두하여 개발했습니다. 윈도우, 맥, 리눅스를 지원하고 있지만 그게 전부는 아니죠.

윈도우용 시트라를 보면 citra.exe와 citra-qt.exe의 두 파일이 있습니다.

두 개는 인터페이스가 다른데 전자는 SLD 기반 기본 CLI, 후자는 Qt 기반 전체 기능 GUI입니다.

이런 식으로 UI가 코어로 분리되어 새로운 프론트 엔드를 구현할 수 있죠.

덕분에 보다 쉽게 안드로이드 버전을 만들 수 있는 기반이 있었지만 쉽지는 않았습니다.

 

거의 1년간 bunnei가 개발을 주도했는데 주요 개발진 중 안드로이드 개발 경험이 없었기 때문에 누가 방아쇠를 당겨야한다고 생각했죠.

돌핀 안드로이드 버전을 기반으로 시작해 SachinVin이 오픈GL ES 지원을 추가했고 개발진이 시트라의 핵심 요소를 추가하여 게임을 실행할 수 있게 됐습니다.

거기까지는 좋았지만 문제가 많았습니다. 설정은 초기화되고, 오버레이도 잘리고, 그래픽 문제도 있었죠.

또한 안드로이드는 버전이 다양하므로 다양한 기기에서 문제가 없도록 많은 테스트를 거쳐야했습니다.

 

jroweboy는 코드를 최적화했고 성능이 크게 좋아졌습니다.

SachinVin은 시트라의 JIT CPU 컴파일러인 다이나믹에 ARM64 백엔드를 구현했습니다.

다이나믹은 ARM CPU를 에뮬레이트하는 용도로 많은 안드로이드 기기 역시 ARM을 쓰지만 그냥 쓰면 게임에서 문제가 있었기에 다시 컴파일하여 안드로이드에서 작동하게 만들어야했습니다.

 

또한 모바일 프로세서는 PC만큼 강력하지 않기 때문에 멀티 코어를 최대한 활용해야했습니다.

그래서 시트라에서 갈라져 나온 스위치 에뮬레이터인 유즈(Yuzu)의 비동기 GPU 에뮬레이션을 가져왔습니다.

별도의 코어에서 GPU 에뮬레이션을 수행해 성능이 크게 좋아졌죠.

 

이후에는 UI와 UX를 개선했습니다.

PC에서 쓸 수 있는 기능은 안드로이드에 넣지 않았고, 설정을 단순하게 만들었습니다.

Flamboyant는 접근성 표준에 맞는지 확인하고 컨트롤러 오버레이를 새로 추가했습니다.

 

개선 전 / 후

이제 공개할 만하다고 생각했을 때 비공식 안드로이드 버전이 또 나왔습니다.

개발진의 수정 사항 중 유출된 것을 가져간 뒤에 몇 가지를 추가했고 GPL을 준수하지 않는 것이었죠.

그렇게 나온 비공식 버전이 큰 인기를 거두는 동안, 사람들은 왜 공식으로 출시하지 않는지 질문하기도 했습니다.

 

이후에는 더욱 엄격하게 작업하기 시작해 느리지만 확실하게 버그를 고치고, 기능을 추가하고, 성능과 UI를 개선했습니다.

2020년 2월에는 유즈에서 일하고 잠시 쉬던 bunnei가 다시 힘을 내었고 컨트롤러 지원을 추가했습니다.

거의 모든 컨트롤러(게임패드)를 지원하겠지만 만약 안 될 경우에는 개발진에게 연락해달라고 합니다.

 

BreadFish64는 오픈GL ES를 개선하고 많은 그래픽 문제를 해결했습니다.

모션 컨트롤, 폴더 검색, 설치한 게임 탐지, 텍스처 필터링 등을 추가하고 개선하기도 했죠.

모션 컨트롤은 기기의 자이로스코프로 작동합니다.

 

안드로이드 버전에서 실행한 여러 게임들

돌핀과 유즈에서 작업한 FearlessTobi는 돌핀의 개선사항을 이식했습니다.

아미보 파일, 번역, 마이크 지원을 추가했죠. 코드베이스를 정리하고, 많은 버그를 수정하기도 했습니다.

 

PC 버전에 많은 기여를 한 zhaowenlan1779는 PC에서 그랬던 것처럼 카메라 지원을 추가하고 소프트웨어 키보드 애플릿과 미 셀럭터를 구현했습니다.

그 덕분에 기기의 카메라로 시트라에서 QR 코드 등을 스캔할 수 있으며 게임에서 안드로이드 키보드를 사용할 수 있게 됐습니다. 미 사용도 편해졌고 마이크 지원도 개선했습니다.

 

가장 많은 기여를 했고 두 번째 비공식 안드로이드 버전을 만든 weihuoya는 안드로이드에서 AAC 디코딩을 구현했습니다.

AAC 디코딩 때문에 포켓몬스터 X·Y 등 많은 게임이 문제를 겪은 바 있습니다.

 

오래된 기기에서는 왼쪽 트레이너처럼 그래픽 문제가 있다

아직은 베타 버전입니다. 개발진의 노력 끝에도 간혹 버그가 있을 겁니다. 문제가 있으면 개발진에게 알려주세요.

앱을 실행하려면 64비트 안드로이드 8 오레오 이상이어야 하고 오픈GL ES 3.2를 지원해야합니다.

스냅드래곤 835 이상의 기기를 권장하며 GPU 드라이버에 따라 게임 환경이 다를 수 있습니다.

 

시트라는 무료이지만 후원을 하거나 프리미엄 버전을 구매해 안드로이드 개발과 서버 유지 비용에 도움을 줄 수 있습니다.

개발진은 가까운 미래에 PC와 안드로이드 버전을 동일하게 만들 예정입니다.

 

 

 

Citra Emulator - Google Play 앱

Citra is a Nintendo 3DS emulator for Android, enabling you to play your favorite 3DS games on your phone! Features include: - Compatibility with hundreds of Nintendo 3DS games - Enhanced graphics, such as resolution scaling and texture filtering (these opt

play.google.com

댓글