우분투 관련 이야기지만 우분투 분투기가 아닌 리눅스 관련 이야기로 올립니다.


우분투 18.04의 정식판 공개일이 코앞으로 다가왔습니다.

이번 우분투 18.04는 기존 우분투 16.04LTS에서 4.15 커널과 그놈 환경 이용 등으로 획기적인 변화를 가져올 예정입니다. 다만, 기존 16.04가 처음 나왔을 때 호환문제로 고생을 한 기억이 있어서 바로 18.04로 넘어가는 것은 조금 무리가 있다는 판단이 듭니다.


1. Wayland에서 다시 Xorg로 돌아가다.


이번에 18.04에서 생각해봐야 할 것은 17.10때 적용되었던 wayland의 적용을 뒤로 미뤘다는 것입니다. Wayland는 Xorg를 대체할 차세대 GUI서버로 작은 크기와 빠릿한 반응으로 기대를 받고 있습니다. 아니, 유망주로 몇년째 담금질을 하고 있습니다.


다만, 기존에 Xorg기반으로 만들어진 프로그램이 워낙 많고 Wayland의 호환레이어인 Xwayland가 완벽한 호환을 보여주지 못하고 있어서 17.10시절 고생을 한 사람이 많다고 하네요. 그래서 이번 18.04는 Wayland 대신 Xorg를 기본 서버로 되돌리고 옵션으로 Wayland를 쓸 수 있도록 했다고 합니다. 일단은 그래도 LTS니까 Wayland는 조금더 지켜보기로 한 것입니다. 아마도 Wayland로 전환되기까지는 사운드쪽의 OSS에서 ALSA로 넘어가던 시절만큼 시간이 오래걸리지 않을까 싶습니다.



