http://moordev.tistory.com/20
우선, 링크의 글에서 저는 갖은 삽질을 통해서 안드로이드 버전을 올릴 수 있었습니다. 그런데 이것이 무엇을 의미하는 것인지 이때까지 저는 알지 못했습니다. 갑작스런 한글패치 및 삽질 하기 전에는...
관심 없으시겠지만 패치 제작 동기를 보고 싶으시다면 클릭
우선 이야기는 쭉 거슬러 올라가서 제가 Long Live The Queen의 한글패치가 개발중이라는 소식을 들으면서 시작됩니다.
http://ghap.tistory.com/entry/LONG-LIVE-THE-QUEEN-%ED%95%9C%EA%B8%80-%ED%8C%A8%EC%B9%98-%ED%8C%8C%EC%9D%BC%EC%9E%85%EB%8B%88%EB%8B%A4
끄암이라는 분께서 팀 왈도와 함께 한글패치를 공개중이라는 소식을 듣고는 적용을 해보았습니다. 그리고 이것을 안드로이드로 포팅하기 위해서 또 다른 삽질을 시작합니다.
Ren'Py의 최신 버전을 다운로드 받고 glpatch.rpy 삭제, steam.rpy 삭제, translation.rpy를 unrpyc한 후 2줄 주석 처리
translation.rpy
screen language_select: tag menu modal false add 'video_prefs_bg' vbox: |
→ |
screen language_select: tag menu # modal false add 'video_prefs_bg' vbox:
|
renpy.file(fn).close() return fn except: return s renpy.display.text.text_tags['tag'] = False label set_language_failed: "An error occurred loading the new language:\n%(last_exception)s" return |
→ |
renpy.file(fn).close() return fn except: return s # renpy.display.text.text_tags['tag'] = False label set_language_failed: "An error occurred loading the new language:\n%(last_exception)s" return |
|
|
|
그리고 안드로이드에만 해당되는 패치로써
config.searchpath[0] 을 전부 '/sdcard' (따옴표 포함)로 찾아바꾸기 함으로써 한글패치 중 translation 폴더를 sdcard에 넣어서 패치가 인식되도록 고칩니다.
그 다음 이전과 똑같이 rpatool로 llq.rpa 파일을 풀어버립니다.
그리고, 렌파이 런처에서 안드로이드로 작업하면 모든 것이 끝이 납니다. 정확히는 해당 글의 유튜브 영상을 보시면 안드로이드 포팅이 완료 됩니다. 그냥 유튜브 영상을 따라한 후 위의 작업을 해주시면 모두 완료 됩니다.
바로 여기까지가 안드로이드포팅을 위한 삽질이었습니다. 그런데 '/sdcard'로 찾아바꾸기를 하는 것을 제외한 나머지 작업이 또 필요하게 될 줄은 저도 몰랐습니다.
안드로이드 포팅 하면서 한글패치를 하고 한글화가 몇 군데가 덜 되었다는 것을 발견 합니다.
이 부분은 포럼에서도 말이 많은 부분이다. 왜 번역이 안 되는지 이유를 알 수 없다고..
즉, 몇군데가 완벽히 번역이 되지 않았는데, 문제는 번역파일 내에 이 문장들이 들어있었던 겁니다. 즉, 번역파일이 있음에도 문장이 번역이 되지 않는 이상한 현상이 생긴 것입니다.
이를 해결하고자 렌파이 내에 자체 번역기능이 있다는 것을 알게됩니다.
options.rpy에
config.language = "korean"
이 한 줄을 추가하고 렌파이 루트에 environment.txt 파일을 만들고, 그 안에
RENPY_UPDATE_STRINGS=""
이 한 줄을 넣어주면 이후 렌파이런처를 통해 게임을 할 때마다 game/tl/korean/strings.rpy 파일이 생성되면서 번역을 위한 파일이 생성 됨을 알 수 있었습니다. 그리고 여기서 번역을 해서 문장을 처리하니 잘 만 되더군요.(좀 노가다이기는 하지만)
그런데.....
렌파이런처가 아닌 스팀을 통해서 실행을 하면 오류가 나는 것이 문제였습니다. 그것도 tl/korean/strings.rpy 파일이 문제라고 하더군요.
웃긴것은 렌파이 런처를 통해서는 잘만 실행이 되었다는 겁니다.
렌파이 런처를 통해서 실행하면 에러가 없었단 말이다. 대체 뭐가 문제야!
....
결론부터 말하자면 렌파이 런처를 통해서 실행하면 최신버전의 렌파이(즉, 안드로이드 포팅을 위해 다운로드 받은 그 렌파이)를 통해 실행이 되고 스팀으로 실행하면 기존에 제작자가 만들었던 렌파이로 실행이 되는 것이었습니다. 즉, 렌파이 버전이 달라서 생긴 문제입니다.
기존 버전은 6.12.2 이었고, 이번에 제가 다운로드 받은 버전은 6.17.7이었습니다. 이 버전 차이가 약간의 문제를 일으킨 것입니다.
제가 안드로이드 포팅을 위해 이리저리 뜯어고치고 바꾸고 한 것이 사실 제가 다운로드 받은 렌파이엔진에 맞게끔 뜯어고친 것과 같은 것입니다. 그리고 저 game/tl/korean/strings.rpy 파일도 기존 스팀으로 다운로드 받은 렌파이로는 처리가 불가능(translation 관련 스크립트가 전무합니다.)했기에 에러를 뿜은 것입니다.
...그래서 렌파이 런처로 어쨌건 실행은 되긴 되니까 배포판 만들기 기능으로 아에 새로운 배포판을 만들어봤습니다.
내가 만든것도 아니면서 배포판 기능을 사용했다... 뭐 직접 배포할 것도 아닌데 뭘
중간에 options.rpy 파일을 손대는 과정이 있었는데 잠깐 무시하고 배포판으로 만들어진 것을 직접 실행해봤습니다. 그랬더니 Steam문제만 일으키고 마네요?
그래서 options.rpy를 기존것으로 교체후에 Steam에 있던 폴더를 교체해봤습니다.
잘만 번역 되네요. 심지어 스팀도 연동 잘 됩니다.그런데 이것이 의미하는 것이 한 가지 있었습니다...게임엔진이 완전히 교체되었다는 사실입니다. 이제, 렌파이도 버전이 바뀌었고, Python도 Python2.6에서 Python 2.7로 바뀌었습니다. 이것이 어떤 문제를 일으킬지는 알 수 없지만, 최소한 번역 관련해서 문제를 일으킬 것 같지는 않군요.
LongLiveTheQueen/lib/ 폴더트리구조부터 바뀌었다. 이외에도 LongLiveTheQueen/renpy/ 도 당연히 바뀌었다. 엔진 버전 자체가 바뀐 상태로.
그리하여...해당 엔진 버전업 패치를 공개하고자 합니다. 그런데... /game/ 폴더 제외하곤 거의 통짜 교체라 이게 먹힐지 안 먹힐지....
닫기
이미 대부분의 기능이 Ghap님 패치에 이식 되었습니다. 몇몇 추가기능(그래픽 가속 기능, 렌파이 번역엔진, 안드로이드 포팅)등을 이용하실 생각이 있으신 분들만 사용해주시면 됩니다.
단순 게임을 즐기기 위해서라면 Ghap님 패치만으로 충분합니다. (몇몇 문장 번역 안 되는 문제는 Ghap님 께서 alpha버전을 통해서 작업하고 계십니다. 필요한 기능이 alpha버전에 들어가 있거든요.)
이 패치는 우선적으로 http://ghap.tistory.com/entry/LONG-LIVE-THE-QUEEN-%ED%95%9C%EA%B8%80-%ED%8C%A8%EC%B9%98-%ED%8C%8C%EC%9D%BC%EC%9E%85%EB%8B%88%EB%8B%A4
여기에 있는 패치 적용이 전제되어야합니다. 즉, Ghap님의 패치를 먼저 하시라구요...
단!!! 우선 Ghap님 패치중에서 options.rpy는 하지 말아주십시오. 엔진 교체시 스팀 연동불가의 원인이 될 수 있습니다. 우선 options.rpy를 뺴고 제 패치를 설치한 후에 구동해 보십시오. 구동이 잘 된다면 그냥 게임을 해주시면 되고 구동이 안 되시면 그 때 options.rpy를 넣어주셔도 늦지 않습니다.
우선 기존의 C:\Program Files\Steam\steamapps\common\LongLiveTheQueen\renpy폴더를 미리 삭제해 주셔야합니다.
안 그러면 엔진충돌 납니다. 혹시 모르니 미리 백업하시는 것도 필수입니다.
리눅스 사용자라면
~/.steam/steam/SteamApps/common/LongLiveTheQueen/renpy 폴더를 미리 삭제해주시면 됩니다.
이전버전
그리고
윈도우 사용자용(7z압축)
리눅스,MacOSX사용자용(tar.gz압축 권한 설정이 되어있습니다.)
위의 패치를 다운로드 받으신 다음 그대로 덮어쓰기 해주시면 됩니다.
리눅스 사용자는 tar.gz 파일을 이용하시면 따로 권한 설정을 하실 필요가 없습니다.
그리고 리눅스 사용자에 한해서 다음 명령어로 실행권한을 주시기 바랍니다.(OSX는 모르겠습니다. 아마도 리눅스 처럼 해줘야 할 것 같습니다.)
chmod +x ~/.steam/steam/SteamApps/common/LongLiveTheQueen/lib/linux-i686/LongLiveTheQueen
chmod +x ~/.steam/steam/SteamApps/common/LongLiveTheQueen/lib/linux-x86_64/LongLiveTheQueen
chmod +x ~/.steam/steam/SteamApps/common/LongLiveTheQueen/LongLiveTheQueen.sh
이 패치로 인해 생기는 문제에 대해서 저는 책임을 지지 않습니다. 패치를 함으로써 생기는 문제는 전적으로 사용자 책임입니다.
번역은 Ghap(ghap.tistory.com)님과 팀 왈도의 결과물입니다. 번역본을 다른 용도로 이용하실 분은 미리 번역자분께 허락 받기 바랍니다.
8월 9일 추가
이 이미지를 moodbg.png라고 /game 넣어주시면 기분 탭의화면이 이것으로 바뀝니다. 영문 폰트를 대충 지운 흔적이 보이지만 게임상에선 아무 지장없습니다.(...)
8월 10일 새벽에 추가
Prettyprint.rpy(숫자관련 스크립트)부분을 대폭 수정하여 영문으로 뜨는 부분을 날려버리고 아라비아숫자로 뜨도록 바꿨습니다. one two 등으로 뜨는 부분을 1,2 로 싹다 바꿨습니다. 하나 둘 셋으로 바꿔도 되지만 우리나라 말 특성상 한 대대 두 소대 세 중대 등 단위가 바뀌면 또 말이 바뀌어서 그냥 아라비아 숫자로 뜨도록 했습니다. 이렇게 하는 것이 더 보기에 낫고요. 일부 함수가 작동을 하지 않은 것으로 판단되어서 그냥 함수를 덮었습니다. 그랬더니 잘 되네요. 이유야 어찌되었든...
그리고 추가 개선 한글 패치에서 Ghap님의 1.5버전에 맞게 일부 수정했습니다. 어쨌건 이 패치를 하면 한글은 잘 나오는데 다른 언어 사용자들은 지옥을 맛보게 될 겁니다.(설마 이 게임을 영어 공부하는데 쓰지는 않겠지요?)
8월 10일 버전 패치(구글드라이브라 속도가 매우 느립니다. 인내를 갖고 기다리시면 다운로드가 될 것입니다.)
윈도우 사용자용(7z압축)
리눅스,MacOSX사용자용(tar.gz압축 권한 설정이 되어있습니다.)
8월 12일 새벽.
로그 기능에 문제가 생겼던 이유는 파이썬이 기본적으로 아스키 코드를 기반으로 만들어지기 때문에 벌어진 일입니다. 해당 파이썬 스크립트 시작 부분에
sys.setdefaultencoding('utf-8')
요 한줄을 추가 함으로써 해결이 됩니다.
브라우저에서 마구 깨지는 문제는 htmlize_readback_log() 함수 첫줄에
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head>
이 <html>와 <body>사이에 태그를 삽입하도록 만들면 됩니다.
html = '<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"></head><body>'
이런 식으로 말이지요.
아래 13일 버전 패치를 통해서 해결 했습니다.
도로 접기
8월 13일 버전 패치(구글드라이브라 속도가 느립니다. 기다려 주시면 링크가 뜰 것입니다.)
{스팀경로}/LongLiveTheQueen 폴더에 압축을 풀기 전에 LongLiveTheQueen/renpy 폴더를 미리 삭제해 주시기 바랍니다.
Ghap님의 패치와 달리 (스팀경로)/LongLiveTheQueen 폴더에 압축을 풀으셔야 합니다.
윈도우용 (7z압축)
리눅스,OSX용 (tar.gz압축 따로 권한설정 필요없음)
수정사항
1. 로그 관련 오류 수정 - UTF-8인코딩을 기본적으로 쓰도록 함 (기존은 ASCII 인코딩이었음)
2. 저장이나 불러오기 중에 빈 슬롯에 "Empty Slot" 을 "비어있음"이라고 뜨도록 함. 200개 까지는 커버 함
3. 과목을 다 배우거나 한 종류만 50을 배웠을 때 과목 명이 영문으로 뜨므로 임시로 그것을 막기 위해
"당신이 현재 배우는 스킬은 50이 되었습니다. 같은 그룹내의 다른 스킬들이 25 이상이 되기 전엔 해당 스킬을 향상시킬 수 없습니다."
"당신은 이 스킬에 대해 더 배울 것이 없습니다."
이런 식으로 뜨도록 수정. - 한국어를 이용한 꼼수 - strings에 적힌 것과는 별개로 translation.rpy에 하드코딩 했으므로 무조건 이렇게 뜹니다.
4. prettyprint.rpy에 몇몇 함수가 여전히 작동 불능상태이므로 readable_number_small함수를 Override하는 식으로 덮었음. 함수가 작동 안 하는 일은 없을 것입니다.
(주의. Ghap님의 1.6버전의 한글패치 중 /translation/kr/ui/printpretty.rpy 파일이 들어있는 한 해당 스크립트가 우선 오버라이드 됩니다. /translation/kr/ui/printpretty.rpy 및 /translation/kr/ui/printpretty.rpyc 파일의 삭제 부탁드립니다. strings파일도 같이 있는 것으로 봐서 ghap님이 실수 하신 것으로 보입니다.)
5. 세이브파일에는 0주차로 뜨고 게임 내에서는 1주차로 뜨는 것을 수정 하는 패치 제작(제작사와 관계없이 수정 했으므로 무슨 일이 벌어질지 저도 모릅니다. 제작사는 버그가 아니라고 했으므로 안 하셔도 됩니다.)
세이브 주차수 관련 패치
압축을 풀어서 /game 폴더에 넣어주십시오.
6. 제일 중요한 오타 및 실수 수정.