더빙패치 :

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팀에다 해당 번역을 보냈는데 소스 트리에 넣어줄지는 잘 모르겠습니다. 언젠가는 해주겠지요 뭐.

,

최근 무슨 이유인지 무덤까지 갔다가 다시 돌아온 게임이 있습니다.


이름하여 Soulworker. 별명은 서울 노동자입니다.


그냥 별거 없이 온라인 액션 게임정도인데 최근 몇가지 사건 덕에 갑자기 역주행하면서 뜨고 있는 게임입니다. 그냥 게임에 필요한 장비를 퍼준다고 소매넣기라나...?


아무튼 한창 화제가 되길래 이를 리눅스에서 굴려보기로 했습니다. 사실 이미 스팀에서 오픈베타가 시작되었는데 스팀판도 Wine으로 잘 된다고 하더군요.


북미서버로 스팀에서 구할 수만 있으면 쉽게 할 수 있는데 일단 지금 난리가 난 것은 한국서버이니 한국 클라이언트를 설치하고 해봅시다.


우선 클라이언트를 다운로드 받아야겠지요. 홈페이지 런처 방식을 보이지만 사실 클라이언트만 있어도 설치, 실행 다 되는 구조입니다. 옛날같이 ActiveX 안 씁니다.


그리고 Windows용 게임이니 PlayonLinux를 이용해서 한번 설치해보지요.


중간에 Wine2.14-staging을 이용했는데 Wine-Gallium-Nine을 이용해서 DX9렌더링을 이용하셔도 좋고 Wine2.21-staging을 이용하셔도 좋습니다.


그리고 PlayonLinux로 들어가서 구성탭에서 vcrun2010run을 설치해 주셔야 합니다. 게임 설치중에 Visual C++ Runtime 2010을 설치하려고 드는데 이것 때문에 에러납니다.


vcrun2010을 누르고 설치버튼을 누르고 기다리면 어느새 설치가 되어있습니다.


마지막에 STOVE.exe를 바로가기로 만들어서 스마일게이트의 클라이언트를 적용합시다.


그리고 STOVE.exe를 실행하면 로그인하라고 나오는데 아래에 있는 페이스북, 구글, 네이버 다 안 됩니다. 그냥 이참에 Stove 가입해서 로그인을 했습니다.


여기서 게임설치 버튼을 누르면 설치가 시작됩니다. 생각보다 속도가 빠르더군요.


중간에 본인인증을 요구하는데 인증을 안 하면 안되니 어쩌겠습니까? 그냥 해야지요.


그러면 클라이언트가 얼어붙습니다. 그냥 PlayonLinux를 껐다가 본인 인증하고 다시 켜주셔야 합니다.


요즘은 ActiveX를 안 써서 참 좋습니다. 이것도 그냥 휴대폰으로 인증하면 됩니다.



이제 게임을 시작해보려고 하는데...


계속 클라이언트가 멈추길래 몇번 PlayonLinux를 껐다켰습니다.

그러자 드디어 화면이 바뀌는가 싶었는데....


오른쪽 아래에 뭔가 거슬리는 것이 뜹니다. 뭔가 했더니 해킹 방지 프로그램이네요?

이거 불안한데...


펑!


이런....좋다 말았습니다. 다 됐나 싶었더니 여기서 문제가 생기네요. 이걸 우회하지 않으면 방법이 없습니다. 그런데 이걸 어떻게 해야할지 감이 안 오네요.


혹시나하고 XIGNCODE하고 Wine하고 어떨런지 확인하니...


답이 안 나옵니다.


https://www.playonlinux.com/en/topic-12957-Script_Dirty_Bomb.html


XIGNCODE가 문제가 많네요. 이걸 우회할 수 있는 방법은 현재 없습니다.


좋다 말았습니다. 이걸 무력화 한다던지 바보로 만들어야하는데 이게 가능할런지...에라이...


====================================


XIGNCODE가 하는 일


1. DirectX 변조 확인

2. rootkit


이 둘 때문에 망했네요. rootkit을 하려면 드라이버 설치가 필수이고 Wine에서 드라이버가 설치 될리 만무하니 여기서 첫번째 망


