보통 여러분들은 모바일 브라우저 무엇을 쓰시나요?

대부분은 Chrome을 쓰고 계실겁니다. 삼성인터넷이나 돌핀도 괜찮지만 아무래도 많은 사람들이 쓰는 브라우저가 편하죠.

 

 

그리고 요즘에는 모바일 디스플레이가 AMOLED를 주로 채용하고 있고 PC용 모니터도 OLED로 가는 추세입니다. 그런데 OLED의 단점이 바로 번인현상입니다. 소자의 수명문제로 특정 모양의 무늬가 잔상으로 남는 현상인데 OLED는 이런 문제가 심각한 편입니다. 요즘 스마트폰의 수명은 대략 3년이 한계고 그 전에 바꾸는게 대다수지만 저는 4~5년은 거뜬히 쓰기 때문에 조금은 아깝습니다.

 

그리고 PC용 모니터는 10년이고 20년이고 쓰는 경우가 많아서 더욱 수명이 중요하고요. LCD는 이런면에서 자유롭지만 색재현율의 한계가 OLED가 더 좋다보니 Windows에서도 다크모드가 생겼습니다.

 

안드로이드10을 쓰고 있다면 다크모드의 사용이 가능한데요. 모든 앱이 다크모드로 되는 것은 아니지만 기본적인 앱은 다크모드를 쓸 수 있습니다. 그건 Chrome도 마찬가지입니다.

 

하지만 웹페이지는 다크모드로 한다고 해도 원래색 그대로 나옵니다. CSS로 설정된 그 색을 쓰는 것이기에 웹개발자가 신경쓰지 않으면 그 색 그대로 쓸 수밖에 없습니다.

 

Chrome에서는 이에따라 강제 다크모드를 쓸 수 있는 옵션을 준비했습니다. 다만, 실험실기능이니 언제 없어질지 알 수없습니다.

 

방법은 다음과 같습니다.

크롬을 열고 주소창에 다음과 같이 적습니다.

Chrome://flags

 

 

이러면 실험실기능화면이 뜹니다. 그 다음 검색버튼을 누르고 Force Dark Mode를 검색하면

 

 

Force Dark mode for Web Content라고 뜹니다.

지금은 Disable로 되어있는데 이것을

 

 

Enabled with Selective Inversion of non-Image elements

 

이것을 선택합니다. 때에 따라서 이미지가 반전되기도 하기 때문에 그것을 막기위한 조치입니다.

 

그리고 크롬을 껐다 다시 켜면? (아래의 Relaunch를 눌러도 됩니다.)짜잔! 다크모드로 인터넷이 가능해졌습니다!

 

 

시꺼면 화면이 싫으시다고요? 대신 여러분의 스마트폰의 수명은 더욱 길어질거에요!

,

요즘에는 다들 스마트폰을 들고 다닙니다. 심지어 폴더형 스마트폰도 나와서 기존 피쳐폰 사용자들도 스마트폰으로 바꿀 수 있게 되었습니다. (폴더형 스마트폰과 피쳐폰도 구분 못하면 그냥 관심이 없는 사람인 겁니다.)


하지만 그만큼 스마트폰의 교체 주기가 짧아지고 구형 스마트폰이 갈 곳을 못 찾고 있기에 그것을 어떻게 해야 써먹을 수 있을지를 생각해야 했습니다.


제일 간단한 것은 전화기능만 안 되지 인터넷은 잘 되니까 별도의 인터넷 단말기로 쓰는 방법이 있습니다. 사실 인터넷은 아무런 문제가 없지요.

또 다른 것은 영상 재생도 아주 잘 되니까 Kodi를 설치해 영상 재생용 단말기로 써도 됩니다. 아니면 에뮬레이터를 설치해서 게임머신으로 만들어도 됩니다.


하지만 이 모든 것은 굳이 구형 스마트폰이 아니고 지금 사용하는 것으로도 가능합니다.

저는 그냥 이런 용도로만 쓰고 있습니다.

네 시계입니다. 그냥 시계...

라이브 월페이퍼를 설치해서 그냥 뭔가 꼬물락 거리면서 움직이는 시계...

(어차피 안드로이드 2.3이고 버전이 너무 낮아 뭘 쓸 수가 없어요.)


하지만 이러한 스마트폰들을 제대로 쓸 수 있는 방법이 하나 있습니다.


안드로이드에 리눅스를 설치하면 서버로 쓸 수 있거든요.


안드로이드도 리눅스이기 때문에 chroot가 먹힙니다. 그렇기에 이미 우분투나 데비안을 설치 할 수 있는 방법이 나와있습니다. 플레이스토어에 가면 Debian noroot란 앱이 있어서 데비안을 스마트폰에 설치가 가능합니다. 심지어 X도 설치가 가능해서 GUI도 가능합니다.

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


