당연한 이야기입니다만 유튜브는 안드로이드 스마트폰의 킬러앱입니다. 아이폰도 유튜브가 멀쩡히 돌아가지만 안드로이드의 기능에 비해 부족해보이는건 사실입니다.

그런데 이 유튜브 앱이 꼭 필요한가에 대해서는 조금 고민이 생기더군요. 최근 유튜브 버벅거림이 심해져서 찾아보니 유튜브 앱의 버그였음이 밝혀졌습니다. 그냥 유튜브를 지우고 다시까니 해결됐다는군요.

저는 사실 유튜브앱도 웹 하이브리드 앱으로 만드는것이 어떨까라는 생각을 하고 있습니다.

무슨 귀신 씨나락 까먹는 소리냐고 할 수 있습니다만 유튜브앱에서 주로 쓰는 기능이라고 해봐야 구독채널의 영상과 추천영상기능 정도입니다. 그런데 이건 웹브라우저에서 실행되는 유튜브 페이지에서도 확인 가능하지요. 심지어 영상 업로드도 앱에서 오류가 자꾸 나길래 웹으로 들어가니 멀쩡했던 적도 있습니다.

이쯤되니 구글이 제공하는 유튜브 앱이 쓸데없이 많이 무겁다라는 생각이 들더군요. 어차피 우리가 원하는건 정상적인 영상재생이고 이는 HTML5이후 웹으로도 아무 문제없이 구동이 된다는것을 알고 있습니다.

그러면.. m.youtube.com으로 접속하는 웹뷰로 구동되는 앱을 하나 만들고 그냥 이걸 쓰면 유튜브앱의 버그를 충분히 회피하고 훨씬 가볍고 귀찮은 광고도 Adguard로 해결 가능하지 않을까 싶습니다.

이제 여기서 문제는 구글로그인 동기화 문제인데 서드파티 웹브라우저의 경우 꼭 문제를 일으키곤합니다. 웹뷰에서 동기화 기능을 켜면 된다고 하는데 이것도 케바케더군요.

그리고 킬러기능중 하나인 플로팅윈도우는 안드로이드7이후 제공되는 기능을 쓰면 쉽게 구현이 됩니다. 이는 프리미엄 구독을 해야 쓸 수 있는 기능입니다만 안드로이드에서 제공하는 기능을 쓰면 충분히 같은 기능을 뽑을 수 있습니다.

이쯤되니 웹을 써서 유튜브영상을 보는 기능구현이 어느정도 쉽게 될것 같은데 우선은 생각까지만 하고 나머지는 천천히 실행에 옮겨보는게 어떨까 싶습니다.
어차피 만든다고 해도 플레이스토어에 올린다던지 하고 싶지는 않네요. 구글이 싫어할것 같거든요.

,

Termux는 안드로이드에서 리눅스를 구동하는데 매우 편리한 앱입니다.

기본적으로 CLI만을 사용하지만 리눅스라는 특성상 여러 꼼수를 사용하면 GUI도 사용가능합니다.

 

하지만 제가 사용하고자 하는 것은 오래된 스마트폰을 라즈베리파이가 그랬던 것처럼 Python개발용으로 사용하는 것입니다. 특히 아무래도 개발용이기에 Python을 설치하는 것을 중시합니다.

우선 설치하고 Termux를 켜는 것으로 리눅스 구동이 바로 되고 백그라운드에서 실행되기까지 하기 때문에 상당히 안전하게 구동 할 수있습니다. (배터리 관리 프로그램이 Termux를 죽일수도 있는데 그걸 방지하는 설정을 꼭 합시다.)

 

Termux는 https://f-droid.org/packages/com.termux/여기서 다운로드 가능합니다

 

Termux | F-Droid - Free and Open Source Android App Repository

Terminal emulator with packages

f-droid.org

아래에 보시면 APK다운로드가 있는데 해당 APK파일을 다운로드받아 스마트폰에 설치하는 것으로 바로 리눅스 환경을 사용해볼 수 있습니다.

다만, Android 7이상을 요구하기 때문에 제가 쓰고 있던 구형 스마트폰은 Android6라 실행이 안 되지만 Termux 자체는 오픈소스이므로 Android 6에 맞추어 재 컴파일 하면 실행이 되었습니다.

 

혹은 레딧의 한 유저가 올려놓은 앱을 사용해도 됩니다. https://www.reddit.com/r/termux/comments/eoiics/trying_to_install_on_android_6/

 

trying to install on android 6