DirectX는 당연히 Wine의 DirectX와 MS의 DirectX는 다르기 때문에 변조되었다고 생각합니다. 그러니 결국 망한겁니다. 이걸 우회하거나 XIGNCODE측에 Wine지원해달라고 칭얼대는 수밖에는 없겠네요. 그런데 이게 가능하려나...?


그림은 예쁘네요. 제길.


,

Korean_IME_suport_Linux_v2.tar.gz



http://moordev.tistory.com/242 두근두근 문예부! 리눅스에서 굴리기


해당 글에서 우리는 두근두근 문예부를 굴리는데 성공했습니다.

그런데 다른 것은 하나도 문제가 없는데 이름 입력할 때 한국어가 입력이 안 된다는 문제가 있었습니다.


패치는 글 제일 아래에 있습니다. 아래에서 이야기하는 것은 다 넣어놨으니 그냥 패치만 필요하신 분은 그냥 글 아래로 쭉 내려가세요.


원인이 Ren'Py 엔진이 사용하는 SDL이 리눅스에서 사용하는 XIM프로토콜(한국어, 중국어, 일본어 입력기에서 사용하는 프로토콜)이 지원이 안된다고 합니다. 게다가 해당 프로토콜이 딱히 정형화 되어 있지 않은 것이 워낙 많아서 SDL에서 지원을 하기가 좀 걸끄러운 수준인 듯 합니다.


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

여기 보면 해당 사항에 대해 나와있습니다.


대충 해석하면 리눅스에서는 IME가 필요한 한국어, 일본어, 중국어 입력이 불가능



그래서 다른 방법을 생각했습니다.


그럼 어차피 Python이니 Python의 기능을 활용해서 넣으면 되는거 아닌가?

실제로 Tkinter같은 간단한 GUI 라이브러리를 쓰면 아무런 문제가 없을테니까요.


그래서 게임을 뜯었습니다. 


rpatool https://github.com/Shizmob/rpatool

unrpyc https://github.com/CensoredUsername/unrpyc



이 둘을 쓰면 rpa를 뜯고 스크립트를 들여다보는 것은 어렵지 않습니다. 자세한 것은 직접 확인을 부탁드리고 우선 Tkinter를 렌파이에 삽입하기 전에 간단한 GUI를 만들어보았습니다.

#-*- coding: utf-8 -*-
from Tkinter import *

name = ""
root = Tk()
def okClick():
    name = txt.get()
    root.destroy()
    print name

lbl = Label(root, text="이름")
lbl.pack()

txt = Entry(root)
txt.pack()

btn = Button(root, text="OK", command=okClick)
btn.pack()

root.mainloop()

렌파이는 아직도 Python2.7을 쓰기 때문에 2.7에 맞춰서 제작했습니다. 해당 프로그램은 이름을 입력한 후 OK버튼을 누르면 터미널에 입력한 문장을 띄우는 지극히 간단한 GUI프로그램입니다.


우분투라면 python-tk 패키지를 미리 설치해야 작동합니다.

sudo apt install python-tk


나중에는 python2.7-tk 이런 식으로 이름이 바뀔 수도 있습니다. 그때가면 알게 되겠지요.


이런 것을 넣기로 게임에 해당 코드를 삽입하기로 했습니다.


Scripts.rpa파일은 game 폴더 안에 있다. 사실 여긴 게임하다보면 자주 들락날락 하게 되는 곳이기도 하다.



scripts.rpa파일이 보이는 군요. 이 안에 필요한 파일이 있을 것입니다.


rpatool -x scripts.rpa


rpatool이 설치 된 곳에서 명령을 내리세요.