이것을 이용하면 데비안을 설치하고 이것저것 서버를 설치해 사용이 가능하다는 의미가 됩니다. 심지어 PC보다 전기도 훨씬 적게 먹는 셈입니다. 그리고 배터리가 무정전공급장치 역할을 해주기 때문에 정전에도 강한 서버가 되는 것입니다.


무엇보다 웹서버정도는 성능에 크게 구애받지 않기 때문에 쓰는데 아무런 지장이 없습니다. 아니면 스마트폰을 여러대 묶어서 계산용 노드로 쓸 수도 있지요. JRE가 오픈소스로 공개된 이후 OpenJRE가 스마트폰에 쓰이는 ARM도 지원을 하거든요. Python을 설치해서 Python앱도 실행이 가능하니 나중에는 다용도로 사용이 가능해질겁니다.


스마트폰은 하드웨어가 튼튼하기 때문에 PC보다 더 험하게 사용하는 것도 가능합니다. 발열도 적으니 뭐... 이만하면 최고의 장난감 아니겠습니까?

,

저는 이전에 스마트폰으로 게임을 하기 위해서

http://moordev.tistory.com/128

이런 물건도 만들었습니다.



사실 스마트폰은 OTG기능과 블루투스가 있기 때문에 스마트폰용 게임패드가 상당히 많이 나와있습니다.


다만, 문제는 게임패드를 지원하는 게임이 많지 않다는 겁니다. 의외로 대다수 게임들은 터치 스크린에 최적화 되어 터치스크린을 비비면서 하게 만들어져 있습니다. PC게임중에서 XBOX게임패드를 지원하지 않아 키보드로 인식시키는 것과 비슷하다고 할까요?


아무튼 그래서 Octopus란 앱이 PlayStore에 나왔습니다.

https://play.google.com/store/apps/details?id=com.chaozhuo.gameassistant&hl=ko_KR

이 앱은 중국에서 만들어진 것으로 그동안 터치패드로 인식 시키기 위해 루팅을 하거나 각종 디버그 도구를 써야했던 것을 벗어나 루팅 없이 게임 패드를 터치로 인식 시킬 수 있는 앱입니다. 지원 패드는 여러가지가 있지만 일단 XBOX패드 혹은 그 호환 패드를 추천합니다. 그리고 블루투스 연결은 인풋렉이 좀 심하더군요. 개인적으로 OTG케이블을 이용해서 유선으로 연결을 해주세요.


그럼 이것을 이용해서 이떻게 해야하는지 설명해 보겠습니다. 설명에 사용될 타깃은 Mihoyo의 붕괴3rd입니다.


오늘의 타깃은 바로 이 게임. 왼쪽에 조이스틱 터치패드가 보인다. 이것을 조이패드로 플레이 할 예정이다.

이 게임은 액션 게임이라 뭔가 마구 눌러주는 것이 많습니다. 하지만 터치스크린에 두드려봐야 그 재미가 줄어들지요. 그래서 Octopus로 이를 써먹을 예정입니다.


우선 Octopus를 안드로이드 스마트폰에 설치해야겠지요?


https://play.google.com/store/apps/details?id=com.chaozhuo.gameassistant&hl=ko_KR


이 링크로 들어가면 PlayStore가 나와서 설치할 수 있을 것입니다.

안드로이드 4.4 Kitkat 이상이면 실행이 아무 문제 없이 잘 됩니다. 현재 누가 7.0에서 문제 없이 구동됨을 확인 했습니다.


그리고 구동을 위한 게임도 함께 다운로드 합시다. 붕괴3rd는 생각보다 용량을 많이 먹는 게임입니다.


그리고 Octopus앱을 켜면...


여기 있는 PUBG는 미리 등록한 것이다. 난 없는데 뭐냐고 하는 사람은 없길 바란다.

뭔가 번역기가 심하게 돌아간 한국어가 여러분을 반길겁니다. 뭐 어쩌겠습니까 중국에서 만든 것이니 그냥 그러려니 해야지요. 여기서 "게임첨가"(?)를 누릅니다.


여기서 Octopus로 실행할 게임을 선택해서 등록합시다. 그리고 게임패드를 연결하면...


이렇게 메뉴에 추가 된것을 확인 할 수 있습니다. 그리고 위에 게임패드가 연결 되었음을 알 수 있습니다. 만약 연결 어쩌고가 없다면 그건 패드 연결이 안 된것이니 다른 패드를 쓰거나 블루투스라면 유선 연결을 시도해주시기 바랍니다. 저는 Xbox패드를 써서 Xbox패드라고 인식이 되었습니다.