I have an old t-mobile g3. it has broken screen (so can't update OS using root since there is no way to mirror screen on my laptop on before...

www.reddit.com

Termux::Boot는 Termux가 실행될때 자동 실행이 되게끔 해주는 애드온입니다. 설치해두면 매우 편리합니다. 다만, 노가다가 더 편리할 수도 있으니 이건 넘어갑시다.

 

Termux를 실행하면 Terminal Emulator같은 앱이 뜨면서 CLI 리눅스 환경을 쓸 수 있습니다. 다만, 다른 배포판들이랑 명령어가 조금 다릅니다.

패키지 설치 명령어는

pkg install (패키지 이름)

 

우선 내부 스토리지 접근의 경우

termux-setup-storage

 

위 명령어를 사용하면 ~/storage 폴더가 생기면서 스마트폰의 내부 스토리지에 접근이 가능해집니다.

특히 ~/storage/shared 는 우리가 스마트폰을 쓰면서 죽어라 들락날락하는 위치이므로 유용하게 사용이 가능합니다.

 

이것 만으로도 훌륭한 리눅스환경이지만 유저랜드가 역시 좀 부족합니다.

현재 termux는 공식 서버와 bintray등에서 서비스되는 저장소등이 있으나 일부 앱들이 실행이 안 되고 있습니다. 그리고 디렉토리 구조 문제로 일부 호환성문제가 있습니다. 그래서 우분투나 데비안, 아치, 페도라 같은 환경을 따로 구축해서 구동하는 것을 추천합니다.

 

termux위에 우분투 유저랜드를 구축하면 그냥 우분투 ARM버전을 쓰는 방식으로 apt 명령으로 편하게 사용이 가능합니다.

 

https://github.com/MoorDev/termux-ubuntu

 

GitHub - MoorDev/termux-ubuntu: Ubuntu chroot on termux

Ubuntu chroot on termux. Contribute to MoorDev/termux-ubuntu development by creating an account on GitHub.

github.com

https://github.com/Neo-Oli/termux-ubuntu 여기 있던 스크립트를 일부 수정해서 21년 현재 지원이 되는 18.04와 20.04 버전이 설치가 가능하게끔 스크립트를 만들어 놓았습니다.

 

우분투 환경을 만드는 방법은 다음과 같습니다. 우선 wget과 필수적인 proot가 없으므로 wget과 proot를 설치합니다.

 

우선 ~/로 접근한다음 (퍼미션 문제)

cd ~/

pkg install wget proot

wget https://raw.githubusercontent.com/MoorDev/termux-ubuntu/master/ubuntu-20.04.sh

bash ubuntu-20.04.sh

 

위와 같이 명령어를 치면 무언가 쭈르르륵 다운받고 압축풀고 하면서 마지막에 ./start-ubuntu.sh 를 실행하면 된다고 뜹니다.

(실제 디렉토리는 ~/ubuntu-fs 가 됩니다.)

실제로 ./start-ubuntu.sh를 실행하면 우분투환경으로 바뀌면서 우리에게 익숙한 apt를 쓸수 있게 됩니다. 디렉토리 구조도 문제 없고 심지어 Xorg와 VNC서버를 설치한 후에 VNC로 접근해서 GUI도 볼 수 있습니다.

 

이제 파이썬을 설치해봅시다.

apt install python3 python3-pip

 

이제 익숙하다못해 편리한 python3와 pip를 쓸 수 있게 되었습니다. 다만 현재 환경은 ARM이므로 기존에 사용하던 AMD64와 저장소도 다르고 라이브러리도 다릅니다. 딥러닝쪽인경우에는 고생깨나 해야 합니다.

딥러닝 라이브러리는 ARMv7(32비트)를 지원하지 않아서 구형 스마트폰에선 구동이 되지 않습니다. 다만 라즈베리파이3가 32비트이고 아직 많이 쓰이기 때문에 라즈베리파이3용으로 만들어진 많은 라이브러리를 가져와서 구동이 가능합니다.

 

대표적인 것이 onnx runtime의 라즈베리파이3 버전인데 (https://github.com/nknytk/built-onnxruntime-for-raspberrypi-linux/tree/master/wheels/buster) 여기있는 것을 가져와서 써도 됩니다.

 

그리고 Termux에서(./start-ubuntu.sh를 하지 않은) SSH를 설정하는 방법은

pkg install openssh

이걸로 SSH 서버를 설치하고

 

whoami 명령으로 현재 내 이름을 찾습니다. 보통 u_aXXX 형태로 되어 있습니다.

그 다음 passwd 명령으로 패스워드를 설정합니다. 이 패스워드가 곧 SSH접속 패스워드가 됩니다.

 

이제 SSH접속하는 곳에서

ssh u_aXXX@(스마트폰IP) -p 8022

이렇게 하면 패스워드를 물어볼것이고 termux 환경에 SSH로 접속이 됩니다. 포트포워딩을 하거나 하면 멀리서도 접속이 가능해지겠죠!

 

Termux에 우분투 환경을 갖추고 numpy ARM버전을 설치하는 중. 너무 편리해서 말이 안 나온다.

이런식으로 구형 스마트폰을 훌륭한 개발 플랫폼으로 만들 수 있습니다. Termux로 ARM 리눅스를 한번 구축해보세요!

,

최근 스마트폰은 다크모드를 지원합니다.
야간의 시인성을 높이고 AMOLED의 수명을 위해서 배경을 검게 하는 것인데요.

본래 사람은 검정화면보다 흰색화면을 더 선호하던 탓에 대다수 앱과 웹페이지들은 하얀색 배경을 상정하고 만들어졌습니다.

그나마 2020년 현재에는 다크모드가 보편화되서 좀 상황이 나은 편이지만 업데이트가 끊겼거나 그냥 실력부족으로 혹은 기타 이유로 아직 흰색배경을 쓰는 경우가 많습니다.

하지만 방법은 있습니다. 구글도 이를 알고 강제 다크모드라는 것을 개발자옵션에 넣었고 또 문제가 되는 내비바는 써드파티 앱으로 해결이 가능합니다.

우선 강제다크모드는 안드로이드10 이후에 개발자 옵션에 있습니다. 다크모드에 관심이 있으실 정도면 개발자옵션을 활성화 하는것 정도는 아실거라 믿고



설정-다크 모드 강제 적용에 체크를 하는 것으로 다크모드가 지원이 안되는 앱(예 : 티스토리)에서 강제로 검정배경을 만들 수 있습니다.


 

그런데 다크모드를 켜도 이렇게 나오는 경우가 있습니다.
이 경우에는 앱설정에서 내비바를 강제로 색을 지정한 경우입니다. 이러면 기껏 만든 부분에 하얗게 더 경계를 만들어서 AMOLED에 악영향을 끼칩니다.

앱에따라 내비바설정이 필요한 경우가 있지만 보통은 그냥 안드로이드 4.4이전처럼 까만색이 더 디스플레이 수명에 좋습니다.

이때는 써드파티앱을 쓰시면 됩니다.

https://play.google.com/store/apps/details?id=pl.damianpiwowarski.navbarapps

Navbar Apps - Google Play 앱

Tired of your boring Navigation Bar? Make it awesome! Turn it blue, make it red - anything you want. Select cool image as background or match color automatically to fit it to running app. Whatever you choose, it will be awesome! And then you can add some d

play.google.com

이 앱은 내비바에 각종 색을 입히거나 강제설정을 할 수 있는 앱입니다. 만약 돈을 쓴다면 더 예쁜 내비바도 만들 수 있지만 우선은 색만 바꾸는 것이니 그냥 무료버전으로도 충분합니다.

앱을 실행하면 다음과 같이 뜹니다.

여기서 LET'S DO IT!
Allow App to draw over other apps를 눌러서 내비바앱이 다른 앱위에서 돌아갈 수 있게 하자
여기서 권한을 주면 된다.

접근성 서비스에서 내비바를 쓰기로 허가하자.

설치된 서비스 안에 들어가면 NavBar가 있다.
그리고 배터리최적화(Battery Optimization)관련 경고가 뜬다면 시키는 대로 Turn off하자.


그리고 Change color of navigation bar에서 Static color를 선택하고 다음과 같이 설정합니다.

 Enter hex color를 누르고 ffffff를 쓰셔도 됩니다.

이제 모든 부분을 검정색으로 나오게 할 수 있게 되었습니다!

,

안드로이드는 Play 스토어를 사용하고 있다면 Play 스토어가 알아서 해당 앱을 업데이트 해주는 기능이 있습니다.


사용자가 사용하지 않고 있거나 성능이 남아 돌경우(?) 업데이트를 실시해서 언제나 최신 버전을 사용할 수 있게 해주는 편리한 기능입니다.


하지만 사용자에 따라서는 구버전에서 더 이상 업데이트를 하기 싫은 경우도 있을 것입니다. 과도하게 인터페이스가 바뀌었거나 구형 OS를 사용할 수 밖에 없어서 해당 버전에서 굴릴 수 있는 구버전만 돌아간다던지 등등...


특히 몇몇 앱의 경우에는 새로운 버전보다 구버전이 훨씬 더 나은 경우도 있습니다. 바로 ES 파일 탐색기가 대표적인데요. 안드로이드에서 사용하는 파일 탐색기 앱중에서 가장 좋은 평가를 받았고 깔끔하다는 소리를 많이 들었습니다. 경쟁작인 아스트로 파일 매니저는 매번 업데이트 할 때마다 버그로 몸살을 앓고 있던 반면 ES파일 탐색기는 상당히 안정적인 파일 관리가 가능했습니다.


파일 관리라는 기능에 충실했던 ES 파일 탐색기 3.0



하지만...ES 파일 탐색기가 4.0으로 되던 날 쓸데없는 메모리 정리 기능과 갑작스럽게 뜨는 광고, 무료 버전보다도 못한 유료 버전으로 평가가 바닥을 향해 내려가기 시작했습니다. 사람들은 구버전으로 되돌리기를 원했고 APK백업 사이트를 통해 APK 파일을 구해서 설치했습니다.


다운로드 매니저와 시스템 분석기, 메모리정리 등 각종 잡 기능이 붙어버리면서 무거워져버린 ES 파일 탐색기 4.0의 모습 여기에 가끔 광고도 뜬다.



하지만.... 이놈의 Play스토어는 생각없이 업데이트를 진행해서 다시 4.0으로 버전업을 자행하더군요.



그리하여 Play스토어의 자동업데이트를 막는 방법에 대해 알려드리겠습니다. 생각보다 알고 계신 분이 적더군요.


1. 우선 Play스토어에서 구 버전으로 되돌리고 싶은 앱을 제거합니다.

2. 해당앱의 구버전APK를 구해서 설치합니다.

저는 http://www.apkhere.com/app/com.estrongs.android.pop

이곳을 이용했습니다. 링크는 ES 파일 탐색기의 APK를 모아놓은 곳입니다.


아래에 가면 Old Version이 있으니 여기서 다운로드 받으면 됩니다. 3.2.5.5를 다운로드 받으면 되겠군요.

이곳 말고도 다른 APK 백업 사이트는 많으니 찾아보자.


com.estrongs.android.pop_3.2.5.5.apk

혹시 몰라서 여기에도 올립니다.


3. Play스토어가 업데이트를 하기 전에 먼저 Play스토어의 내 앱으로 들어갑니다.

4. 설치 된 앱 리스트 중에서 APK로 설치한 앱을 누릅니다.

5. 오른쪽 위의 :을 누른 뒤에 자동 업데이트의 체크를 풀어버립니다.

아래에 있는 업데이트 버튼이 실행을 바뀌었다면... 다시 제거 후 똑같은 작업을 해야 한다. 그냥 통신을 끊자.

이렇게 하면 자동 업데이트가 풀리면서 내가 원하지 않는 이상 Play스토어가 업데이트를 하는 일이 발생하지 않게 됩니다. 그리고 원하지 않는 업데이트를 막을 수 있게 됩니다.


6. 가끔 앱중에서 자체적으로 업데이트를 진단하는 경우가 있는데 당연히 업데이트를 안 한다고 하면 되겠습니다.

자동 업데이트 무효화 기능이 알아서 있을 경우에는 참 좋은데 몇몇 앱은 업데이트를 강제하기도 한다. 이 경우는 답이 없다.

안드로이드 사용자 분들 중에서 최신판 앱이 싫으신 분들은 이런 식으로 구버전에 눌러 앉을 수 있게 할 수 있습니다.

,



Playstation은 90년대에 처음 등장하고 지금까지 시리즈가 내려와 그동안 게임콘솔계의 큰 업체였던 SEGA를 침몰 시킨 흔한 가전업체(?) Sony의 게임기입니다.


지금은 어느새 PS4까지 나와서 게임들이 쏟아져 나오고 있습니다. 당시 소니에서는 이렇게까지 잘 나갈거라고 생각은 안 했다고 합니다. 하지만 어쨌건 게임은 충실히 나오게 되었고 이는 PS2가 나올때까지 계속되었습니다.


그렇다면 당연히 이런 게임기의 에뮬레이터가 안 나올 수는 없겠지요. 초창기에 Platstation의 에뮬레이터가 만들어지고 있다고 했을 때 말도 안 된다고 징징댔던 사람도 있었다고 합니다. 하지만 시대는 변하고 PC의 성능은 말도 안 되게 좋아져서 PS 실기만으로 해결 할 수 없는 화질 등의 개선이 이루어지는 등 지금은 에뮬레이터의 성능이 훨씬 더 막강해 졌습니다.


현재까지 알려진 Playstation의 에뮬레이터는 다음과 같습니다.


1. VGS

2. Bleem!

3. ePSXe (http://www.epsxe.com/)

4. PCSX (https://pcsxr.codeplex.com/)


이외에도 상당히 많지만 보통은 이 정도만 사용합니다.


특히 여기서 Bleem!은 에뮬레이터의 존재에 대해 많은 것을 일깨워준 물건인데 에뮬레이터 주제에 유료로 판매하려고 했던 물건입니다. 결국 소니의 저작권 철퇴를 맞고 사라지게 되었습니다.


VGS는 Shuffix란 업체에서 만든 것인데 2D는 굉장히 빨랐지만 3D가 영 아닌 모습이 나오게 되어서 이 쪽도 사용자 층이 확 줄어버렸습니다. (Shuffix란 이 업체는 VirtualPC란 엄청난 물건을 내놓게 되고 승승장구 했었지만 결국 가상머신 기술이 필요했던 Microsoft에 인수 되었습니다.)


결국 남은 것은 ePSXe와 PCSX만이 남았군요. 이 둘 중에서 유명한 것은 ePSXe입니다. 사용자층도 넓고 플러그인의 개발이 아직도 진행중입니다.


https://play.google.com/store/apps/details?id=com.epsxe.ePSXe

성능에 걸맞게 유료다! 하지만 Drastic보다는 싸다.

다만 그 성능에 걸맞게 4500원 상당하는 유료 앱이라는 것이 걸림돌입니다. PC용은 무료로 배포되고 있지만 안드로이드는 포팅상의 문제가 있는 것인지 유료입니다. 

하지만 정말 성능과 플러그인 지원만큼은 정말 훌륭합니다.


그 중 제일 대박인 플러그인은 FinalFantasy7의 로우폴리곤 모델을 하이폴리곤으로 바꿔주는 플러그인인데 기본적인 그래픽 향상이 눈에 확연히 보입니다. 그 밖에도 특정 게임용 플러그인들이 즐비합니다. 그만큼 지원이 좋다는 의미겠지요.


그럼 PCSX를 알아볼까요?

지금의 PCSX는 PCSX-Reloaded(통칭 PCSXR)라 해서 한번 PCSX에서 갈라진 프로젝트입니다. 기존의 PCSX홈페이지는 사라졌고 지금은 여기있는 PCSXR이 그 역할을 수행중입니다.

그런데 ePSXe에 비해 딱히 나은 것도 없고 사용자층이 두터운 것도 아니지만 제가 이 프로그램을 알려드리는 것은 다 이유가 있겠지요.


바로 이 프로그램이 대부분 안드로이드용 PS1 에뮬레이터의 기반 소스 코드가 되기 때문입니다. (즉, 이건 오픈소스입니다.) psx4droid란 물건이 가장 유명한데 이 물건은 아쉽게도 업데이트가 끊기고 최신 안드로이드에 대응을 못하면서 사장 되었습니다. 물론 구형 안드로이드 폰이 있으신 분은 이 쪽을 찾으시면 되겠지요.


psx4droid의 스크린샷. 하지만 안드로이드 5.0이후부터는 제대로 돌아가지 않는다...



그래서 또 다른 앱은 없나 살펴보니 PlayStore에 있더군요. 바로 이번 주인공 PowerPSX란 앱입니다.


https://play.google.com/store/apps/details?id=com.emula.popsx

광고가 붙어있기는 하지만 무료입니다. psx4droid가 정상적으로 돌아갔다면 이 쪽을 추천했겠지만 이쪽은 제대로 안 돌아가는 관계로 대신 업데이트가 정상적으로 이루어지는 PowerPSX를 추천하는 것입니다.


대놓고 PCSX를 기반으로 했다고 하는 psx4droid와 달리 PowerPSX는 딱히 기반 코드를 알려주고 있지 않습니다. 다만, PCSX의 코드를 썼을 것이라는 느낌은 여러가지 게임을 돌리면서 대충 느껴지고 있습니다. PCSX에서 생긴 문제가 여기서도 똑같이 일어나거든요.


PowerPSX로 돌린 Megaman X4 스크린샷. 간만에 추억에 잠겨.... 폭망했다.


일단 2017년 현재 현역 안드로이드 환경에서 문제가 없습니다. 다만 내장 바이오스를 사용하면 호환에 문제가 많아 (PCSX 사용시와 동일한 증상) 따로 구글에서 SCPH1001이라 검색하거나 여기서(https://www.loveroms.com/extras/psx-bios.php)바이오스를 구해서 넣어주시는 것을 추천합니다. 일본판보다는 북미판바이오스가 호환성이 더 좋다고 하네요.


그리고 VR모드라고 지원을 하기는 하는데 이쪽은 그다지 좋지는 않군요. 그냥 화면을 분할해서 양쪽에 똑같은 화면을 뿌리는 수준입니다. 혼자 게임하고 싶다면 나쁜 생각은 아닌데 굳이 그러고 싶지는 않네요. 하지만 무료에 이 정도면 훌륭합니다.


결론부터 말씀드리자면 만약 돈을 지불해서라도 호환성과 각종 플러그인 지원을 받고 싶으시다면 ePSXe를

그냥 PCSX수준의 호환성 정도면 충분하다고 생각하신다면 PowerPSX를 이용하시면 됩니다.



처음 안드로이드 에뮬레이터 글을 쓴게 14년인데 근 3년만에 새로운 글을 올렸네요. 다음에는 N64나 다른 에뮬레이터 이야기도 하고 싶은데 시간이 될지는 잘 모르겠습니다.

,

구글에서 ARC란 좀 대단한 물건을 공개했었습니다. 크롬OS에서 안드로이드 앱을 돌릴 수 있게끔 만들어진 물건인데 크롬OS나 우리가 그냥 쓰는 구글 크롬이나 별 차이가 없기에 우분투나 윈도우에서도 얼마든지 ARC를 돌릴 수 있습니다.


우선 크롬에서 안드로이드 앱을 돌리기 위해서는 http://archon-runtime.github.io/ 여기에서 런타임을 받아서 크롬에 설치해야 합니다.


원하는 곳에 압축을 풀고 크롬에서 개발자 모드로 들어가서(이후로도 계속 개발자모드로 들어가야 합니다.


주소창에 chrome://extensions 으로 들어가면 여러분이 그동안 설치한 확장이 뜨게 됩니다.


그리고 오른쪽 위의 개발자 모드를 체크하시면 "압축 해제된 확장 프로그램 로드"가 활성화 되신 것을 보실 수 있습니다.  그곳을 누르고 압축 푼 폴더를 선택해 주시면 됩니다.

그러면 아래와 같이 ARCon Custom Runtime이라는 확장이 설치됩니다.


이제 안드로이드 앱을 설치해 봐야겠지요? 물론 그냥은 어렵고... 여러분들이 가진 안드로이드 기기를 이용해주시면 됩니다.


https://play.google.com/store/apps/details?id=me.bpear.archonpackager&hl=ko

여기에 있는 Arcon Packeger을 이용해주시면 여러분들이 가지고 있는 안드로이드앱을 크롬용 앱으로 변환해줄 수 있습니다. 물론 CRX타입이 아니라 아까 런타임같은 zip으로 내놓기 때문에 아까와 마찬가지로 임의의 위치에 압축을 풀고 "압축해제된 확장 프로그램 로드" 버튼으로 설치하게 됩니다.


현재 제가 해본 결과로는 간단한 앱은 상당히 실행이 잘 되는데 Arm용 코드가 들어간 앱이나 은행앱같이 보안 프로그램을 함께 실행하는 앱은 실행이 안 됩니다.(아쉽다...) 어쨌건 이렇게 확장을 설치하게 되면 크롬앱 메뉴에 안드로이드 앱들이 함께 추가되는 진풍경을 보실 수 있게 됩니다.

,

두 IDE의 차이는 성능상으로 큰 차이가 없고, 인터페이스도 사람들마다 반응이 달라서 완벽하게 비교는 저의 특성 상 어려웠습니다. 따라서 단순히 사용에 따른 문제와 그 부분에 대한 이야기가 주류로 쓰여질 것입니다.


안드로이드 앱을 개발하려고 한다면 분명 예전에는 100이면 100 Eclipse + ADT였습니다. 사실 그것밖에 답이 없기도 했고 Eclipse가 워낙 JAVA개발툴로써 제일 좋은 물건이었기 때문에 대부분 이것을 이용했고, JAVA를 이용하는 안드로이드로써는 Eclipse와의 궁합이 가장 중요했지요.


그런데 구글은 Eclipse가 상당히 마음에 안 들었던 모양입니다. 자체적으로 Android Studio란 물건을 내놓았거든요. 사람들 반응은 상당히 괜찮은 물건이라고 합니다. 제가 써본 결과로는 잘 모르겠네요. 다만, 한 가지 기능이 상당히 마음에 들던데, 그 기능은 바로 SDK버전 별로 APK를 빌드 해 주는 기능이었습니다.


Android Studio의 모습. Eclipse와 다른 것은 대체 무엇일까?


Eclipse 시절에는 한번 SDK 최소 버전을 설정하면 SDK버전을 맞추기가 상당히 어려웠습니다. 특히 프로젝트를 API 15로 시작했다면 나중에 구 버전 안드로이드 호환을 위해서 API10으로 낮춘다는 것은 불가능한 일이었습니다. 반대로 신 버전 안드로이드의 추가된 기능을 쓰기위해서 API버전을 올리는 것도 문제가 많았습니다. 컴파일이 안 된다거나 소스가 꼬인다던가 하는 일이 많았지요. 그런데 Android Studio로 만들면 이와 같은 문제가 한번에 해결되더군요. 빌드 할 때 API버전별로 APK를 뽑아내줍니다. 나중의 업데이트를 위한 방법으로 정말 좋은 기능이지요. 새 안드로이드가 나올 때마다 호환성 문제를 매번 겪는 것을 감안하면 정말 눈물 나게 고마운 기능입니다.


그 외에도 많은 개발자들은 Eclipse를 버리고 Android Studio로 넘어갔다는 후문입니다. 하지만 딱 하나 Android Studio를 쓰지 못하는 사람들이 있습니다. 바로 NDK가 지원이 안 되는 문제가 있습니다. NDK는 빠른 구동을 위해서는 필요한 라이브러리이지만 일반적인 어플에서는 필요없는 물건입니다. 특히 자바만 이용한다면 당연히 쓸모 없습니다. 하지만, 게임이라던가 동영상 재생기(MX플레이어 같은 소프트 디코딩 지원 재생기)라면 NDK는 없어서는 안되는 물건이지요. 이 사람들은 어쩔 수 없이 Eclipse를 써야합니다.


하지만 Eclipse를 NDK를 쓰지 않음에도 사용하는 사람들이 있습니다. 이 사람들의 생각은 바로 이것입니다. "구관이 명관이다." 아무래도 이 생각으로 아직도 Eclipse를 사용하는 것 같습니다. 심지어 구글은 아직도 Eclipse의 ADT를 지원해주고 있습니다. 그도 그럴 것이 Android Studio는 아직도 베타 딱지를 못 떼내었습니다. 각종 버그가 출몰 중이라고 하는군요. 저도 실행 중 튕김 증상을 겪었습니다. 아직 베타이니 그러려니 하지만, 진짜 중요한 개발이라면 별로 추천할 만한 상태는 아닌 듯 합니다. 아무리 좋은 기능이 있어도 안정적이지 못하면 그건 쓸모없는 것이니까요. 그냥 개인 개발자라면 그래도 무리없이 쓸 수 있겠지만 수십 수백의 돈이 오가는 프로젝트라면 불안정한 Android Studio보다 기존에 써왔던 Eclipse가 더 믿음직 할 것입니다.


기존 안드로이드 개발용으로 많이 쓰인 Eclipse의 모습. JAVA, C/C++등의 범용이라 안드로이드만의 특화 기능은 플러그인을 이용해야만 한다.

개발의 편의성은 Android Studio가 훨씬 더 우세합니다만, 익숙함은 Eclipse가 더 우세합니다. 당연한 이야기겠지만, Eclipse가 기존에 사용되어지는 바람에 서점의 대부분 책들은 아직도 Eclipse만을 설명하고 있습니다. Android Studio에 대한 책은 아직도 찾지 못했습니다. 거기에 따른 여파로 Android Studio에 대한 한국어 커뮤니티도 Eclipse에 비하면 작은 편 같습니다. 다들, 넘어가야한다는 것은 알고 있지만(구글이 Android Studio를 만든 이상 결국 이 것이 표준 개발툴이 될 것임은 당연해 보입니다.) 그동안 써온 습관과 익숙함 때문에 벗어나기 힘들다고 하는군요. 무엇보다 새로 배워야 한다는 부담감도 꽤 있는 듯 합니다. 같은 JAVA코드를 이용하지만, 인터페이스 자체가 다르다보니 생기는 문제라고 할 수도 있습니다.


지금으로썬 Eclipse가 편하다면 Eclipse를 써야겠지만, 결국 Android Studio가 자리를 잡게 되면 이것을 쓸 수 밖에 없는 날이 올 것입니다. 아니면 구글이 또 다른 IDE를 내놓을 지도 모르고요. IDE를 사용하는 것은 개발자 마음이지만, 사용자들은 새로운 기능이 나오면 이 기능을 이용하려고 합니다. 앱 개발자도 엄연히 말하자면 장사꾼이니까요. 장사꾼은 소비자가 원하는 것을 충족시켜줘야 물건이 팔립니다. 해당 앱의 미래를 위해서 제 생각에는 Eclipse로 개발된 앱을 Android Studio에서 바로 끌고 올 수 있었으면 좋겠습니다. 그런 방법이 있을 지는 잘 모르겠지만요.


Android Studio가 현재는 불안정한 모습도 보이고 있지만 Eclipse를 대체할 것은 확실해 보입니다. 기존 JAVA IDE가 아닌 안드로이드 전용의 IDE인 것도 한몫하고 있고, 그만의 특수기능도 가지고 있습니다. IDE와 통합된 테스트 환경이라는 것이 정말 편리하고 또 생산성도 월등히 향상시킵니다. 구글이 Android Studio의 안정화가 완료했다는 소식이 들려온다면 저도 지금 하는 프로젝트를 Eclipse에서 Android Studio로 옮길 예정입니다. 





과연 Android Studio는 Eclipse를 확실히 밀어내고 독보적인 IDE가 될 수 있을까요? 아니면 그동안 써온 IDE라는 장점을 안고 Eclipse가 계속 안드로이드 개발도구의 1인자가 될까요? 그것은 시간이 알려줄 것입니다.


2015. 10. 26

이 글이 적은지도 약 1년정도 지났군요.

http://www.zdnet.co.kr/news/news_view.asp?artice_id=20150628150257

현재 Eclipse 기반의 ADT는 지원이 종료됩니다. 그냥 Android Studio를 쓰는 것이 제일 낫습니다. 이제 버그도 많이 없어졌고 상당히 편리해졌습니다. NDK지원도 잘된다고 하니(Windows에서는 간간히 문제가 있다고는 하지만...가상머신이나 멀티부트로 우분투 깔면 해결됩니다.) 이제는 Android Studio를 쓰시면 됩니다.

,

저번 포스팅에서는 NDS 에뮬레이터에 대해서 포스팅을 했습니다. 우리나라에 NDS가 들어오던 시절에 또 다른 휴대용 게임기가 있었지요. 바로  PSP입니다. 제가 처음 PSP란 놈을 봤을 때가 아마 2000번대였던 것으로 기억합니다. 1000번대가 나오던 시절에는 제 친구들과 주변인 모두 가난한 학생이었고 굳이 PSP를 사야겠다는 생각이 들 정도로 재미있는 게임은 없었습니다. 즉, 견인차 역할을 해주던 메인 타이틀이 없었던 것이지요. 


그러다가 한국에서 견인차 역할을 해준 대중적(?) 게임이 하나 등장하게 됩니다. 그 물건이 바로 DJMAX Portable입니다. 저번 NDS 에뮬레이터 이야기에서 포켓몬스터가 주류로 나왔다면 이번 PSP에서는 이것이 주류로 나올 것입니다. 몬스터 헌터나 페르소나 시리즈도 PSP의 견인차 역할을 하기는 했지만 제가 Djmax portable나오기 이후의 이야기인데다가 제가 처음 PSP란 놈을 본 것도 다 DJMAX Portable시리즈 때문에 PSP를 사 들고 나타난 놈이 있어서 이 게임을 테스트 게임으로 삼아야 할 것 같습니다.


우선 에뮬레이터 이야기 하기 전에 게임기 이야기를 마저 하자면 PSP도 NDS 마냥 지하철 한 칸에 여러 사람이 들고 있지는 않아도 최소한 지하철을 생각 없이 돌아보면 들고 있던 사람이 보이는 그런 수준으로 꽤 많이 팔린 게임기 입니다. DJMAX Portable 출시 이후로는 학생들도 심심찮게 들고 다니는 모습이 많이 보이더군요. 그 뒤에 판매량이 좋아지고 2000번대와 3000번대 등의 신제품들이 나오면서 PSP도 휴대용 게임기로서의 역할을 충실하게 하게 됩니다. 물론 스마트폰들이 등장하면서 NDS와 함께 보기 힘들어진 같은 운명을 걷게 되기는 합니다. 하지만 역시 NDS와 마찬가지로 게임들 자체는 상당히 재미있는 것들이 많아서 인기 있던 게임기라면 통과의례로 겪는 에뮬레이터들이 만들어지게 됩니다. 그러나 구조가 비교적 간단했던 NDS와는 다르게 PSP는 생각보다는 복잡했던 모양입니다. 애초에 기기 성능도 조금 더 높고 게임 데이터 양도 훨씬 더 많아서 그럴 수 있겠다는 생각도 들지만 각종 홈브류(게임기 제작 업체로 부터 인증받아 정식 판매되는 승인된 게임이나 프로그램이 아닌 개인이 만들어낸 게임과 프로그램)들이 개발되는 것과 비교해서 에뮬레이터 개발은 비교적 늦은 편입니다. 그러다 어느날 한 에뮬레이터가 등장하게 됩니다. 그 이름은 Jpcsp입니다.


Jpcsp의 초기 화면 여느 프로그램 마냥 간단한 화면이다. 그런데 일부 라이브러리가 인식이 안 되서 구동하는데 조금 애먹었다.


PPSSPP 이야기 한다면서 갑자기 왜 Jpcsp 이야기냐고 하시는 분이 있을 것 같아서 말씀드립니다. 사실 PPSSPP가 지금의 호환성과 성능을 갖추게 되기 전까지 PSP에뮬레이터는 이 물건이 전부였습니다. 그리고 이 Jpcsp가 갖고 있던 문제는 PPSSPP가 해결하는 수순으로 갔고요. Jpcsp가 없었다면 지금의 PPSSPP가 나왔을 것이란 생각은 하기가 어려울 수도 있습니다. 그리고 다른 PSP에뮬레이터가 있었기는 했지만 이 물건이 가장 호환성이 좋았습니다. 다른 에뮬레이터는 그저 홈브류 개발 및 테스트용으로 만들어져서 홈브류를 구동하는 수준이었습니다. 하지만 Jpcsp는 본격적으로 정식 판매되는 UMD를 지원한는 에뮬레이터였습니다.


그런데 Jpcsp는 초기 단계라서 그런 것인지 문제가 여기저기서 터져나왔습니다. 이를 해결 하기 위해 정말 많은 사람들이 머리를 싸맸습니다. 지금은 Jpcsp의 태생적으로 해결이 안되는 것도 있고 PPSSPP가 해결한 문제도 있습니다.


첫번째 문제는 오디오코덱 문제입니다. PSP는 소니의 코덱기술을 사용하고 있는데 이것이 저작권 및 특허가 걸려있어서 에뮬레이터 개발에 문제가 되는 것이었습니다. 어느 분들은 에뮬레이터인데 그냥 가져다가 쓰면 안 되냐는 사람도 있을 지도 모르겠지만 에뮬레이터는 불법이 아닙니다. 하지만 특허가 걸린 기술을 가져다가 마음대로 사용하면 그 프로그램 자체가 불법으로 낙인 찍힙니다. 아니면 로열티를 내야 하는데 소니가 에뮬레이터의 로열티를 받으면서 허용해 줄 것 같습니까? 그래서 Jpcsp는 한동안 소리없이 에뮬레이터를 작동시켰어야만 했습니다. 이후의 사운드포지(소니가 만든 프로그램입니다.)의 라이브러리를 이용해서 우회하는 방안을 통해 재생시키는 법을 이용했지만 소리는 나와도 거의 누더기마냥 돌아가는 방식이라 가뜩이나 떨어지는 성능에 성능을 더 떨어뜨리는 방법이었습니다. 게다가 리눅스나 MacOSX는 써먹지도 못하는 방식이었고요. 지금도 오디오 코덱은 해결이 안 된 것으로 알려져 있습니다. 그런데 PPSSPP는 우회 리버스 엔지니어링으로 해결했다고 하네요?


두번째 문제는 자바로 만들어진 것입니다. 자바로 만들어서 여러 OS를 한번에 지원해주지만 문제는 자바이기에 속도가 C나 C++로 만들어진것에 비해 상당히 떨어집니다. 이 문제가 아까의 오디오코덱문제와 합쳐져서 엮이면 극악의 성능으로 바뀝니다. 요즘이야 PC성능이 좋아서 이 마저도 씹을 수 있을 정도지만 기기의 최고 성능으로 끌어내야할 게임이란 소프트웨어가 성능이 떨어진다면 문제가 많은 것이지요. 그래서 사람들은 C나 C++로 개발해달라고 아우성이었지만 Jpcsp가 원래 자바로 만든 에뮬레이터라는 뭔가 상당히 Geek스러운 물건이라 굳이 C로 다시 만들 이유야 없었습니다. 잠시 PCSP라는 C++로 만들어진 물건도 나왔지만 이것은 호환성이 너무 떨어져서 그대로 묻혀버렸습니다.

Jpcsp에 비해 빠르지만 호환성이 너무 떨여저서 묻힌 에뮬레이터 PCSP 이마저도 PPSSPP의 등장으로 2012년 이후 업데이트 중단이다.

세번쨰 문제는 오픈소스가 아니라는 것입니다. JAR파일 형태로 배포하기 때문에 만약 개발자가 때려치면 이 에뮬레이터의 수명은 그대로 끝이 나게 됩니다. 에뮬레이터의 특징 상 누군가가 소스를 받아주지 않으면 그냥 사라지는 것입니다. 위의 PCSP도 소스코드에 대한 이야기는 없는 것으로 보아 오픈소스가 아닌 것으로 보입니다. 오픈소스라면 묻히더라도 나중에 누군가가 다시 발굴해서 써먹을 지도 모를 일이고 다른 프로그램에 일부로써 쓸 수도 있습니다. 하지만 에뮬레이터라면 묻힐 일이 거의 없기도 하지요.


이러한 기존 Jpcsp의 문제를 극복하고 해결한 에뮬레이터가 바로 이번에 주인공인 PPSSPP입니다.


PPSSPP의 타이틀화면 다른 에뮬레이터랑 다르게 화려한 편이다. 그리고 오픈소스라는 것을 강조하기 위해 GPL이라 찍혀있는 것이 선명하다.

이 물건은 앞의 Jpcsp와의 차이가 큰 물건입니다. 앞에서 말했던 성능문제를 C/C++로 개발함으로써 해결했고 오디오코덱을 리버스엔지니어링을 통해서 저작권 및 특허를 회피했으며(이는 처음부터가 그랬던 것은 아니고 업데이트 하면서 해결했습니다.) GPL을 적용해서 배포한 오픈소스 프로그램입니다. 한번에 Jpcsp의 문제를 전부 해결했습니다. 이 에뮬레이터가 나오면서 게임을 즐기기위해 Jpcsp를 돌렸던 사람들은 전부 PPSSPP로 넘어왔다고 합니다.Jpcsp는 게임을 즐기기 보다는 자바로 만들어진 것이라는 그 사실이 워낙 특이하고 재미있어서 나온 것이니 Jpcsp가 묻힐 일은 없지만, 대세가 아무래도 PPSSPP로 넘어갔다는 사실은 확실히 와 닿는 것 같습니다.


그리고 PPSSPP가 Jpcsp뿐만아니라 다른 에뮬레이터와 차이를 보이는 것이 하나 더 있는데 그것이 바로 Android버전의 계획입니다. 다른 에뮬레이터는 안드로이드 버전과 PC버전을 다른 프로젝트로 생각하는데 비해(DeSmuME와 nds4droid, PCSX와 PSX4droid, FinalburnAlpha와 aFBA의 관계와 비슷합니다.)PPSSPP는 안드로이드버전도 같은 프로젝트 내에서 개발합니다. 즉, PPSSPP의 PC버전이 0.9.8이면 안드로이드 버전도 동시에 0.9.8로 업데이트 되는 것입니다. DeSmuME의 업데이트 이후 시간이 지난 후에 nds4droid가 업데이트되는 것과는 차이가 납니다. 덕분에 안드로이드에서 PSP게임을 돌릴 수 있게 됨으로써 지하철에서 보기 힘들어진 PSP는 스마트폰에 의해 또 다시 밀리게 됩니다. 그런데 이미 팔릴만큼 팔렸고 더 이상 소프트웨어도 안 나오는 판국에 밀릴 것도 없기는 하지만 PSP용 게임이 다시금 수요가 생길 지도 모른다는 생각이 드네요.(그것이 거래량에 추가 될지는 미지수이기는 합니다.)


그러나 같은 프로젝트 내에서 같이 업데이트되는 안드로이드와 PC버전은 코드가 약간 다른 것인지 소프트웨어 호환면에서 약간 차이를 보입니다. 일부 게임의 경우 PC버전에서는 구동이 잘 되지만 안드로이드에서 구동이 안 된다는 사람들이 많으며 반대로 안드로이드에서는 구동이 잘 되는데 PC에서 안 된다는 게임도 있습니다. 이것이 Arm과 x86의 차이일지 아니면 코드가 다른 것인지는 조금 살펴봐야 알 것 같지만, (일부의 소스코드가 다른 듯 합니다.안드로이드에서 무사히 구동하게 위해 코드 최적화를 하면서 차이가 생긴 듯 합니다.) 오픈소스이니 잦은 업데이트로 해결 할 수 있을 것이라고 믿습니다.


안드로이드와 PC 모두 잘 돌아가는 대표적인 게임 DJMAX Portable 2


PC에서는 잘 돌아가는 반면 안드로이드에서는 돌아가지 않는 DJMAX Portable 3 같은 시리즈지만 구동면에서도 차이가 있다. 2015.5 지금은 안드로이드에서도 무지하게 잘 된다...

안드로이드 버전에서는 써본 결과 터치 인터페이스가 상당히 불편합니다. 원하는 곳으로 이동이 안 될때가 있고 액션 게임의 경우에는 컨트롤 미스로 게임을 던져 버리고 싶을 때도 있더군요. USB-OTG를 지원하는 스마트폰이라면 그냥 조이패드를 붙여서 개임을 하던가 아니면 알아서 적응을 해서 게임을 하는 수밖에는 없을 듯 합니다. 특히 PSP는 워낙 버튼이 많아서 NDS게임을 스마트폰에서 하는 것에 비해 답답한 면이 많습니다.(NDS게임에는 대개 액션보다는 터치 게임이 많은 것도 한몫 합니다.) 이는 PPSSPP의 잘못이 아니기는 하지만 개인적으로 전용 컨트롤러를 하나 만들고 싶게 하는 수준입니다. 일반 조이패드를 끼우고 지하철에서 할 수는 없는 노릇이니까요.


버튼수가 너무 많아서 터치 인터페이스 자체를 거의 덮을 지경. 컨트롤 미스라도 나면 정말 화가 머리끝까지 난다.


하지만 내 학생시절 부러워 했던 PSP를 지금의 스마프폰에서 굴릴 수 있게 된 점은 상당히 마음에 듭니다. 특히 DJMAX Portable시리즈를 입맛만 다시고 제대로 한 적은 없는데(대신 PC버전인 Trilogy는 열심히 했습니다.)이제야 할 수 있게 되었네요. 누군가 그랬습니다."최고의 게임기는 PC"라고 그랬지요. 이제 한 문장 더 추가되어야겠네요. "최고의 휴대용 게임기는 스마트폰입니다."

,

닌텐도DS는 스마트폰 시대 이전의 지하철이나 버스에서 흔히 볼 수 있는 물건 중 하나였습니다. 그 당시 제 기억으로는 이나영와 장동건이라는 걸출한 스타의 CF를 통해서 홍보했던 것으로 기억합니다. 


이 때 정말 NDSL이 어마어마하게 팔려나갔습니다. 아 NDS가 아니라 NDSL이요. 닌텐도코리아를 통해 들어온 닌텐도DS는 NDSL입니다. 닌텐도DS 시리즈는 "휴대용 게임기의 강자는 역시 닌텐도다."라는 인식을 심어주기에는 충분했습니다. PSP가 훨씬 더 성능이 좋고 많은 기능들로 무장했었지만 장동건과 이나영을 앞세운 마케팅효과가 정말 주요했습니다.


하지만 닌텐도DS들은 어느 날 뜻하지 않은 경쟁자를 만나서 거리에서 모습을 감추기 시작합니다. 다름아닌 아이폰을 필두로 한 스마트폰들이 등장하면서 몰락의 길을 걷기 시작합니다. 아니, 이미 NDS와 NDSL, 그리고 NDSi는 수명이 끝나가고 있었다고 봐도 상관없었습니다. 하지만 갑작스럽게 사라졌다는 느낌일까요? 스마트폰들이 NDS시리즈를 밀어냈다는 느낌이 강했습니다. 하지만 NDS는 스마트폰에는 없는 정말 재미있는 게임들이 많았고 지금도 상당히 재미있습니다. 하지만 그렇다고 지금 NDS를 들고 다니는 것은 조금 무거운 느낌이 듭니다. 주머니에 들어가는 스마트폰이 있는데 NDS는 그에 비하면 너무 두껍다는 느낌입니다.


이런 NDS를 스마트폰을 대신 할 수 있게 만든 것이 바로 이번에 소개할 NDS에뮬레이터인 nds4droid와 Drastic입니다. 특히 Drastic은 스마트폰에서의 속도 문제를 해결한 에뮬레이터라 비싼 가격에도 어마어마한 양을 팔았습니다. 한 때 플레이스토어 다운로드 수 1위까지 갔었으니까요. nds4droid는 현재 가장 PC에서 호환성이 좋다는 DeSmuME를 기반으로 만들어져서 호환성 하나는 기막힙니다. 거두절미하고 바로 이야기 해보도록 하지요.


nds4droid는 오픈소스로 만들어진 DeSmuME의 소스코드로 만들어진 에뮬레이터입니다. 사실 이전에 NDS에뮬레이터 중에 no$gba라는 에뮬레이터가 있었습니다만, 업데이트가 워낙 안 되어서 이를 밀어내고 신흥 강자로 우뚝 선 에뮬레이터입니다. NDS게임을 PC에서 하겠다면 DeSmuME로 굴리는 것이 당연한 수준이지요. 호환성도 가장 좋고 속도도 상당히 괜찮습니다. 포켓몬스터 시리즈같이 유명한 게임의 경우에는 별 문제 없이 된다고 봐도 됩니다.


DeSmuME로 포켓몬스터 시리즈 정도는 별 문제없이 잘 돌아간다. 이 에뮬레이터를 안드로이드에 포팅하면? 스크린샷은 포켓몬스터-화이트2


약간 나온지 지난 물건은 필터까지 적용해서 깔끔한 화면으로 충분히 돌릴 수 있는 수준. 스크린샷은 포켓몬스터-하트골드


PC에서도 상당한 호환성을 보유한 에물레이터이고 오픈소스이기까지 한 물건이니 당연하게도 이를 안드로이드에서 돌리기 위한 프로젝트가 시작되었지요. 그리고 이윽고 nds4droid란 이름으로 플레이스토어에 등록됩니다. 사실 NDS에뮬레이터는 이전에도 상당히 많은 수가 플레이 스토어에 등록되었는데 가짜가 반이고 호환성 꽝이 나머지 였습니다. 되기는 되어도 1~2fps나올까말까한 수준이었지요. 그런데 nds4droid는 느리기는 하지만 그래도 15fps는 나와주었습니다. 실기에 비해 상당히 답답하기는 해도 못 할 수준은 아니었다는 것입니다. 포켓몬스터 블랙,화이트 이후 시리즈는 좀 힘들기는 했지만 그래도 그럭저럭 돌아가주며 희망을 보여주었습니다. 무엇보다 오픈소스인것도 한몫했습니다."NDS게임들이 스마트폰에서 돌아갈 날이 얼마 안 남았구나"라면서요. 그렇게 nds4droid를 통해 안드로이드 환경에서 NDS게임을 할 수 있다는 희망을 보게됩니다.


nds4droid로 포켓몬스터 블랙버전을 돌린모습 Nexus7 2011년형으로 돌린 것인데 타이틀에서 12fps이 나온다. 못할 수준은 아니지만 답답한 면은 있다.


nds4droid가 호환성을 확보하고 돌아가는 모습을 보여준 후, 어느 날 갑자기 플레이스토어에 갑작스런 핵폭탄이 떨어지게 됩니다. 그 이름이 바로 Drastic입니다. 6000원이라는 상당한 가격임에도 판매량이 어마어마했고, 별5개가 마구 쏟아지는 그런 어플리케이션이 나온 것입니다. 그 이유가 지금까지의 에뮬레이터의 추종을 불허하는 어마어마한 속도를 보여주었기 때문입니다. 그냥 실기 그대로의 속도를 보여주며 포켓몬스터, 마리오, 젤다같은 NDS게임들을 별 무리없이 돌리는 모습을 보여주었습니다. 심지어 실기와 비교해도 속도 차이가 전혀 나지 않았습니다. 이는 NDS에뮬레이터계의 거의 혁명 수준이었습니다.


Drastic의 타이틀 화면 군더더기없이 깔끔하다.


하지만 속도에서 혁명을 보여준 Drastic은 초기엔 호환성 문제가 많이 터졌습니다. 대표적인 것이 포켓몬스터 블랙/화이트버전에서 갑작스런 백화현상이 일어나는 것이었습니다. 지금은 당연하게도 해결되었지만 이 백화현상을 피하기 위해서 nds4droid로 세이브파일을 옮겨서 백화현상이 일어나는 구간을 지나간 뒤에 다시 Drastic으로 세이브 파일을 옮기는 등의 술수를 이용했습니다. 이외에 제가 직접 겪었던 문제로 날짜가 마구 헝클어지는 문제가 있습니다.(저는 최근

에도 겪었습니다. 7월인데도 배경은 겨울로 인식이 되더군요. 남반구로 인식이 된 것인지 해결이 아직 완벽히 안 된 듯 합니다.)하지만 개발자가 열의를 가지고 개발을 하고 있고, 사람들도 계속 구입 중인 것을 보면, 이런저런 문제는 해결될 듯 합니다.

하지만 Drastic은 큰 문제를 하나 안고 있습니다. 바로 오픈소스가 아니라는 사실입니다. PC에서 no$gba가 대세였다가 몰락 하게 된 이유는 no$gba가 클로즈드소스이면서 업데이트가 끊기는 바람에 오픈소스인 DeSmuME에게 밀린 것입니다. Drastic도 갑자기 업데이트가 끊길 가능성은 충분합니다. 개발자가 만약 업데이트가 어렵다면 오픈소스로 전환 할 수도 있겠지만, 지금의 판매량을 보면 그럴일은 거의 없을 것 같고, 개발자측에서 양심을 믿고 계속 개발해주기를 바래야 합니다. 두번째 문제로 닌텐도의 태클로 플레이스토어에서 추방될 수도 있습니다. NDS이전에 GBA에뮬레이터들이 플레이스토어에서 추방당한 전력이 있기에 이는 가능성이 정말 농후합니다. Tiger에뮬레이터도 당시에 정말 많은 게임기들을 지원했고 상당한 다운로드수(Tiger에뮬레이터들은 무료버전이 있었습니다.)를 보유했지만 그냥 전부 다 퇴출당하고 구글링을 통해서 구할 수밖에 없는 물건이 되었습니다. 오픈소스라면 소스코드가 남아있고 git을 통해 다운로드 받아서 쓸 수 있기 때문에 사라질 염려는 없다고 볼 수 있습니다. 그런데 nds4droid도 아직 플레이스토어에 남아있고 Drastic도 무사히 있는 것을 보면 닌텐도에서도 그냥 NDS시리즈는 포기한 것일지도 모르겠습니다. (한때 대숙청되었던 GBA에뮬레이터도 다시 올라와 있는 것을 보면 닌텐도에서 그냥 태클 걸기를 포기 했을 수도 있습니다.) 하지만 갑자기 닌텐도가 마음이 바뀌어서 언제 구글에 언제 갑자기 태클을 걸지도 모르지요.


nds4droid는 Drastic의 등장으로 갑자기 위축되었다는 느낌이 들지만 반대로 Drastic으로 인해 nds4droid의 성능을 향상 시킬 수있는 가능성을 발견 한 듯한 느낌이 듭니다. 사실 Drastic이 발전하는 것은 발전하는 것이지만 nds4droid가 발전하는 것이 사용자들에게는 더욱 좋습니다. 일단 무료인데다가 오픈소스라서 플레이스토어에서 사라져도 구하기가 쉽거든요. 개인적으로는 nds4droid를 응원하고 있습니다만, Drastic이 너무 좋아서 계속 Drastic을 이용하게 되네요.


이상으로 Drastic과 nds4droid에 대해 알아보았습니다. 사용방법이야 굳이 따로 알려주지 않아도 될 것이라고 믿고 단순한 고찰만 했습니다. 어차피 플레이스토어에도 나와있고 도움말만 읽어봐도 다 나와있으니 그대로 하시면 되니까요. 이 에뮬레이터 이야기 시리즈는 그냥 에뮬레이터에 대한 역사(?)와 고찰에 대해서만 이야기 하도록 하겠습니다. 다른 블로그에만 가도 자세히 나와있는데 제가 굳이 알려드릴 이유는 없을 것 같으니까요.


다음 이야기는 PSP에뮬레이터 PPSSPP에 대한 이야기를 해보겠습니다.

,

1. aFBA

소스코드 : https://github.com/Cpasjuste/libafba

바이너리 : http://android.mydedibox.fr/afba/aFBA.apk

aFBA는 여러 안드로이드 아케이드 에뮬레이터 중에서도 Tiger Arcade나 다른 아케이드 에뮬레이터를 제치고 가장 최적화된 에뮬레이터로 꼽히는 에뮬레이터입니다.

사실 아케이드 에뮬레이터의 본좌는 Mame입니다. 하지만 안드로이드용 mame는 속도가 아직까지는 별로더군요. Mamedroid 외에더 mamedroid reloaded란 것도 나왔지만 롬 호환성만 좋아졌을뿐 aFBA에 비하면 그렇게 성능이 좋지 못합니다. aFBA는 아케이드 에뮬레이터 중에서 Final Burn이란 에뮬레이터를 기반으로 하는데 cps1,2 pgm, neogeo같이 그럭저럭 잔뼈 굵은(pgm이 메이저 급이었던가요?)기판은 지원하지만 마이너한 기판은 가차없이 미지원입니다. 이를 기반으로 했기에 aFBA도 마찬가지로 일부 메이저 기판만 지원합니다. 하지만 성능은 우월합니다. 넥서스원에서도 메탈슬러그3를 무사히 돌려서 게임이 가능했으니까요. MetalSlug3가 오래된 게임이기는 하지만 Mamedroid에서는 게임플레이가 도저히 못해 먹을 수준이었지만 aFBA는 아주 훌륭했습니다.

 TigerArcade와의 비교에도 aFBA가 압승이더군요. 지원기판수도 비슷한데다가 타이거 에뮬레이터는 구하기도 어려운편이라 그냥 이렇게 사장되어가는 분위기입니다. 심지어 aFBA는 오픈소스라 사라질 염려도 없습니다. 한때 나마 유료로 판매했던 neoDroid도 이거에 밀리더군요. 아마도 aFBA는 소스코드가 있는한 계속적인 업데이트도 가능하리라 보는데 최근 업데이트가 없는듯 합니다. 그도그럴것이 cps나 네오지오나 새로운 게임은 나오지도 않는데다가 킷캣에서도 민망할정도로 잘 돌아가고 있어서 커밋할 필요성을 못느껴서 그런듯합니다. 롬셋이 급변하지 않는이상 12년 버전인 1.6이 장수할 것 같네요. 

전체적인 인터페이스도 다른 에뮬레이터에 비하면 환상적입니다. 너무깔끔해서 에뮬레이터가 아니라 어느 웹페이질 보는 듯합니다. Tiger시리즈가 투박한 인터페이스를 자랑한거에 비하면 거의 깔끔하게잘 만들었습니다.


만약 속도가 느리다면 게임내에서 한번 뒤로를 누른 다음 위쪽 도구 상자중에서 두 번째 버튼을 터치 그리고 none을 고르시면 확실히 성능이 나아짐을 보입니다. 사실 이것은 브라운관 느낌이 나도록 하는 필터가 작동하면 서 생긴 일종의 프레임 하락인데 게임하면서 굳이 필요없는 필터를 제외함으로써 프레임의 이득을 보고자 하는 것입니다. 필터가 빠짐으로써 게임이 약간 깨끗해 보이는 효과도 얻을 수 있습니다. 만약 원한다면 더 깔끔하게 보이게 하는 필터를 적용해도 좋습니다. 다만, 이때는 성능이 좀 좋아야 히겠지요.


지원게임은 MAME가 지원하는 게임이면 됩니다. 다만, 기판이 CPS1,2 NeoGeo, PGM 그리고 이들보다 이전의 물건인 경우 정도만 가능합니다. Finalburn지원 리스트를 보시는 것이 더 빠르겠군요.





다음 포스팅에는 포켓몬스터 6세대를 스마트폰으로 가능 하게한 drastic과 nds4droid에 대한 포스팅을 해보도록 하겠습니다.

,