2. 32비트 버전의 이미지 배포 중단


 이젠 32비트버전의 배포판을 더 이상 만들지 않겠다고 합니다. 하지만 32비트 라이브러리는 계속 지원을 할 것이라고 합니다. 아직은 32비트를 버릴 수는 없으니까요. (특히 Wine과 Windows의 32비트 프로그램, 그리고 일부 32비트용 게임 때문에 32비트는 어쩔 수 없습니다.)그러므로 아마도 리눅스민트나 다른 우분투 기반 OS에서는 32비트 버전이 나올 가능성이 높습니다. 특히 저사양PC의 재활용을 중점적으로 다루는 LXLE(http://lxle.net/)같은 경우에는 32비트 버전이 나오지 않으면 위치가 애매해집니다.


32비트 문제로 엑소더스가 일어나지는 않을지 지켜봐야 할 것 같습니다.


Windows의 경우 16비트에서 32비트로 넘어가기까지 꽤 걸렸던 것 같은데(32비트는 그 전부터 쓰이고 있었지만 WindowsMe를 마지막으로 16비트 코드가 사라지게 됩니다.) 32비트에서 64비트로 넘어가는 것은 더 오래걸리고 있어서 우분투가 먼저 선수를 치는 것 같네요.


생각해보니 64비트OS도 리눅스에서 먼저 나왔던 것을 생각하면 이해 못할 일은 아니라고 봅니다. (WindowsXP x64 2005년 출시, AMD64 리눅스 커널 2003년 릴리즈)


3. 커널 4.15의 적용

 

 이번에 각종 보안 이슈로 인하여 걱정이 이만저만이 아닌 사람들이 많습니다. 컴퓨터를 그냥 집에서 가지고 노는 용도로만 쓰거나 별 관심이 없는 사람들은 모르지만 멜트다운, 스펙터 버그로 인하여 업무용으로 사용하는 사람들은 걱정이 이만저만이 아니었습니다.


 그러한 버그를 해결한 커널이 4.15입니다. 물론 바닐라 커널 기준으로 4.15부터 패치가 적용되었지만 배포판 업체에 따라서 이전 커널에 백포트되어 적용이 되기도 합니다.(레드햇 같은 업체는 커널 3.x대와 함께 2.6도 아직 지원합니다.) 하지만 백포트는 어디까지나 백포트이고 메인 프로젝트는 리눅스재단의 커널이 만들고 있는데 이번 4.15부터 해당 버그해결과 사고를 일으킨 인텔의 ME를 걷어내는 작업까지 해 놓았습니다. 아마도 시스템 내부적으로 제일 큰 변화가 이것이 아닐까 싶습니다. 16.04에서도 바닐라 4.15를 쓰고 있는데 캐노니컬이 만드는 4.13보다 훨씬 낫습니다.


4. 데스크탑 리눅스의 기준


 이렇게 이야기하면 openSUSE나 Fedora를 쓰시는 분들이 쳐들어올 것 같은데 우분투는 데스크탑용 리눅스의 기준입니다.


 데스크탑에서 제일 중요한 것은 이용자의 편리함입니다. 흔히 UI를 이야기하지요. Gnome이 리눅스 데스크탑에서 주가 된 것은 사실 우분투의 영향이 컸다고 봅니다. 사실 우분투에서 Gnome이 제일 잘 돌아가기도 하고요. 게다가 Nvidia나 AMD는 자사의 클로즈소스 드라이버를 발표할 때 우분투 발표에 맞춰서 발표를 합니다. 이유는 리눅스 데스크탑 사용자들이 업그레이드하는 시기가 우분투 발표와 겹치기 때문입니다.


특히 우분투 LTS의 업그레이드는 이용자가 대거 업그레이드를 시도하는 시기이기 때문에 특히 드라이버를 만들 때 신경을 쓰게 됩니다. 지난 16.04발표후 Catalyst가 우분투 지원에서 내려가게 되었는데 대신 AMD는 AMDGPU-Pro라는 오픈소스를 기반으로 하되 클로즈 소스를 추가한(그러니까 오픈소스인 크로미움에 클로즈소스인 구글앱과, Flash를 추가한 크롬을 생각해보세요.)드라이버를 발표했습니다. 새로운 우분투가 어떤 변화를 가져올지 조금 지켜봐야 할 것입니다.


5. 수많은 우분투 변형판들


사실 우분투도 데비안의 변형판이고 리눅스의 계보를 따라가면 레드햇, 슬랙웨어, 데비안 이렇게 셋이라고 하지만 이젠 제 갈길 가기 시작해서 따로 놀기 시작한 우분투는 데비안과 구분을 지은지 꽤 지났습니다. 그 편리함 때문에 우분투를 기반으로 한 배포판은 상당히 많습니다. 우분투가 나온다고 하면 우분투 그 자체보다 변형판들을 기대하는 사람들이 훨씬 더 많습니다. 저도 사실은 Gnome3보다는 MATE를 선호하기 때문에 ubuntuMATE나 LinuxMint MATE를 기대하고 있습니다.


그런데 이번 18.04는 17.xx부터 편입 된 공식 변형판들의 LTS버전이 나오는 버전입니다. 공식 변형판들은 18.04라는 이름하에 우분투와 동시에 나오게 됩니다. 16.04와 비교해서 공식 변형판들이 상당히 많아졌습니다. 선택의 폭이 넓어졌다고 해야 할까요? 저는 LTS에 눌러앉는 경우가 많아서 17.xx는 써본적이 없습니다. 게다가 16.04가 꽤 잘 버텨준 덕에 계속 16.04를 고수해왔고요. 어쨌건 18.04가 나오면 18.04기반으로 업그레이드를 해야하는데 선택의 폭이 확실히 넓어진 것을 환영해야 할 듯 합니다.

(하지만 전 LinuxMint MATE로 그냥 갈 것 같습니다....)



우분투 18.04 Bionic Beaver를 기대하며... 이상 마치겠습니다.


P.S ubuntuMATE 18.04의 파이널 베타 버전을 써봤는데 베타인데도 상당히 안정적이었습니다. 물론 베타1때는 불안정해서 안되겠다 싶었는데 한 달 만에 안정화가 되었더군요. 18.04는 상당히 안정적인 버전이 될 것임을 예상합니다.

,

최근 헤드폰에는 노이즈 캔슬링 기능이 들어있는 경우가 많습니다. 이러한 것은 대개 추가 배터리를 요구하거나 USB포트 등이 달려있어서 이를 이용해서 각종 주변 소음을 막아냅니다.


그런데 이런 기능이 있다는 것은 알지만 이것이 대체 어떤 원리로 만들어지는지 아는 사람은 별로 없습니다.

심지어 노이즈 캔슬링은 그저 방음벽과 같은 원리겠거니 하는 사람도 많습니다. 아주 틀린 것은 아니지만 그런데 이런 사람들은 배터리나 추가 전원은 왜 들어가는지 모릅니다.


사실 주변 소음을 제거하는 방법은 두가지로 나뉘어집니다.


1. 완전 차폐를 하여 주변 소음이 들어오지 못하게 하는 방법

  - 방음벽이 이러한 방식으로 만들어집니다. 주변 소음을 흡수해버리지요.

  - 그리고 커널형 이어폰들이 최대한 차폐를 하여 만들어지는 대표적인 물건들이지요.


하지만 이러한 방식도 당연히 한계가 있습니다. 귀를 틀어막게 되면 귀에 강한 압력을 가하게 되고 이는 귀에 안 좋은 영향을 끼치게 됩니다. 그래서 커널형 이어폰 자체를 싫어하는 사람이 많습니다.



2. 역파장을 계산하여 이를 통해 캔슬링을 하는 방식


  - 이것이 바로 추가 배터리와 전원을 요구하는 이유입니다. 무슨 소리냐면 같은 2000Hz의 소리라도 파장이 180도 다른 두 소리를 합한다면


 sin(n)+sin(n+180°)=0


이를 이용해서 주변 소리와 반대되는 파장을 만들어 스피커로 보냄으로서 해당 소리를 듣지 못하게 하는 것입니다. 문제는 이를 계산하는 시간이 너무 느리면 180°의 파장이 아닌 애매한 소리가 된다는 것입니다. 그래서 실제로 스피커의 반응 속도에 맞춰서 튜닝을 하는 작업이 필요한데 이것이 노이즈 캔슬링 헤드폰의 가격에 가장 큰 영향을 미칩니다. 요즘은 그나마 계산 속도가 빨라져서 낫다고 합니다.


특히 좀 가격이 싼 물건은 너무 저음의 소음이나 너무 고음의 소리는 막지 못하는 것을 알 수 있습니다.


2000Hz 이하의 소리를 검출하기 위해서는 못해도 1/2000초 즉, 0.5ms 이상의 샘플링시간이 필요한데 0.5밀리초 이후에 소리가 난다는 것은 이미 캔슬링되지 못하고 귀에 들어갔다고 봐야합니다. 캔슬링의 의미가 없지요. 너무 고음의 소리는 180도를 정확히 만들기가 쉽지 않습니다. 파장이 굉장히 빠르기 때문입니다. 잘못해서 90도로 만들어진다면...


sin(n)+sin(n+90)=2sin(n)


없애기는 커녕 도리어 소리가 커지게 됩니다.


보통 사람이 들을 수 있는 소리가 20~20000Hz정도이고 이것도 나이가 어린 경우에만 가능한 것이니 대부분 사람들은 100~18000Hz정도로가 생각해야 할 겁니다. 저 같은 경우에는 14000Hz 이상이 들리지 않을 정도로 귀가 망가져서 싸구려 스피커를 써도 아무런 문제가 없지만 귀가 좋은 사람들은 18000Hz를 듣는다고 하더군요. 이런 노이즈 캔슬링을 하려면 이러한 웅웅대는 소리도 막아야 하는데 180도 위상의 소리를 만들기 위해서는 진동판의 성능을 고려해서 만들어야 합니다.


무슨 소리인고 하니 아무리 가볍고 빠른 반응속도의 진동판을 쓰더라도 반응 속도에 따른 딜레이가 발생되고 이를 고려해서 반대 위상을 그냥 만들면 안 되는 것이지요. 특히 진동판의 고유 진동수에 멀수록 반응 속도가 늦어진다고도 합니다. (고급 스피커의 경우 저음용과 고음용으로 나누는 이유)


골치 아프죠?


사실 그래서 요즘은 1번과 2번을 같이 사용하는 방식을 사용합니다. 물리적으로 진동판의 반응속도가 느린 주파수는 차폐를 하는 방식을 쓰고 동시에 진동판의 고유 진동수에 가까운 주파수는 반대 파장을 만들어서 진동판에 같이 뿌리는 겁니다. 


물리적 차폐가 어느 정도 막아주면 사람 말소리와 비슷한 주파수(2000~12000Hz)는 반대 위상으로 막아내는 것이지요. 하지만 이것도 완벽하지는 않겠지요. 그래서 완벽에 가까운 성능이 좋은 물건일 수록 미친듯이 가격이 올라가는 것이겠지요.


이래서 오디오가격에 비싼돈을 바르는 사람들은 그냥 바르는 것이 아닌 것 같습니다.


P.S 그런데 오디오에 관심이 많은 사람치고 주파수와 푸리에 변환같은 수학적인 것에는 문외한인 사람이 많은 것 같습니다. 아직도 DAC를 거치기 전 디지털 신호의 손실이나 FLAC 음원의 손실 같은 소리를 하는 것을 보면 웃음밖에 안 나옵니다.


최근 잡음 제거로 고생을 했는데 잡음을 제거하는 제일 좋은 방법은 그냥 다른 소리로 안 들리게 묻어버리는 것이었습니다. 지극히 아날로그적인 발상이지만 최소한 듣기 싫은 소리를 빼는 것에는 성공을 했지요. 이러한 꼼수들이 사실은 각종 오디오 기기에서 말하는 노하우들이 아닐까 싶습니다.

,

2018년 4월 현재 한국에서 가장 빠른 오픈소스 미러 서버는 다음카카오 입니다.


이전에는 그냥 Daum이었지요.


그래서 이전에는 저장소를 쓸 때

http://ftp.daum.net


이렇게 썼는데 다음과 카카오가 합병한 이후에는 주소가 바뀌어서


http://ftp.daumkakao.com


이렇게 바뀌었고 저도 이렇게 쓰고 있었습니다.


그런데 최근 주소가 또 바뀌었네요? 물론 리다이렉트 되기 때문에 별 문제는 없지만 어딘가 한군데를 더 거치는 것이 걸리적거리니...


http://mirror.kakao.com/


여기로 바뀌었습니다. 이젠 다음이란 이름을 싹 날려버리고 오로지 카카오로 통일하려고 하는군요. 카카오가 거대기업이 되더니 느낌이 어째 쎄합니다? 통근버스가 동네 학원버스였던 것이 엊그제 같은데 세상 참 빨리 변하네요. 이젠 괴물로 보이기 시작하다니...


인터페이스도 훨씬 더 예뻐졌습니다. 보통은 이 화면을 보기전에 그냥 컴컴한 CMD화면에서 주소를 바꾸기 때문에 잘 모르시긴 하겠지만...

,


LibreOffice가 어느새 6.0으로 업데이트 되었습니다.


기존 5.0보다 더욱 좋아진 기능으로 무장했고 더욱 호환성을 높혔습니다.


그런데 그에대한 반동으로 상당히 무거워졌습니다. 왠지 MSOffice가 갔던 그 길을 따라가는 것 같아 슬프네요.


하지만 뭐 이걸 어느정도 완화 할 수 는 있습니다. 물론 기본적으로 무거워 진 것은 어쩔 수 없으니 답답하면 버전을 낮추기라도 해야겠지요. (....아니면 이참에 다른 것으로 바꿔야 할지도 모르겠네요.)


일단 LibreOffice의 아무 프로그램이나 실행한 다음

도구-옵션으로 들어갑니다.


그다음 Advanced를 찾아 들어갑니다. 아직 번역이 완벽히 되지 않아서 한글과 영문이 섞여 있습니다.


여기서 Open Expoert Configuration 즉, 전문가 설정을 눌러 들어가도록 합시다.

참고로 여기서 JAVA를 꺼주시면 조금이나마 더 성능이 나아지기도 합니다. 대신 일부 기능을 못 씁니다.



여기서 org.openoffice.Office.Common에서 Cache -> GraphicManager 순으로 열어서 확인합니다.


여기서 캐시크기를 늘려주면 그림이 많은 문서를 작업할 때 캐시를 확보해서 어느정도 버벅임을 줄일 수 있습니다. TotalCacheSize와 ObjectCacheSize를 늘려주세요. 물론 적당히 늘려야 메모리를 절약할 수 있겠죠?


그리고 확인을 누른다음 옵션에서 보기를 누릅니다.



그래픽출력을 확인해보시면 하드웨어가속 사용이 있는데 시스템에 따라 하드웨어가속을 써야 빠른 경우가 있고 하드웨어 가속을 꺼야 빠른 경우가 있습니다. 그건 상황에따라 다릅니다. 그리고 OpenGL렌더링 사용은 왠만하면 체크해두세요. Ignore OpenGL Blacklist는 체크를 해서 쓰다가 렌더링이 깨지면 그냥 OpenGL 사용 자체를 꺼주세요. 일부 GPU에서 렌더링이 깨진다고 합니다.


일단 이렇게만 해도 적당히 돌아는 갑니다. 그런데 아직도 답답하다면 LibreOffice를 다운그레이드 하는 것도 방법입니다.


뭐... 차차 나아지겠지요.

,

csv파일은 굉장히 오래된 포맷입니다. Lotus 1-2-3시절부터 써오던 현재 Excel이 가지고 있는 위상을 그대로 가지고 있지요.


사실 csv포맷 자체는 단순하기 때문에 8bit마이컴에서도 쓸 수 있을 정도로 간단합니다. 하지만 그에비해 이를 이용하는 스프레드시트는 발전에 발전을 거듭하여 이에 범접할 수 없는 위치까지 왔습니다.


사실 최근에 쓰이는 스프레드시트는 csv포맷을 지금도 잘 읽어들입니다.

단, 나름 똑똑한 기능이라고 CSV파일에 숫자가 있으면 이를 Excel이나 LibreOffice Calc에서 읽어서 숫자 셀로 만들어버립니다. 편리한 기능이지요.


다만, 이건 숫자 데이터상의 CSV일때 이야기고 다른 상황이면 애매해집니다.


대표적인 경우가 다음과 같은 경우입니다.


대충 이런 형태의 CSV파일입니다.


제일 왼쪽은 16진수로 표시되고 그 다음열은 영문 문장 그 다음열은 번역된 문장으로 구성됩니다. 열과 열은 탭으로 구분되어있는 일명 TSV형태 입니다.


사실 LibreOffice의 Calc나 Excel, Google SpreadSheet 등 최근 스프레드시트는 모두 잘 읽어들입니다. 문제는.. 그놈의 숫자셀 기능이 문제를 일으킨다는 것이지요.


38e0이란 16진수가 38이 되어버렸다.

사실 그냥 숫자가 아닌 16진수이기 때문에 오인할 가능성은 있습니다. 문제는 16진수는 abcdef를 사용하는데 이를 알파벳으로 읽어버리고 이는 문자열셀로 만듭니다. 숫자만 있으면 숫자로 남기지요. 하지만 알파벳e와 숫자가 섞인 것은 자그마치 지수로 생각합니다!


그러니까 본래 38e0 이라는 16진수를 3.8 X 10 이라는 숫자로 읽어버리는 것입니다. 참고로 이를 원래의 텍스트로 되돌리지도 못합니다. 이놈의 프로그램은 CSV를 다시 읽어들인다든지 하는 것은 없더군요!


이는 Excel에도 같은 문제가 있기에 해당 문제에 대해 물어본 사람이 있습니다.

https://answers.microsoft.com/ko-kr/msoffice/forum/msoffice_excel-mso_winother-mso_2010/csv-%ED%8C%8C%EC%9D%BC-excel-open-%EC%8B%9C/7f8bcd9f-2177-4e80-b31c-0a79d61f117a


그런데 동문서답하네요. 그 이야기가 아닌 것 같은데...


그런데 불행인지 다행인지 딱 하나 Google 스프레드시트에서 이를 회피할 수 있는 방법이 있었습니다. 어차피 Google 스프레드시트에서 xls나 ods로 내보내기가 가능하니까 다른 프로그램 사용자도 이를 적용해서 변환한 다음 사용하면 아무 문제없이 쓸 수 있을 것입니다.


일단 https://docs.google.com/spreadsheets/u/0/ 일단 여기로 접속합니다. 구글 로그인은 되어있다는 가정하에요.


개인 적으로는 크롬을 사용하는 것을 추천합니다. 이러니 저러니해도 크롬이 가장 구글의 서비스를 쓰기 편하거든요.





그리고 오른쪽 아래의 빨간색 +버튼을 누릅니다. 그러면 빈 스프레드시트가 생성됩니다.


뒤에있는 데이터는 신경쓰지말자. 아까 보여줬던 그 데이터다.

파일 - 가져오기

이렇게 들어갑니다.


그리고 업로드 탭으로 들어간 뒤에 드래그 하라는 곳으로 CSV 파일을 던져 넣어서 업로드 합니다. 아니면 파란버튼을 눌러서 CSV파일을 열어도 됩니다.


그러면



파일 가져오기에 대한 옵션이 뜨는데 다른 것은 전부 기본상태로 둬도 되지만(구분 유형은 해주는 것이 그래도 좋습니다. 정 모르겠다고 하실 때만 자동 감지를 해주세요.)

"텍스트를 숫자 및 날짜로 전환" 부분을 아니오로 체크합니다. 그러면...


아까 지수로 읽히던 부분이 16진수의 텍스트로 잘 읽힙니다!


그럼 이걸 그냥 Google스프레드시트에서 바로 작업해도 되고 익숙한 다른 프로그램을 사용하고 싶으시면


파일 - 다른 이름으로 다운로드에서 xls 혹은 ods 다운로드가 가능합니다. 그러니까 이후에는 아무 문제없이 텍스트 셀로 된 파일을 열 수 있는 것입니다.


일단 구글의 프로그램으로 우회하긴 했지만 대량의 데이터가 들어간 CSV를 ods나 xls로 만들어 셀 속성을 살릴 수 있는 방법이었습니다. 이후 셀 속성을 바꾸고 싶다면 해당 프로그램에서 셀 속성을 바꾸면 그만입니다.

,

RenPy게임은 사실 허점이 많습니다. 이런 저런 잠금장치를 해봐도 결국 Python이라는 특성상 Py파일을 열 수 있고 엔진의 Py파일을 손대면 이러니저러니 해도 데이터 마이닝을 쉽게 할 수 있습니다.


사실 대다수 게임엔진은 개발자모드 혹은 콘솔진입을 허용합니다. 대표적인 게임이 퀘이크 엔진과 그의 영향을 받은 소스엔진 같은 게임 엔진입니다.


멀리 갈 것도 없이 소스엔진 게임인 half-life를 실행한 상태에서 `키(혹은~키)를 누르면 갑자기 게임 내에서 명령어 창이 뜹니다. 이게 바로 게임 엔진의 콘솔인 것이지요. 일반인들은 이 콘솔을 치트키를 치는 창 정도로 생각하지만 (sv_cheats 1 이런 것)사실은 이 명령창은 개발자의 개발 편의성을 위해 만들어진 것 입니다.


RenPy도 게임엔진이기에 개발자의 편의를 위한 기능을 내장하고 있습니다. 보통 options.rpy파일로 이를 제어하고 있습니다.


우선 매뉴얼을 볼까요?


https://www.renpy.org/doc/html/developer_tools.html

Shift+O키를 누르면 콘솔이 활성화 되고 Shift+R을 누르면 스크립트를 다시 읽어들인다고 합니다. 실시간 스크립트 수정이 필요할 때 아주 좋지요.


하지만 이것을 실제 게이머가 실수로 누르기라도 하면 난감해지겠지요? 어떻게 하는지도 잘 모를 것이고요. 이를 제어하는 일반적인 방법은 다음과 같습니다.


Renpy로 만들던 중에 Options.rpy 파일을 열면

init -1 python hide:
    config.developer = False
    config.console = False

이러한 구문이 있거나 이것과 흡사한 구문이 있습니다.


바로 개발자모드를 활성화 하는 코드입니다. 물론 실제 상용 게임에는 True를 False로 바꿔서 개발자모드 진입을 막습니다. 그리고 파일을 쉽게 읽기 어렵게 하기 위해 rpyc형태로 배포합니다. 한번 컴파일한 형태이지요. 물론 rpyc는 쉽게 디컴파일이 되지만 Python 직접 접근 구문에서 간혹 파일이 깨지기도 합니다. 그러므로 rpyc파일을 디컴파일해서 rpy로 만든 다음 수정해도 되지만 이는 별로 추천하지 않습니다.


무엇보다 Renpy는 Python이기에 위험한 작업 없이도 쉽게 됩니다.


Python은 인터프리터 언어이고 이미 있는 객체의 이름을 다른 객체로 선언하면 이전의 객체는 무시됩니다. 그리고 Renpy는 스크립트를 읽어들일때 이름 순으로 읽습니다. 즉, A로 시작되는 파일을 읽기 시작해서 z로 시작하는 파일로 끝내는 것입니다.


그렇다는 것은 Options.rpy를 읽어들여서 개발자모드가 비활성화 되었다고 한들 z로 시작되는 파일을 읽어서 활성화 되면 개발자모드가 다시 활성화 되는 것입니다.


두근두근 문예부의 경우 이를 비활성화 해 놓았습니다. 막말로 이런 플레이어를 가지고 노는 게임이 개발자모드로 진입하면 이게 게임의 일부분인지 아니면 실수인지 알 길이 없지요.(오류메시지나 블루스크린마저 게임의 일부분으로 써먹는 게임이니까요. 진짜 오류메시지와 구분이 안 갑니다.)


하지만 zzzzz.rpy라는 파일을 game폴더에 만들어 놓고 다음과 같이 적어봅시다.

init -1 python hide:
    config.developer = True
    config.console = True


이렇게 하고 게임을 실행하면...


평상시와 다를 것이 없습니다. 하지만 Shift+O키를 누르면 상황이 달라집니다.

>

어디서 많이 보지 않았나요?

닮았죠?

네 바로 Python 커맨드 창입니다. 직접 여기서 명령을 내려서 제어를 할 수 있습니다.

물론 Python구문뿐 아니라 RenPy모듈도 이미 import 되어 있기에 RenPy명령어도 먹힙니다.


그러므로 개발자 콘솔에서 탈출을 하려면 Python과 똑같이

exit

이 명령을 하면 됩니다.


그럼 한번 치트를 시도해봅시다.


jump credits


이러면 바로 credits라고 정의된 부분으로 바로 점프합니다. (타이틀에서는 먹히지 않습니다. 일단 새 게임을 눌러서 게임이 시작되야 먹힙니다. credits 레이블이 나중에 만들어지기 때문입니다.)


그럼 바로 엔딩 보는 겁니다. 물론 CG는 회수 된 부분 까지만 나오게 됩니다. Monika가 놀라서 뒤집어질 일이 일어난 것이지요. (이래서 데이터 마이닝을 하는 사람은 미스테리 게임을 못합니다. - 언더테일 제작자 왈)


이런 jump기능은 특정 label로 바로 넘어가기 위한 구문으로 실제로 스크립트에 써먹는 구문입니다. 이걸 명령을 때우는 겁니다. Python개발 할 때랑 비슷하지요.


그리고 넘기기가 안 먹히는 구간에서 콘솔을 열고 config.fast_skipping=True를 다시 때려버리면 마구 넘어갑니다. 이 외에도 많은 부분을 뜯어 볼 수 있습니다.


물론 이걸 남용하면 Monika가 그랬던 것처럼 게임이 망가집니다. 주의하세요!

,

더빙패치 :

https://drive.google.com/file/d/1P29VPtgWCW0fsQ-LfR1NrCKzmO-TSDs5/view


이젠 하다하다 한국어 더빙까지 입혔습니다.


유튜브에서 림뽐(https://www.youtube.com/watch?v=516BSRBQS7k)이란 분이 두근두근 문예부의 엔딩을 직접 불러서 올리셨더군요. 이 분말고도 다른 분도 많기는 했지만 한글패치에서 번역된 것과 다르게 직접 개사를 하셔서 상당히 가사 전달력이 좋았습니다.


그래서 혹시나 하고 패치를 만들어도 되는지 물어봤는데

바로 허락해주시더군요.


그래서 냉큼 유튜브의 영상의 음성 편집한 다음 게임에 적용했습니다.


편집은 Audacity를 이용했습니다.

필요한 부분만큼 뚝뚝 자른 다음 잇고 붙이고 잘라낸 다음 효과를 적용해서 마무리 지었습니다. 그리고 (싸구려 헤드셋을 끼고)볼륨 밸런싱 작업도 했습니다.


그 결과...




편집하고 개선하면서 개사되어 바뀐 부분을 수정하고 한국어로 더빙되었기에 필요 없어진 초반에 플레이어를 부르는 부분의 자막을 삭제했습니다. 물론 엔딩곡 부분도 없앨 수 있었지만 엔딩곡은 그래도 가사가 나오는 것이 좋겠다고 생각해서 한글패치에서 만들어진 부분을 살렸습니다.

겸사겸사 스크립트 수정하면서 보컬분의 이름도 추가하고 제 이름도 넣어놓고(...) 진엔딩도 같이 봤습니다. (사실은 개발자 모드로 들어가서 모니카와 싸웠습니다.)



패치 방법은

https://drive.google.com/file/d/1P29VPtgWCW0fsQ-LfR1NrCKzmO-TSDs5/view


위의 링크로 들어가신다음

오른쪽 우의 다운로드 버튼을 눌러서 파일을 다운로드 받으신 다음 한글패치 하듯이 압축을 풀어 그냥 게임 설치된 폴더에 넣어주시면 됩니다. 이왕이면 한글패치 배포사이트에서 같이 배포했으면 하는데 이걸 트위터로 알려야 할지 아니면 그냥 묻어버려야 할지 그것을 잘 모르겠네요.


대사를 입히는 더빙까지는...시간이 오래 걸리겠지요?

,

RenPy로 만들어진 게임은 기본 언어가 Python이라서 성능이 생각보다 많이 좋지 못합니다.


심지어 아직도 Python2.7을 사용하기 때문에 3.x에서 해결된 GIL이슈가 아직도 현재 진행형입니다. 고작 2D게임 주제에 무슨 성능 이슈냐! 라고 하시는 분도 있을 것입니다. 그런데 나름 2D게임에서도 3D 효과를 쓰거나 투명도를 잔뜩 쓰는 경우 성능 이슈를 겪을 수 있습니다. 그리고 빠른 프레임을 원한다면 더 하지요.


이러한 RenPy로 만들어진 게임은 대략 다음과 같습니다.


Long Live The Queen

두근두근 문예부

아날로그


등등


일단 RenPy게임에서 성능 이슈라긴 뭐하지만 묘한 성능 이슈를 여기서 겪었습니다.


..JUST MONICA

뒷 배경을 보면 알파값을 심하게 써서 살짝 버벅거림이 눈에 띄더군요. 이유를 잘 몰랐는데 아래의 페이지에서 원인을 알 수 있었습니다.


https://www.renpy.org/doc/html/display_problems.html


아마도 OpenGL설정이 제대로 되지 않아서 성능 이슈가 생긴 듯 합니다. 그럴 때는 여기에 나온 대로 Shift+G를 누른 다음


여기서 Force OpenGL Renderer를 선택하시면 됩니다. 강제로 OpenGL로 돌아가면서 성능 이슈가 조금이나마 나을 겁니다. 전 어찌된 영문인지 Software로 잠시 들어갔었던 듯 합니다.


만약 LLVM Pipe 등의 Software OpenGL 렌더러를 쓰신다면 반대로 Force Software Renderer를 쓰시면 조금이나마 나아집니다. 그런데 이런 경우는 요즘 많이 없을 듯 하네요.


참고로 Windows에서는 DirectX 렌더링이 뜨기도 하는데 이걸 쓰면 성능이 더 나아지기도 합니다. 그런데 Windows에서는 어눌한 해킹드라이버를 쓴다거나 하지 않는다면 OpenGL 2.0로 굴러가지 못하는 경우가 없습니다. 그냥 일반적으로 기본 설정으로 하다가 이상하다 싶으면 강제 설정을 하시면 됩니다.

,

유명한 프로그램입니다. Windows에서는 역사와 전통을 자랑하는 Blustacks나 MEmu같은 프로그램들이 있어서 묻히는 감이 있지만 리눅스에서는 안드로이드 게임을 하려면 선택지가 이거 밖에는 없습니다.


개발자 킷에 있는 안드로이드 에뮬레이터는 아시다시피 느려서 OpenGL굴리려고 하면 답답함이 많습니다. 그에비해 Genymotion은 OpenGL신호를 그대로 납치해서 PC의 OpenGL 신호로 뿌려버립니다. 덕분에 빠른 속도로 안드로이드 게임(...)을 할 수 있는 것입니다.


홈페이지는 여기입니다. https://www.genymotion.com/


오른쪽 위의 Sign In을 클릭


여기서 가입하고 Genymotion을 다운로드 받으면 됩니다. 그런데...


무리 봐도 Trial버전밖에는 안 보입니다. 하지만 무료 개인용 버전이 있습니다. 바로 Resource를 누른다음 Funzone으로 가면 됩니다. 그냥 바로 가시려면


https://www.genymotion.com/fun-zone/


그러면 Genymotion을 다운로드 가능합니다.


그러면 왠 bin파일이 덜렁 나오는데 여기서 해당 파일의 속성을 잠시 바꿔줘야 합니다.


bin파일의 오른쪽 버튼을 눌러 속성에 들어가신 다음 권한 탭에서 "파일을 프로그램으로 실행 허용"을 체크합니다.




만약 터미널에서 작업 하시겠다면


sudo chmod +x genymotion~~.bin


그리고 터미널로 해당 파일이 있는 곳으로 넘어가서

(cd bin파일이 있는 곳)

sudo ./genymotion~~.bin


이렇게 해주시면 됩니다. 참고로 virtualbox는 미리 설치 되어 있어야 합니다. 만약 아직 설치가 안 되었다면

sudo apt install virtualbox


그러면 메뉴에 Genymotion이 추가됩니다.

리눅스 민트 기준 개발 탭에 가면 있다.

처음에 설치하면 가상머신을 만들까요? 하고 물어봅니다. 여기서 Yes를 눌러도 되고 No 를 눌러도 이후 Add 버튼으로 추가할 수 있습니다.


여기서 원하는 기종을 선택 Android 버전은 이왕이면 4.4 이후를 추천한다. 이유는 아래에서 알려줍니다.

여기까지 오면 Finish를 눌러서 종료

바로 실행하기 전에 몽키스패너 모양을 눌러서 세부 조정이 가능합니다. 특히 해상도는 신경을 많이 써야 하는데 너무 해상도가 높으면 버벅거리고 너무 해상도가 낮으면 화면이 작아 보이지요.


여기서 적당히 선택을 하지 않으면 난감한 상황이 터집니다.


이렇게 부팅이 됩니다.

하지만 딱 보면 난감한 것이 우선 Play스토어가 없어서 이걸 어떻게 해야 할지 막막합니다. 그렇지만 한방에 끝내는 방법이 있습니다. 일단 부팅이 완료 된후 오른쪽 위의 버튼을 주목해주세요. OpenGapps란 아이콘이 보입니다. 이게 Gapps 즉, 구글 앱을 설치해주는 메뉴입니다.


다만 이 기능은 OpenGapps가 4.4 이후부터 지원하므로 이전버전인 4.2, .4.3 등은 지원하지 않습니다. 그래서 제가 4.4 이후로 하는 것이 좋다고 한 것입니다. 이 전 버전은 직접 ADB를 이용해서 gapps를 넣어줘야 합니다.


이것을 눌러주면 PlayStore가 생깁니다. 이후는 일반적인 스마트폰 사용과 동일합니다.


아차. 언어가 영어라서 난감하시다고요? (Genymotion은 영문인터페이스인데 이건 어떻게 하셨습니까..?)


간단합니다 Settings에 들어가시면 Language가 있습니다. 여기서 한국어를 찾아서 바꿔주시면 됩니다. 참 쉽죠?

4.4 Kitkat의 화면이지만 최신판인 Oreo도 Language에 들어가야 하는 것은 거의 비슷하다.


그리고 Playstore에서 추가로 Google 한국어 입력기를 설치해주시면 한글 입력도 됩니다. 물론 한영 전환은 아래에 뜨는 언어 전환 아이콘을 써야하지만요.


다만, 아직도 불안정한 면이 있고 메모리가 부족하면 그대로 튕기는 등 애매한면이 많습니다. 그래도 되는게 얼마입니까.

,



PlayonLinux는 제가 애용하는 프로그램 중 하나입니다.


이것으로 수많은 프로그램을 실행하고 성공이야기를 썼지요. 하지만 언제부터인지 한국어 번역이 중단 되어서 영문과 한국어가 혼재된 상태에 빠져있었습니다.


그렇기에 제가 http://moordev.tistory.com/244 여기서 예시로 언급하기까지 했지요.


그래서 이 참에 그냥 번역을 새로 했습니다. 다만 내용이 너무 방대했던 관계로 처음부터 그냥 한 것은 아니고 구글 번역기와 함께 작업을 했습니다. 요즘 구글 번역기 좋더군요. 가끔 엉망이긴 하지만 가끔 그럴 뿐이고 다른 것은 꽤 괜찮았습니다. (무슨 말인지...)



pol.mo.zip

해당 파일을 다운로드 받아 압축을 풀고 pol.mo를 /usr/share/locale/ko/LC_MESSAGES


폴더에 덮어주시면 PlayonLinux가 일단 가능한 선까지 한국어화가 되어서 보이게 될겁니다.


PlayonLinux팀에다 해당 번역을 보냈는데 소스 트리에 넣어줄지는 잘 모르겠습니다. 언젠가는 해주겠지요 뭐.

,