그리고 Octopus앱에서 게임 아이콘을 눌러서 실행을 해봅시다.


만약 저 외계인이 보이지 않는다면 Octopus가 실행이 되지 않은 것이다. 당장 게임을 끄고 다시 Octopus에서 게임을 실행하길 바란다.

한쪽 구석에 귀여운 보라색 외계인이 떠 있는 것을 알 수 있습니다. 바로 이 외계인이 Octopus입니다. 저 외계인 버튼을 누르면 각 게임 패드의 버튼을 어디에 할당할 것인지 설정할 수 있는 창이 뜹니다.


여기서 왼쪽 스틱은 당연히 패드의 왼쪽 스틱을 말하는 것이고 이걸 길게 누르면 터치 스크린의 어디를 스틱으로 인식 시킬 것인지 나오게 됩니다. (이건 스크린샷을 찍기 힘들어서 포기 했습니다.) 저는 왼쪽 아래의 터치형 조이스틱부분에 걸쳤습니다.


그리고 손잡이라고 나온 것이 오른쪽 스틱입니다. 이 게임에서는 그냥 화면을 미는 것으로 카메라를 돌리게 됩니다. 저는 이 것을 적당히 그냥 빈 공간에 배치했습니다.


그리고 제일 중요한 버튼! 버튼은 길게 눌러 배치를 하고 조이패드의 버튼을 눌러서 이 버튼이 어떤 버튼에 대응되는지 알려주어야 합니다. 그럼 화면에 조이패드의 버튼이름이 뜨게 됩니다.


아무튼 이런 식으로 조정을 하다보면...


아이 이 자식이 터치형 조이스틱 화면을 가려버렸지만 아무튼 이 위치가 조이스틱 위치다. 버튼부는 각각의 버튼이 어떤 곳에 위치했는지 알 수 있게 잘 해놓았다.

이렇게 배치를 할 수 있습니다. 그리고 게임을 하면서 이상한 부분이나 잘못 맞춘듯한 부분은 크기를 조정하고 위치를 조정하면서 맞추면 됩니다.


이 게임은 하다보면 계속 버튼이 추가되기 때문에 Act1을 전부 클리어 한 다음에 버튼배치를 완료하는 것을 추천합니다. 적당한 연습 모드에서 배치를 하는 것이 제일 낫습니다.


P.S Octopus를 이용하면 GooglePlay로그인이 되지 않습니다. 구글 계정으로 게임을 하고자 하시는 분들은 아쉽게도 불가능합니다. Facebook이나 다른 방식 로그인을 하게끔 해주시기 바랍니다. 붕괴3rd같은 경우에는 MiHoYo계정으로 하는 것을 추천합니다.


이것으로 각종 스마트폰 게임을 패드로 할 수 있게 되었네요. TeraM 이나 위에서 보였던 PUBG모바일도 가능합니다.

,

안드로이드는 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. 가끔 앱중에서 자체적으로 업데이트를 진단하는 경우가 있는데 당연히 업데이트를 안 한다고 하면 되겠습니다.

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

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

,

저번 포스팅에서는 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에 대한 포스팅을 해보도록 하겠습니다.

,

이 글은 2014년 1월 5일 원래 제 다음 블로그에서 가져온 글입니다.

Long Live The Queen 프린세스메이커의 패러디 게임이라고 하는데 죽을일이 없는(가끔 가출은 하더만...) 프린세스 메이커와는 다르게 잘못된 선택은 곧 죽음인 살얼음판의 프린세스메이커라고 한다고해서 가격도 싸길래 냉큼 질러보았다.(사실 리눅스 지원인것도 한 몫했다. 리눅스 지원 게임이 그리 많지는 않으니..최근 개인프로젝트로 돌릴까 하는 클라우드게이밍도 스팀이 리눅스를 지원하면 그냥 클라우드 데스크탑에 스팀만 띄워주면 되니까 쉬워진다.)

일단 냉큼 지르고 영어의 압박을 간단히 떨친후(사실 영어로 되어있어서 반대로 게임하기 수월했다.) 뭐가뭔지 몰라(...) 공략을 찾던 중 이 게임이 Ren'Py라는 엔진으로 만들어졌다는 것을 알았다.

 Ren'Py... 이름에 왠지 Py가 들어가는데다가 MacOSX, Linux, Windows를 전부 지원한다? 혹시 이거 Python?하고 스팀설치 폴더에 들어가서 뜯어본결과 Python맞더만...그것도 PyGame이라는 엔진을 비주얼노벨용으로 만든게 Ren'Py고 PyGame이 안드로이드도 지원하기 때문에 Ren'Py도 안드로이드 지원이 가능하다고 되어있었다.