그러면 수많은 rpyc파일들이 쏟아집니다. 그러면 이걸 rpy로 디컴파일 해야 합니다. 제가 원하는 파일은 screen.rpyc더군요.(노가다해서 알아냈습니다.


python unrpyc.py screen.rpyc (screen.rpyc 파일을 unrpyc와 함께 놓고 명령을 내리세요.)


이렇게 하면 디컴파일된 코드를 얻을 수 있습니다. 이걸 수정해서 (설치폴더)/game

에 rpy 상태로 그냥 넣으면 수정된 코드로 작동하게 됩니다. 이건 LongLiveTheQueen에서 잘 써먹었던 방법이지요. rpa에 있는 스크립트보다 밖에 있는 스크립트가 우선됩니다.


그리고 screem.rpy파일을 잘 뒤져서

init -501 screen name_input(message, ok_action):


코드를 찾습니다.

이 부분이 바로 이름을 입력하는 부분!


 init -501 screen name_input(message, ok_action):
    python:
        #-*- coding: utf-8 -*-
        from Tkinter import *
        global root
        global tk_txt
        global name
        global player
        tk_txt = ""
        name = ""

        root = Tk()
        def okClick():
            global name
            global tk_txt
            global player
            name = tk_txt.get()
            root.destroy()
            player = unicode(name)
            print player
      
        lbl = Label(root, text="이름을 입력해 주세요")
        lbl.pack()
        
        tk_txt = Entry(root)
        tk_txt.pack()
        
        btn = Button(root, text="OK", command=okClick)
        btn.pack()
        if not player:
            root.mainloop()

        else:
            del(root)
            del(tk_txt)
            del(name)

        
    modal True

    zorder 200

    style_prefix "confirm"

    add "gui/overlay/confirm.png"
    key "K_RETURN" action [Play("sound", gui.activate_sound), ok_action]

    frame:

        has vbox:
            xalign .5
            yalign .5
            spacing 30

        #label _(message):
        label _(player+"(으)로 진행합니다."):
            style "confirm_prompt"
            xalign 0.5
        #input default "name" value VariableInputValue("player") length 12


        hbox:
            xalign 0.5
            spacing 100

            textbutton _("예") action ok_action



여기서 붉은 색으로 표시한 부분이 추가한 부분입니다.

그리고 초록색으로 표시한 부분은 앞에 #을 추가하여 삭제한 코드입니다.

아래쪽에 frame: 안을 보시면 label _(message)를 삭제하고 player란 변수에 들어간 이름을 쓴다는 지극히 쓸데없는 메시지를 한번 더 띄웁니다. 사실 본래 이름입력하라고 한 창을 최소한의 수정으로 바꾼 것입니다.


이걸 쓰면 일단 TK로 된 창이 뜨고 이름을 입력하면 기존 player라는 변수에 이름이 입력되게 됩니다.


문제는 Renpy에 Tkinter 라이브러리를 넣어줘야 한다는 것.

어차피 제가 올려놓은 패치에는 필요한 라이브러리는 다 넣었습니다.


(문예부 설치폴더)/game/python-package

여기에 해당 모듈을 쏟아 부어줘야 합니다.

시스템에 python2.7이 설치되어 있다면

/usr/lib/python2.7/lib-tk

여기에 해당 모듈이 다 있습니다. 이걸 (문예부 설치폴더)/game/python-package 여기에 싹 복사해서 넣어주면 됩니다.


그리고 추가로 python2.7.14의 _tkinter.so파일이 필요합니다. 이건 Debian패키지에서 찾아서 넣어주면 됩니다.

https://packages.debian.org/sid/python-tk

여기서 sid버전의 DEB을 다운로드 받은 다음 압축을 풀어서 AMD64패키지의 것은


(문예부 설치폴더)/lib/linux-x86_64/lib

여기에 _tkinder.so 파일을 넣고

i386은 (문예부 설치폴더)/lib/linux-x86/lib

여기에 넣으면 됩니다.


그러면

이렇게 별도의 창을 띄울 수 있게 됩니다. 이러면 한글 입력이 가능해지는 것이지요!


이제 리눅스에서도 한글 이름 입력을 할 수 있게 되었습니다!


 

 

 




수정 전 후비교


왼쪽은 백날 아무리 두드려봐야 한글 입력이 안 되지만 오른쪽은 한글로 입력이 가능해집니다. 추가로 글자수 제한이 풀려서 14자 이상의 글자 입력이 가능합니다.


해당 패치는 리눅스 전용입니다. Windows에서는 정상작동이 절대로 안 되니 Windows 사용자분들은 굳이 설치 하지 마세요.(애초에 Windows는 한글입력이 잘 되니까 이런 짓 안 해도 됩니다.)


===================================


2018. 4. 13


세이브중에 세이브가 안 되는 버그가 발견되어 이를 수정한 패치를 만들었습니다.


Korean_IME_suport_Linux_v2.tar.gz


수정 부분은

         if not player:
            root.mainloop()

        else:
            del(root)
            del(tk_txt)
            del(name)


이 부분으로 이름입력이 끝난후 필요없어진 TK관련 객체를 삭제하는 코드를 넣었습니다. 그랬더니 세이브가 잘 되더군요.


====사용상 주의사항======


1. 한글 이름입력을 위해 Tkinter를 이용한 패치입니다. 따라서 Tcl/Tk 라이브러리가 설치되어야 합니다.


우분투의 경우

sudo apt install python-tk


명령을 통해 Tkinter 설치가 가능합니다.


2. 한국어 입력기에 따라 마지막 글자가 입력이 될 수도 있고 안 될 수도 있습니다. 그럴 때는 화살표 키를 한번 눌러주시면 마지막 글자가 입력 됩니다.


3. 이름을 입력하고 되돌리기는 불가능합니다. 이름을 잘 못 입력했다면 그냥 눈물을 머금고 다시 게임을 시작하시기 바랍니다. game폴더의 firstrun파일을 지우면 완전 처음부터 가능합니다.


4. 이 패치는 오로지 한국어 환경에서 리눅스를 사용하는 사람들을 위한 패치입니다. 절대로 한글 패치가 아닙니다.


5. 게임을 수정한 것이기에 Monika가 갑자기 놀랄 수가 있습니다. 그건 제가 알 바 아닙니다.


6. 게임이 이상해진다거나 하는 것은 이 패치 때문이 아닙니다. 이 쯤 되면 다들 알잖아요?


7. 게임내의 캐릭터가 사라지는 것은 이 패치 때문이 아닙니다.


8. 저는 Team Salvato와 아무런 관계가 없습니다. 한글패치 팀과도 아무런 관계가 없습니다.


9. JUST MONIKA

,

스펙 옵스 : 더 라인

이 게임은 2K게임즈에서 퍼블리싱 하는 TPS게임입니다.


두바이를 배경으로 전쟁의 피폐함(이라기보다는 고통)을 잘 보여주는 게임입니다. 멀티플레이는 그냥 덤이고 싱글플레이 하나만 하는 것을 추천하지요.


그런데 2018. 3. 31까지 자그마치 Humble Store에서 무료로 이 게임을 판매하고 있습니다. 물론 무료라고 해도 영수증은 나와야하니(?) 구매부터 스팀에 등록까지 마쳐야 합니다.

https://www.humblebundle.com/store/spec-ops-the-line?hmb_source=humble_home&hmb_medium=product_tile&hmb_campaign=mosaic_section_1_layout_index_1_layout_type_twos_tile_index_1


리눅스를 지원하는 대작게임이 무료!

일단 공짜니까 좋다고 구매하고 리눅스용 스팀에서 이를 등록했습니다.


리눅스용 게임만 라이브러리에 뜨는데 생각보다 많다...


문제는 느리다 못해 동네 개울가의 다슬기가 기어가는 속도인 스팀 서버가 문제지만 공짜인것이 뭐가 문제입니까?


다만 단점이 한국어가 정식으로 포함된 게임이 아니라서 따로 한글패치를 해줘야 합니다. 그것도 윈도우용으로 배포된 것을!


네... 그런고로 한글패치를 위한 삽질 시작입니다.


일단 한글패치는 http://egloos.zum.com/hanfield/v/1003736 여기서 다운로드 받습니다.




여기서 다운로드 받으면 SOTL_KR_1.03.exe란 파일이 나오게 됩니다.


해당 실행파일을 Wine으로 실행합니다. 어차피 임시니까 잠시 Installer를 썼다가 파일만 리눅스용으로 덮을겁니다. Playonlinux로 임시 Prefix를 하나 만든 다음 파일만 복사하고 해당 Prefix를 지우는 것도 방법입니다.



일단 인스톨이 되었으면 파일을 가지고 나옵시다.


기본 Wine은 ~/.wine/drive_c 이후 이고

PlayonLinux는 ~/PlayOnLinux's virtual drives/(임시 Prefix명)/drive_c 밑으로 찾아가면 됩니다.


설치할 때 스팀어쩌고에 그냥 해버렸으면 drive_c/Program Files(x86)/Steam/steamapps/common/SpecOps_TheLine

여기에 한글패치가 있을 것입니다.


일단 여기 있는 파일을 복사!


이것을 리눅스용 스팀의 스펙 옵스 : 더 라인에 가져다 놓으면 되겠지요.


리눅스용 스팀의 스펙 옵스 : 더 라인은

~/.steam/steam/steamapps/common/SpecOps_TheLine

여기 있습니다.


다슬기가 어느새 다 기어왔다. 생각보다 다슬기는 빠르다.

일단 한글패치의 파일을 리눅스용에 덮어봅시다.


합치고 덮어버리고 그러고 실행을 해봅시다.


아주 잘 되는군요!!!


참고로 저는 LinuxMint 18.3(Ubuntu 16.04기반)

AMD Mullins 4Core

AMD R3

8GB DDR3

환경에서 게임을 멀쩡히 돌리고 있습니다. 최적화도 상당히 잘 되어 있네요.

,

리눅스에서 이런저런 프로그램을 쓰다보면 난감할 때가 많습니다. 분명 일부 글자는 한글로 잘 뜨지만 중간중간 영어나 다른 외국어가 끼어있는 경우도 있고 가끔 멀쩡히 한글로 뜨던것이 갑자기 영어로 덜컥 나오면서 멘붕을 먹게하는 경우도 있지요.


사실 오픈소스 프로그램들은 대부분 i18n이라해서 국제화 방식을 사용합니다. 시스템의 국가설정을 읽어서 이에 맞춰 해당 언어로 인터페이스를 갖추는 것 입니다. 윈도우에서도 반디집이나 한글2007 이후 버전이 국가 설정을 읽어서 언어 설정을 자동으로 하는 대표적인 프로그램입니다. 윈도우 영문판을 설치하거나 국가설정을 영어로 맞추면 반디집의 인터페이스가 자동으로 영문으로 바뀌는 것을 확인 할 수 있습니다.


물론, 옛날 옛적에 만든 프로그램은 그런 것을 1도 신경 안 썼기 때문에 한글판이면 한글판이 필요했고 영문판과 한글판의 라이센스가 따로 논다던지 하는 문제가 있었는데(대표적인 예가 포토샵 구버전 영문판 구매하고 한글판 설치하면 안 먹힙니다.) 요즘은 어느 국가에서 구입을 하더라도 한국어 인터페이스를 갖출 수 있는 것입니다.


문제는...


상용 프로그램이면 몰라도 커뮤니티의 기여와 여러사람들의 노력으로 굴러가는 오픈소스 프로그램 특성상 기존 번역가가 빠지면 번역이 옛날 버전 수준으로 만들어 진다는 점입니다.


대표적인 프로그램이 PlayonLinux입니다.


분명 기본 인터페이스는 한국어로 잘 나옵니다.


어디는 한국어화가 되어있고 어디는 한국어화가 안 되어있는 난감한 상황, 이러고 3년을 썼다.

하지만 특정 인터페이스는 영문으로 출력되는 것을 알 수 있습니다. 그것도 제일 중요한 프로그램 설치 중 메시지는 100% 영문입니다. 심지어 일부 메시지는 한국어와 영어가 혼재되어있습니다.


이유는 PlayonLinux는 계속 업데이트 되었지만 업데이트되며 추가된 텍스트가 번역이 되지 않은 것입니다. 사실 이런 프로그램이 상당히 많습니다. 그러니까 해당 언어권 사람의 기여가 필요합니다.


그러려면 우선 po파일에 대하여 알려드려야겠네요.


po파일은 말 그대로 번역파일입니다. 소스에서 문장을 뽑아서 이를 적용할 수 있게 만들어진 파일입니다. 그냥 UTF8 혹은 UTF16으로 인코딩된(당연히 유니코드계열 인코딩이겠지요. 멍청이가 아닌 이상) 텍스트 파일입니다.


이런 식으로 구성되어 있습니다. (예시는 PlayonLinux의 ko.po입니다.)


# Korean translation for playonlinux
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the playonlinux package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: playonlinux\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2015-08-31 19:00+0200\n"
"PO-Revision-Date: 2014-11-25 09:09+0000\n"
"Last-Translator: Hyun-Seok, Choi <chs1217@gmail.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2015-09-01 05:11+0000\n"
"X-Generator: Launchpad (build 17690)\n"

#: Capture plugin:2, Detour plugin:4
msgid "Which application do you want to apply the modification to?"
msgstr "어느 어플리케이션에 수정 사항을 적용할 것 입니까?"

#: Capture plugin:3
msgid ""
"This plugin wil allow you to capture you applications under PlayOnLinux"
msgstr "이 플러그인은 PlayOnLinux 아래의 어플리케이션을 캡쳐할 수 있습니다."

#: Capture plugin:4
msgid "Capture menu (OpenGL)"
msgstr "캡쳐 메뉴(OpenGL)"

#: Capture plugin:5
msgid "Capture menu (not OpenGL)"
msgstr "캡쳐 메뉴(not OpenGL)"


제일 위쪽에 언제 누가 번역을 했는지 적혀있고 아래로 내려오면서 실제 번역될 문장과 번역된 문장이 있는 것을 알 수 있습니다.


그럼 이 po파일만 있으면 되느냐 하면 그건 아니고 이것을 mo파일로 컴파일 해야합니다.

msgfmt란 프로그램이 그런 역할을 합니다.


msgfmt XXX.po -o XXX.mo

이렇게 하면 mo 파일이 만들어집니다.


/usr/share/locale 여기로 들어간 다음 하위 폴더를 찾아보면 수많은 mo파일들을 볼 수 있는데 이것이 바로 지금까지 우리가 언어팩이라며 설치한 수많은 국가들을 위해 만들어진 파일입니다. 여기에는 Gnome이나 MATE, KDE의 프로그램도 있고 심지어 apt-get의 메시지도 번역되어 들어가 있습니다.


/usr/share/locale/ko/LC_MESSAGES

여기에 가면 수많은 한국어 번역 파일들이 있고 그렇다는 것은 여기에 파일명에 맞춰서 mo파일을 넣으면 해당 프로그램이 한국어로 뜨게 된다는 것을 의미합니다.


그리고 대다수 프로그램들은 i18n지원을 위해서 pot파일이라하여 po파일의 템플릿을 제공합니다.


즉, 그냥 양식을 줄테니 번역만 해서 달라 이겁니다.


그런데 이걸 그냥 텍스트에디터로 작업하려고 하면 노가다가 극심하겠지요. 심지어 기존 번역이 부족해서 추가하려고 한다면? 맨 땅에 pot파일을 가져와서 처음부터 다시 번역을 해야 할까요? 그랬다간 번역자들이 죽어 나갈겁니다. 그래서 po편집전문 프로그램이 있습니다.


poedit https://poedit.net/


아주 간단합니다. 이것을 쓰면 됩니다. 심지어 한글로도 잘 번역되어 있으니(당연하다면 당연한 것일까요?) 편하게 쓸 수 있습니다. 한국에서는 Wordpress로 자체 사이트 운영하는 사람들이 쓴다고 소개하던데 본래 목적은 i18n지원이 목적입니다.


sudo apt install poedit


이렇게 하면 설치됩니다.


당연하게도 한국어 번역이 잘 되어있다. 만약 번역이 안 된 부분이 있다면 poedit으로 poedit의 한국어화를 하도록 하자.

그냥 po파일을 불러와서 편집만 하면 되는 아주 간단한 프로그램입니다. 윈도용은 유료니 뭐니 하는 이야기가 있던데 그건 협업 시스템 이야기고 우리는 그냥 개인적으로 이용할 테니 무시하도록 합시다.


일단 하나를 예시로 들어봐야겠네요.


아까 위에서 말했던 PlayonLinux를 이용해보도록 하겠습니다.

보통 오픈소스 프로그램들은 github에서 소스코드를 제공합니다. 물론 po파일도 같이 제공합니다.


PlayonLinux의 po파일들은 여기 있군요.

https://github.com/PlayOnLinux/POL-POM-4/tree/master/lang/po


보통 소스트리에서 po란 폴더 혹은 lang이란 폴더가 po파일들이 있는 폴더일 가능성이 높습니다. 여기서 두 가지 파일을 다운로드 받아봅시다.


하나는 번역이 부족한 한국어 번역파일 ko.po

다른 하나는 프로젝트에서 제공하는 템플릿인 pol.pot 파일입니다. 보통 템플릿 파일은 확장자를 pot으로 만듭니다. 만약 pot이 없다면 en.po를 이용해야 합니다. (그런데 보통은 pot을 제공합니다. 정 없으면 소스트리에서 gettext를 통해 pot을 만들어야합니다.)


Raw버튼을 누르면 github에서 실제 파일이 다운로드 가능하다.

해당 파일을 github에서 연 뒤에 RAW버튼을 누르면 파일을 다운로드 받을 수 있습니다. 파일이 다운로드 안되고 그냥 열린다면 오른쪽 버튼을 누르고 다른 이름으로 저장을 누르면 됩니다. 어차피 그냥 일반 텍스트 파일이니까요.


그럼 이것을 poedit으로 열어봅시다.


poedit을 열고 ko.po파일을 열어봅시다.

보시면 아시겠지만 번역은 완벽히 된 것처럼 보입니다. 하지만 이것은 오래된 버전에 맞춰져서 만들어진 번역입니다. 최신판에 맞춰서 바꿔야겠지요.


카탈로그 - POT파일로 업데이트를 누르고 다운로드 받은 pol.pot파일을 선택하면...


번역 숙제가 와르르 쏟아집니다.

이제 이것은 숙제입니다. 일일이 노가다해서라도 번역을 해야합니다. 그러고 나면 자동으로 mo파일이 만들어집니다. 저장 버튼을 누르면 알아서 컴파일까지 다 해주더군요.


번역이 완료된 뒤에 해당 mo파일을 pol.mo로 바꾸고 /usr/share/locale/ko/LC_MESSAGES 여기에 넣으면...


PlayonLinux의 번역이 완료됩니다. 가능하다면 po파일을 해당 프로젝트 관리자에게 보내거나 직접 github에 branch해서 올리는 것도 방법입니다. 그러면 관리자가 해당 branch를 master로 합쳐줄 수 있겠지요.


다른 프로그램도 비슷합니다. 아직 한국어 번역이 되지 않은 수많은 프로그램을 이런 식으로 한국어화 할 수 있습니다. 예외가 몇 가지 있기는 대부분은 이렇게 번역이 가능합니다. 심지어 이것을 웹으로 할 수 있게 만든 weblate란 프로젝트도 있습니다. 이쪽은 CSV형태로도 가능하더군요!


영어 능력자이신 한국인, 취미로 영어 번역을 하시는 분, 영어를 쓰시면서 한국어가 되시는 분, 그냥 한국어가 되는 영어권 사람 등등 그리고 오픈소스를 사랑하는 한국어 사용자 분들 이런 식으로 작은 기여를 통해 오픈소스 세계의 한국을 만들어봅시다.

,

이 블로그의 평균 방문객수는 기껏해야 300명 남짓입니다.


사실 마이너한 주제를 다루고 있기도 하고 전문적인 내용을 갖춘것도 아닙니다. 전문적인 내용을 원한다면 이 블로그를 찾을게 아니라 당장 man 페이지를 뒤지는 것이 빠릅니다.


그런데 대체 무슨일이 있었던 것일까요?


관리페이지에 오랜만에 갔다가 그래프들이 모양이 이상해서 봤더니 3. 23 하루에 처음보는 숫자의 방문자가 왔다 갔습니다.


여긴 아무리 많이 와봐야 500명이거든요? 가끔 제가 폭발해서 하루에 3개씩 마구잡이로 포스트했을때 정도? 그런데 이날은 제가 딱히 올린 것도 없는데 2000명이라니...


대충 찾아보니 우분투 18.04 관련해서 왔다갔다 한 것처럼 보이는데 알 길이 없네요.


검색엔진이 왔다가 오류가나서 파바박 했을지도 모를 일이고 뭔가 티스토리 내부에서 오류가 난 것일지도 모르지요. 


그냥 어쩌다가보니 놀라서 올립니다.

,

음... 이건 뭐라고 해야하나..

아무튼 대단한 게임이 있습니다. 게다가 무료지요.


뭐라고 해야하지...?


뭐... 자세한 것은 그렇다고 치고 일단 한국어화 패치 사이트는 여기입니다.


https://sites.google.com/view/dokidokikor


여기에 게임의 모든 것을 설명한...것은 아니고 아무튼 잘 번역이 되어있습니다.


이 게임은...일단 미소녀 연예 시뮬레이터의 일종...이라고 하는데 일단 일종이라는 표현을 빌려서... 에휴.. 모르겠다. 아무튼 아는 사람은 다 알테니 게임에 대한 설명은 넘어가겠습니다.


일단 저는 내용 스포일러를 다 당했기 때문에 그렇다 치겠습니다.


이 게임은 지원 OS가 Windows, Mac, Linux입니다.


스팀판이 있다고 하니까 따로 구하기 귀찮아서 스팀에서 설치하려고 하니...


리눅스 지원이 안된다고 나오네요? 리눅스 지원된다고 알고 있었는데 이유가 뭔지 몰라서 공식 홈페이지에 가봤습니다.


https://teamsalvato.itch.io/ddlc



여깁니다. 어차피 무료이니 여기서 다운로드 버튼을 눌러보면 리눅스, 맥, 윈도버전을 다운로드 받을 수 있게 해놓았겠지요.


하하... 게임이 마음에 들면 기부해 달라고 하네요. 네 마음에 드신다면 여기서 필요한 만큼 금액을 적어서 Paypal이나 기타 방법으로 기부를 하시면 됩니다. 일단 저는... 무료로 해보기 위해서 "No, Thanks. Just take me Download." 를 위치고 다운로드를 하기로 했습니다. 그런데 10달러정도는 기부할 만한 게임입니다. 여러가지 의미로 말이지요...


펭귄그림이 윈도용과 함께 있군요. 그러니까 윈도용과 리눅스용은 공용판이었나 봅니다. Windows용을 다운로드 받으면 되겠군요.


다운로드 받은 ddlc-win.zip 압축을 풀어주시면...


요렇게 나옵니다. 여기서 DDLC.sh를 실행하면 됩니다.


음.. 실행 잘 되네요. 그럼 한글 패치를 해봅시다.


https://sites.google.com/view/dokidokikor


여기가 한글패치 배포 사이트입니다. 여기서 우린 스팀판이 아닌(스팀판을 굴릴래야 굴릴 수가 없으니...)일반 사용자 버전을 다운로드 받으면 되겠습니다.


스팀판 패치는 안 먹히니 이걸 다운로드 받으시면 됩니다.


그리고 압축파일의 내용을 그대로 설치된 곳에 풀어서 덮으시면 됩니다.

(렌파이 엔진의 일부도 갈아엎은 듯 합니다. 몇 년전에 제가 Long Live The Queen 작업할 때 비슷한 짓을 했었지요. 이후 해당 기능이 이식되면서 패치를 내려버리긴 했습니다.)


이제 다시 실행해 보겠습니다.


... 윈도와 리눅스의 차이를 아십니까?


권한이 날아가 버렸네요!

이런 빌어먹을 작업을 해야한다는 것이 더 슬픕니다. 마이너는 이래서 슬픈 겁니다.


하지만 권한따윈 복구해주면 됩니다.


게임이 설치된 곳에서

sudo chmod +x lib/linux-x86_64/DDLC

sudo chmod +x lib/linux-i686/DDLC


이렇게 해주면 실행 권한이 다시 살아납니다.


터미널에 이런저런 내용이 뜨면서 실행이 됩니다.


굳이 터미널로 실행한 이유는 뭐냐고요?


.... 이 게임을 해보시면 압니다. 한국어로 아래에 뜨는 경고문 보이시죠? 이것하고 묘하게 관련이 깊습니다.

해커는 역시 터미널을 봐야 직성이 풀린다고 해야할까요...?


저기 있는 SyntaxWarning부터 신경쓰이기 시작하면 이 게임을 아주 잘 아시는 겁니다.



그런데 새 게임을 눌러보니 한글 입력이 안 되네요?

그래서 한글입력을 할 수 있게 Tkinter를 이용해서 한글 입력이 되게끔 수정한 패치를 같이 공개합니다.


http://moordev.tistory.com/246

두근두근 문예부! 리눅스용 한글입력 개삽질



마지막으로...


리눅스에서의 너는 어떤지 한번 보자꾸나.

> 터미널을 같이 띄우는 이유는 이런일이 일어나기 때문입니다.(스포일러 약간 함유.게임을 할 것이라면 누르지 마세요. 주의)




,