그러나. 이 게임은 스팀에서 판매하기에 안드로이드 지원이 될 턱이 없었고 스크립트 언어인 Python이라면 별 저항없이 안드로이드에 이식이 되지 않을까 하던중 RenPy SDK에서 안드로이드 지원이 가능하다는 것을 찾아내었다.

흐음...이걸 일단 안드로이드에 이식해 보기로 하고 결국 휴일에 삽을 들고 말았다...에라이.

 자 안드로이드 포팅(?)을 위한 준비물을 우선 말해보도록 하겠다. 여기서는 우분투같은 리눅스 환경에서 작업하는 것으로 되어있습니다. Mac이나 Windows는 스팀게임의 경로나 안드로이드폰 연결방법등이 다릅니다.

 http://baekansi.hosting.paran.com/doc/html/android.html

여기에 일단 안드로이드용으로 컴파일 하기위해 어떻게 해야할지 자세히 나와있다.

우선 필요한 것은

1. Ren'Py SDK http://www.renpy.org/latest.html

2. Oracle JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html

3. Python 2.7 이건 뭐...알아서 검색하던가 sudo apt-get install python2.7

4. RAPT(렌파이 안드로이드 패키징 툴)http://www.renpy.org/dl/android/

5. 손을 댈 Ren'Py로 만들어진 게임(여기선 Long Live The Queen 되시겠다. 이건 Steam관련 스크립트가 있긴 하지만...스팀없이도 실행되는 것을 확인)

6. rpatool https://github.com/Shizmob/rpatool  rpa나 rpi등으로 이미지나 음악들이 압축 되어있는 경우 어쩔 수 없이 이 파일들을 풀어 해쳐놓아야 안드로이드에서 실행이 된다. 아니면 다른 방법이 있을 수도 있는데 방법을 잘 모르겠다.(...)

7. 삽질을 위한 안드로이드 기반 기기(에뮬레이터는 비추)

8. adb 안드로이드개발 홈페이지에서 다운로드 받던지 아니면 sudo apt-get install android-tools-adb

*. 당신의 삽질력


일단 되었으면 JDK와 Python을 설치하자.

그리고 Ren'Py SDK를 적당한곳에 압축을 풀고 RAPT를 Ren'Py SDK의 압축 푼곳에다가 같이 압축을 풀어넣자.

압축 풀기가 완료되었다면 renpy.sh를 실행해서 Ren'Py런처가 실행이 잘 되는지 우선 보도록 하자. 되었다면 예시로 같이 들어있는 것도 실행해 보고 이것저것 하다가 일단 종료.

 이 제 스팀에서 Ren'Py게임을 구입하자. 아니면 조금 뒤적거리면 무료로 좋은 게임을 배포하기도 하니 잘 찾아보자. 걔중엔 지하철에서 하기에는 조금 엄한물건도 있기는 하지만....여기서는 아까 말했던 Long Live The Queen(이하 LLQ)을 이용하도록 하자. 그리고 꼭 한번 실행시켜주자. 가끔 스팀이 제대로 다운로드 안 하고 다 됐다고 사기치는 경우가 있어서 그런것이니  한번은 꼭 실행시켜보도록 하자.

실행이 확인 되었으면 ~/.local/share/Steam/SteamApps/common 로가면 당신이 그동안 스팀에다가 쏟아부은 결과물들이 들어가 앉아 있다. 여기서 Long Live The Queen이란 이름의 폴더째로 일단 복사하자.

 복사한 폴더는 위의 Ren'Py SDK와 RAPT의 압축을 풀어넣은 곳에다가 붙여넣기 하면 된다. 다시 한번 renpy.sh를 실행해보자. LongLifeTheQueen이 보이는가? 오른쪽에 Android라고 보이는가? 여기에 보면 Emulation으로 실행을 해볼 수 있다!!!! 그.러.나. 여기서 실행하면 당연하다는 듯이 에러난다. 이 에러를 잡는 것이 바로 이 삽질의 핵심이다.

삽질의 처음은 로그를 뜯어보는 것이다. 로그를 한번보자. glpatch.rpy가 에러가 났다고 나온다. 하지만 게임폴더를 아무리 뒤져도 rpy파일은 보이지 않는다. 사실 파이썬을 써보면 알겠지만 속도를 위해 한번 바이트코드로 컴파일하게 되는데 렌파이도 비슷한 원리로 스크립트를 컴파일 해 놓은 것이다. 즉 로그에서 rpy라고 나오는 파일이 사실 rpyc를 말하는 것으로 생각해도 좋다.
 

 암튼 glpatch라는 놈이 문제라고 되어있는데 이미 컴파일되어있는 스크립트를 어떻게 해볼 수는 없고 한번 제거해보도록 하자.즉 삭제! 그리고 빈파일을 하나 만들어서 glpatch.rpy라고 하나 만들어 놓자. 빈 파일이기 때문에 아무런 내용은 없지만 그렇다고 파일이 없으면 그건 그것대로 또 에러가 난다. 말그대로 patch라고 되어있는 걸로 봐서 OpenGL관련 문제를 해결한 패치로 보인다. 그러나 안드로이드에서는 저게 도리어 문제를 일으키니 패치를 없애도록 하자. 그리고 한번 게임을 실행해보면 glpatch.rpyc가 생성되어있는 것을 알 수 있다. rpy가 빈파일이므로 rpyc도 빈내용으로 만들어진 바이트코드가 된다. 이걸로 한 가지 알 수 있는 것은 저 패치는 PC에서만 통하는 것으로 보인다는 것. 아마 Nvidia나 ATI드라이버 호환내용이 아니었을까?

아까처럼 PC에서 renpy.sh를 실행하고 Android - Emulation - Phone 혹은 Tablet 를 실행해보자. 이번에는 타이틀 화면이 뜬다? 참고로 Translation.rpy를 작성한뒤 game폴더에 넣어주고 Translation.rpy에 폰트를 지정한다음 해당 폰트를 Game폴더에 같이 넣어주면 폰트도 맘대로 바꿀 수 있게 된다. 다만 은폰트나 나눔 폰트를 이용하는 것을 권한다. 맑은 고딕도 예쁘지만 이건 MS가 저작권을 지니고 있어서...Translation.rpy작성법은 http://www.renpy.org/wiki/Ren%27Py_%EC%97%90%EC%84%9C_%ED%95%9C%EA%B8%80_%EC%84%A4%EC%A0%95%EC%97%90_%EB%94%B0%EB%A5%B8_%EC%95%88%EB%82%B4

여기를 참조하시길

이제 안드로이드용으로 컴파일을 해보자. 해보기에 앞서서 터미널 사용법을 알고 있으리라 믿는다.

 renpy가 설치된 곳으로 가서 (RAPT의 압축을 푼 곳으로 가서)

./android.py installsdk

라고 치면 이 녀석이 안드로이드 SDK를 다운로드 받으면서 이것저것 물어보게 된다. 그냥 yes 혹은 no라고 대답만 하면 알아서 잘 해주니 그냥 시키는대로 하자.

그다음

./android.py configure LongLiveTheQueen

이라 치면 configure 뒤에 붙은 게임의 안드로이드 설정을 하게 된다. 역시 묻는말에 꼬박꼬박 대답하면 된다. 개인적으로는 2.2기반보다 4.0기반으로 만드는 것을 추천한다. 3.0은 그냥 버리는 거다.

이제 설정이 끝났다면 드디어 APK빌드를 해보게 된다. 이에 앞서 안드로이드 폰을 PC에 연결하고 ADB설정을 하고 디버그모드를 허용까지 해주어야 편하다. ADB설정은 이 블로그 어딘가에 잘 써있으니 참고.

일단 안드로이드기기를 PC에 연결하고

./android.py build LongLiveTheQueen release install

이렇게 하면 안드로이드용으로 빌드도 하고 안드로이드기기에 알아서 설치까지 다 해준다.


이제 실행해보기전에

./android.py logcat

을 실행하고 기기에서 게임을 실행해보자. (Ren'Py기본 아이콘에 기본로딩화면이 뜬다. 이는 RAPT루트/res/drawable을 교체함으로써 바꿀 수 있다. 이건 그냥 참고사항


아마도 혹은 역시나 에러를 내뿜어 주실것이다.

 steam.rpy

결국 스팀이 일을 내주셨다. 아까처럼 steam.rpyc를 삭제하고 빈파일로 steam.rpy파일을 하나 만든 후에 게임을 한번 실행하고 다시 APK를 만들어주자.


그리고 bytecode.rpyb파일은 그때그때마다 삭제해놓길 바란다. 게임실행속도를 올리기위한 방법중 하나지만 APK의 용량증가의 원인중 하나이므로...


이제는 안드로이드기기에서 타이틀화면을 봐야 정상인데....

 안된다. 그럼 아까처럼 logcat을 한번 보자.

  왠 아이콘 이미지를 못 찾는다고 뜬다.(icon-big.png)ignore 버튼을 누르니 이번엔 배경이미지를 못찾는다고 하고 배경음악도 못찾는다고 하고..

이 파일들 아까 Game폴더에 없었는데?


 사실 이것의 경우는 안드로이드용 렌파이의 문제일것으로 보인다. 게임 개발자나 회사에서 감추고픈(?) 이미지나 음악들이 떠돌아다니는 것을 싫어하기에 Ren'Py에서는 rpa라는 파일로 압축+암호화를 하는데 이게 안드로이드 내에서 정상적으로 복호화가 진행이 되지 않은 것이다. 잘 뒤져보면 llq.rpa란 파일이 보인다. 아마 못찾는다고 뜬 파일들은 이 안에 다 있을 것이다. 그럼 이걸 풀어서 game폴더에 흩뜨려 놓으면 정상적으로 실행이 될 것이다.

그럼 무엇으로 복호화를 할까? 아주 간단하게도 rpatool을 이용하면 된다. 이 것도 하나의 파이썬 스크립트로 되어있는데 그냥 game폴더에 넣어주자. 그리고 cd명령으로 game폴더까지 들어간다음

./rpatool.py -x llq.rpa

이러면 암호화되었던 것들이 압축이 싹풀리면서 보이게 된다. 그럼 이제 rpatool하고 llq.rpa파일은 필요없어졌으니 삭제하자. 겸사겸사 bytecode.rpyb파일도 삭제해주고.

이제 다시 빌드하고 폰에 넣으면?

 타이틀화면 입성! 게임까지 입성이다!!!

오오..


힘든 사투였다.오오..근데 이 게임을 지하철에서 하는 건 좀 무리 아니려나...

2014. 7 .26 우선 안드로이드 포팅을 하는 방법을 올린 유튜브 영상이다. 본인이 찍었으며 이 방법을 통해서 만들어진 결과물을 마음대로 배포하지를 않기를 바란다. 만들어진 결과물은 개인적으로만 사용하고 꼭 스팀에서 구입한 것을 이용하자. 공식홈페이지에서 구입한 것은...잘 모르겠다.


,

안드로이드에서 데비안을 쓸 수 있게 하는 어플이 있습니다.

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

이름은 Debian noroot

어? 왜 noroot가 붙었지? 라고 하시는 분이 있을 것이라 생각되어 한가지 말씀드립니다. 사실 안드로이드에서 리눅스 배포판을 쓰고자 하는 시도는 계속 있어왔습니다. 처음 성공한 것이 chroot를 이용해서 안드로이드에서 arm버전 배포판을 SDCARD에 설치. 커널을 제외한 나머지 라이브러리를 이용하는 방식이었습니다. 특징으로는 X를 설치해도 VNC등의 원격조작을 사용하지 않으면 GUI를 쓸 수 없었다는 것입니다.

이 방법은 chroot를 이용하기 때문에 당연히 안드로이드가 루팅이 되어야만 했고 시스템에 몇몇 프로그램이 돌아가야만 했습니다. 특히 네트워크 관련은 당연히 설치되어있어야 GUI고 SSH고 사용할 수 있었습니다.

하지만 이 어플을 이용한 방식은 조금 다릅니다. SDL을 이용해서 GUI를 바로 안드로이드 화면에 뿌립니다. 즉, 게임 등에서 자주 사용하는 그래픽 라이브러리를 데스크탑 구현에 쓰는 것입니다. 이전에는 우분투를 쓰게 해주었다는데 워낙 우분투가 버벅거려서 데비안으로 바꿔버렸다는 후문이 있습니다. VNC로 GUI하던 방법에서는 워낙 VNC가 느려서 우분투를 이용하든 데비안을 이용하든 사용자경험은 거기서 거기였는데 SDL로 바뀌면서 차이가 생긴 듯 합니다. 아무튼 데비안+XFCE 환경이 설치되며 일단 아쉽게도 사운드는 지원되지 않습니다. 이런 방식을 이용한 프로그램이 따로 이용되고 있는 듯 한데 이것을 이용하는 몇 가지 방법을 알려드리고자 합니다.

1. 오래된 스마트폰 웹서버로 사용하기

오래된 스마트폰은 루팅을 하던지 그냥 쓰던지 상관은 없습니다만 SDL을 사용하면서 GUI로 서버관리가 가능해 졌습니다. 아파치와 PHP를 설치하고 mariaDB를 설치하여 DB를 이용할 수 있게 함으로써 웹서비스에 필수인 3가지는 설치가 바로 됩니다. 여기에 SSH를 설치하면 외부에서 커맨드를 이용해서 관리도 가능해집니다.

즉, 이런 식으로 사용하시면 됩니다.

1) 스마트폰에 Debian noroot 설치 및 실행하여 Debian 환경 구성

2) Debian 진입 후에 루트터미널 실행(XFCE환경이므로 메뉴를 누른뒤에 Application일 터치하면 Root Terminal을 실행할 수 있습니다.)

3) apt-get install ssh apache php5 mariadb

4) 위의 명령어로 ssh와 apache, php5, mariadb 설치

5) ssh를 위해 사용자 설정하기
adduser [사용자이름]

6) /etc/sudoers 를 수정하여 [사용자이름]이 바로 sudo 명령어를 쓸 수 있게 하십시오. 맨 아래줄에

[사용자이름] ALL=(ALL) ALL

이라고 적어주시면 됩니다.

7) 스마트폰의 꺼지지 않게 충전기를 꽂아둘 것. 와이파이가 꺼지지 않도록 설정할 것.

8) 이제 마음대로 웹서버를 굴려봅시다.

2. Gimp를 실행하여 타블렛 비스무리하게 사용하기

1) 문제는 너무 화면이 작은 것입니다. 하지만 근성이 있다면 할 수 있습니다.

2) Root Terminal 실행 후 apt-get gimp 명령

3) 메뉴에서 Gimp실행 참 쉽죠?

3. 리눅스용 게임 즐겨보기

1)물론 x86전용은 안 되고 3D게임도 잘 안 됩니다. 그냥 2D 게임을 한 번 즐겨봅시다.

4. Octave를 이용한 계산하기

Octave는 오픈소스로 만들어진 Matlab클론입니다. Matlab이 궁하신 분들은 Octave를 사용하여 계산이 가능합니다.

1) Root Terminal 실행

2)apt-get install qtoctave

3)QTOctave 실행 물론 그래프로 출력까지 가능합니다.


Debian이 설치됨으로써 가능한 것이 정말 많습니다. 안드로이드폰을 다 썼다고 버리지 마시고 한번 기타 다른 용도로 활용해보시길 추천드립니다. 한번 약정 다 된 스마트폰에 새로운 숨결을 불어 넣어주자고요.

,

사람들에게 "리눅스가 무엇인지 아십니까?" 라고 물어보면 100중 30정도는 "안다"라고 하지만, 사실은 리눅스가 그저 까만화면에 커서 깜빡이는 그런 텍스트기반의 OS인줄 아는 사람들이 상당히 많습니다. 그도 그럴것이 리눅스 데스크탑의 점유율은 그저 1%남짓입니다. 

사실 이렇게 되어버린 원인 중 하나는 리눅스의 어마어마한 배포판의 수도 문제라고 하는 사람들이 많습니다. 

참고: https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg

리눅스 배포판의 타임라인입니다. 2012년 기준이니 지금 이 순간에도 새로운 배포판이 만들어져서 배포되고 있을 겁니다.

그렇기 떄문에 리눅스용 프로그램중 오픈소스가 아닌 경우 우분투나 레드햇 같이 메이저한 배포판을 제외하면 "동작하지 않도록 만든 경우"가 많습니다. 사실 동작하지 않게 만든 것이 아니라 라이브러리나 기타 다른 이유로 인하여 "동작하지 않은 것"에 가깝습니다. 대표적인 예가 한글2008입니다. 이제는 지원도 안 해주는 버려진 OS인 아시아눅스만이 한글2008이 정상적으로 동작합니다. 우분투에서 동작하는 팁 들이 인터넷 여기저기 돌아다니고 있지만  우분투의 버전이 올라가면 올라갈 수록 아시아눅스와 차이가 생기면서 이것저것 문제가 생겼습니다.(다른 것보다 프린터 문제가 가장 시급합니다.) 한글과컴퓨터가 한글을 새로운 라이브러리에 맞춰서 다시 컴파일하면 되기는 되겠지만 그렇게 해 줄 리가 없겠지요. 만약 아시아눅스가 지금까지 개발되고 있었어도 한글2008이 우분투나 다른 배포판에서 정상적으로 작동하리란 보장도 없습니다. 왜냐하면 아시아눅스는 아시아눅스 나름의 라이브러리를 이용해서 만들어진 배포판이니까요.

상황이 이러니 리눅스 용 상용 응용프로그램은 거의 전무한 실정입니다. Steam에서 리눅스용 게임을 상당히 많이 팔고 있기는 하지만 엄연히 말하자면 이마저도 리눅스용이라기 보다는 우분투용이라고 보는 것이 더 맞습니다. Valve에서도 우분투에 최적화된 상태로 배포한다고 했으니까요. 페도라에서 Steam과 Steam 플랫폼의 게임들이 정상적으로 작동하는 영상이 보이지만 Valve의 공식입장은 아닙니다. 페도라와 우분투의 차이가 라이브러리 차이가 많이 나지 않아서 작동하는 것이지 한글2008같이 차이가 벌어지면 작동하지 않을 수도 있습니다.

그래서 다들 리눅스 데스크탑의 실패 이유 중 하나가 바로 이 배포판의 다양함이라고 이야기 합니다. 얼핏 들으면 맞는 말 같습니다. 배포판이 다양하다는 것은 그만큼 개발할 때 테스트 장비가 많이 필요하고 개발비가 더 올라간다고 합니다. 이와 비슷한 일이 안드로이드에서도 일어나고 있습니다. 그런데 안드로이드는 그렇다고 개발비가 어쩌고 하지는 않습니다. 왜냐하면 이미 점유율이 상당히 높고 그만큼의 개발비가 회수되기 때문입니다. 결국 "닭이 먼저냐 달걀이 먼저냐"의 문제가 되는데 배포판의 다양함이 문제라고 한다면 우분투나 페도라 어느 하나의 배포판을 기준으로 개발하고 테스트하면 됩니다. (바로 위에서 예를 든 한글2008이 이런 식으로 개발되어졌고 그래서 지금 문제를 일으키고 있는 것입니다.) 그리고 다른 배포판에는 안 팔면 됩니다. 하지만 리눅스 데스크탑의 점유율은 다 합쳐봐야 1% 뿐. 돈이 안 되니까 개발비 운운하는 것 아닐까하는 생각이 듭니다. 개발비가 회수가 안 되니까요.

이렇게 배포판의 파편화가 문제라고 했지만 리눅스의 장점도 또한 이 다양함이라는 것도 참 아이러니 합니다. 선택의 폭이 넓으니 이걸 장점이라고 할 수 있는 겁니다. OSX는 선택의 폭이 참 좁은 OS입니다. 오로지 애플하드웨어만 이용할 수 있으며 인터페이스는 오로지 OSX 본연의 것만 사용 가능합니다. 윈도우는 반대로 레거시 하드웨어까지 지원하는 괴랄함의 극치를 보입니다. 하드웨어의 선택이 상당히 넓으며 최근 윈도8의 인터페이스가 마음에 안 든다고 별도의 프로그램을 이용해서 시작메뉴를 되살리기까지 합니다. 리눅스는 윈도와 OSX 어디에 가까울까요? 그리고 윈도와 OSX 어디가 더 성공한 OS인가요? 제가 생각하기에 리눅스는 OSX보다는 윈도에 훨신 더 가까워 보이는데요. 결국에는 어느 한 배포판이 윈도 수준의 점유율을 먹지 않는 이상 이 문제는 해결될 것 같지는 않네요.

그리고 리눅스라는 것도 엄연히 말하자면 그저 커널의 이름일 뿐입니다. 저 수많은 배포판들을 보면 리눅스는 정말 많은 수를 가진 OS라는 이야기가 됩니다. 하지만, 저건 그저 리눅스를 이용한 OS들일 뿐입니다. 흔히들 리눅스/윈도우/OSX 가 3대 OS라고 합니다. (데스크탑에 한해서 리눅스는 너무 적은 수준이긴 합니다.) 하지만 저는 리눅스는 그저 커널 이름일 뿐이고 각 배포판은 다른 OS라고 생각합니다. 이렇게 되면 각각의 OS점유율이 정말 처참할 정도로 박살나 버리기는 하지만 각 응용프로그램을 어떻게 개발해야할 것인지 알 수 있게 됩니다. 막말로 "안드로이드와 우분투가 같은 OS인가?" 이와같은 질문의 답은 모두 다 "아니오"일 것입니다.  같은 커널을 썼지만 다른 OS취급을 하듯이 우분투와 페도라도 다른 OS이고 우분투기반인 리눅스민트와 우분투도 다른 OS취급을 해야 할 겁니다. 이러면 파편화 때문에 리눅스는 망했다? 절대로 그렇게 생각 못합니다. 리눅스가 망한 것이 아니라 해당 OS가 망한것입니다. 왜냐하면 점유율이 바닥이라서 그렇습니다. 간단한 문제이네요.

아치리눅스, 우분투, 페도라, 오픈수세, 데비안, 기타 다른 리눅스 배포판들. 어느 하나의 배포판만이 성공해야 "파편화"라 불리우는 "OS난립"의 문제를 해결 할 수 있을 것입니다. 하지만 그렇게는 절대로 될 수 없을 겁니다. 당연하게도 그것이 리눅스의 장점이니까요.

,