Touhou Community Reliant Automatic Patcher
| |
개발
| |
발표
| |
플랫폼
| |
언어
| |
링크
| |
1. 개요
thcrap은 동방 프로젝트 게임에 적용할 수 있는 언어 패치/모딩 툴이다. 간단히 말해서 동방 프로젝트의 정규작과 외전작들을 한국어를 포함한 다양한 언어로 즐길 수 있게 해주는 프로그램. 게임에 재미를 더해주는 모드를 적용시킬 수도 있다.
2. 탄생 계기
프로젝트는 프랑스인 Brliron과 독일인 NamelessLegacy가 주축이 돼서 2013년쯤 시작됐다. 이들은 소개(#1#2)와 깃허브 기여 목록에서 알 수 있듯이 로우 레벨 프로그래밍, 리버스 엔지니어링, 파일 구조 분석까지 다룰 줄 아는 능력자들이다.
thcrap의 탄생 계기는 위키 번역과 다른 언어 패치 작업과정에서 기인한다. 예를 들어 동방위키 영문판의 경우, 대사 번역물은 항상 최신 상태가 유지되고 틀린 부분이 있으면 일본어에 더 능숙한 자가 나타나 올바르게 수정할 여지가 있다. 하지만 게임 패치는 어떤가? 제작자가 한 번 배포하고 나면 그냥 그걸로 끝이다. 오류를 고친 수정본을 배포하는 것 역시 한계가 있다.
또한 어떤 언어 A 패치를 만드는 과정을 생각해보자. A 패치를 만들기 위해선 데이터를 분해하고 텍스트와 이미지를 번역하고, 모든 번역물을 다시 결합하여 실제 게임에서 잘 적용되는지 검수과정을 거치는 등 수많은 노력이 필요하다. 그런데 이 힘든 과정을 거친 다음엔, 또 다른 언어 B 사용자가 패치를 만들고자 한다면 위 과정을 그대로 반복해야 하는 어려움이 따른다. 실질적으로 다른 부분은 데이터를 B로 번역하는 것뿐인데도 상당히 중복되는 작업이 발생하는 것이다. 이러한 문제들을 해결하기 위해 Touhou Patch Center와 thcrap이 제작되었다.
thcrap의 탄생 계기는 위키 번역과 다른 언어 패치 작업과정에서 기인한다. 예를 들어 동방위키 영문판의 경우, 대사 번역물은 항상 최신 상태가 유지되고 틀린 부분이 있으면 일본어에 더 능숙한 자가 나타나 올바르게 수정할 여지가 있다. 하지만 게임 패치는 어떤가? 제작자가 한 번 배포하고 나면 그냥 그걸로 끝이다. 오류를 고친 수정본을 배포하는 것 역시 한계가 있다.
또한 어떤 언어 A 패치를 만드는 과정을 생각해보자. A 패치를 만들기 위해선 데이터를 분해하고 텍스트와 이미지를 번역하고, 모든 번역물을 다시 결합하여 실제 게임에서 잘 적용되는지 검수과정을 거치는 등 수많은 노력이 필요하다. 그런데 이 힘든 과정을 거친 다음엔, 또 다른 언어 B 사용자가 패치를 만들고자 한다면 위 과정을 그대로 반복해야 하는 어려움이 따른다. 실질적으로 다른 부분은 데이터를 B로 번역하는 것뿐인데도 상당히 중복되는 작업이 발생하는 것이다. 이러한 문제들을 해결하기 위해 Touhou Patch Center와 thcrap이 제작되었다.
3. 특징
- 게임의 원본을 유지한다.
dll을 인젝션하는 방식이기 때문에 실행파일(exe)이나 원본 데이터를 변경하지 않으며 스코어 파일에도 문제가 없다. 때문에 원본 폴더에 다른 패치 방식의 로더나 패치 파일 등을 지저분하게 놓을 필요없이 깔끔하게 유지할 수 있다.
- 개발자와 번역자가 분리되어 있다.
개발자는 오로지 개발과 버그 수정에만 힘을 쓴다. 그 외 번역이나 번역물 결과 검수는 패치 센터와 커뮤니티에서 수많은 사용자가 참여하여 이루어진다. 이로 인해 개발자가 바로 작업에 착수한다면 상당히 빠른 속도로 패치를 제작할 수 있다. 예를 들어 비봉 나이트메어 다이어리는 발매된 지 이틀만에 기술적 지원이 완료되었고 같은 날에 영어 패치가 완성되었다.
- 여러 개의 패치를 중첩하여 동시에 적용할 수 있다.
예를 들어 한국어 패치를 적용하는 경우라면 'base_tsa', 'base_tasofro', 'script_latin' 패치 위에 'lang_ko' 패치가 적용되는 식이다. 여기에 추가로 alphes 그림체 패치나 보스 러쉬 패치를 적용하는 등 자유자재로 사용할 수가 있다.
- 모드 제작에 유용하다.
thcrap은 번역에 관련된 파일뿐만 아니라 다른 데이터 역시 교체하여 적용할 수 있기 때문에 수많은 모드들이 나와 있다.
- 게임 내 버그 수정
일부 작품에 있는 중대한 버그를 수정하는 기능이 있다.- 동방천공장: 스테이지 5의 스펠 프랙티스에서 사토노를 먼저 격파할 때 발생하는 버그를 고친다.
- 비봉 나이트메어 다이어리: 악몽 화요일-5에서 에이린&신묘마루가 쓰는 스펠카드명을 올바르게 출력한다.
- 동방귀형수(체험판): 우루미와 쿠타카의 스펠카드가 바뀌어 출력되는 버그를 고친다.
- 주석 표시 기능
19년 3월 23일자로 주석 기능이 추가되었다. 위키에서 {{Tlnote|주석내용}}으로 표기한 주석을 출력할 수 있다. 적용 이미지
주석은 게임 내 대사뿐만 아니라 스펠카드, 뮤직룸 코멘트 및 엔딩 대사에도 붙이는 것이 가능하다. 뮤직룸 코멘트의 주석은 화면을 벗어나도 잠시 글자가 남아있는 버그가 있다.
그리고 슈팅게임 계열에만 적용 가능하고 격투 게임은 아직 지원하지 않는다.
4. 작동 방식
패치 자료
| 패치 서버
| 사용자(thcrap)
| ||
→
| 메인 패치 서버
https://srv.thpatch.net/ | →
| thcrap 폴더에 다운받은 자료를 이용
| |
커스텀 파일
| →
| 커스텀 서버
|
번역물의 흐름은 위 표와 같다. 사용자가 패치 센터에서 번역을 하거나 파일을 올리면 파서가 미디어위키의 내용을 파싱해서 패치 서버로 업데이트 한다. 파서의 소스 코드는 깃허브에 있다.
thcrap은 repo.js 혹은 patch.js에 저장된 서버의 주소에서 패치 파일들을 다운받아 적용시킨다. 일단 한번 다운받은 뒤로는 업데이트 기능이 정지된다 해도 로컬에 존재하는 파일로 패치를 실행할 수 있다.
패치 서버는 공식 서버 외에도 사용자가 파이썬을 써서 자유롭게 만들 수도 있다. 서버 구축 방법. 수많은 모드들이 이와 같은 커스텀 서버로 배포된다.
thcrap의 가장 핵심적인 두 가지 기능은 binhacks와 breakpoint이다.[2] 이를 통해 코드를 수정하고 C 함수를 불러오거나, 추가로 메모리를 할당할 수 있다. 이론적으로는 요요몽의 사쿠야 발사 타입을 휘침성에 적용할 수도 있다고 한다.[3]
5. 사용법
6. 한국어 패치
한국어 포탈 페이지
한국어 패치 페이지
한국어 패치 서버
thcrap은 빙의화 패치가 나오기 전까진 한국 팬덤에게 거의 알려지지 않았다. 알고 있는 사람도 몇몇(#, #, #) 존재했지만 극히 소수였고 결정적으로 번역이 거의 되어있지 않았기 때문이다. 그리고 심기루를 제외한 모든 작품은 thcrap을 쓰지 않는 패치가 이미 있기 때문에 알 필요도, 알 기회도 없었을 것이다.
그러나 빙의화 한국어 패치가 thcrap을 통해 배포된 것을 계기로 동방 패치 센터와 thcrap의 존재를 아는 사람이 늘어날 듯하다. 2018년까지의 상황은 요정대전쟁과 신령묘의 텍스트 부분과 천공장의 일부분만이 완성되었을 뿐이었다. 지령전과 휘침성의 극초반 부분도 되어있기는 했다.
'18년 12월에 빙의화가 완료된 것을 시작으로 '19년 1월 31일, thcrap이 지원하는 모든 작품에 대해 한국어 패치 작업이 완료되었다.[4] 이 모든 게 한 유저에 의해 불과 2개월만에 이루어졌다.
기존 한국어 패치에 비하면, 요요몽과 영야초를 제외하고 모든 정규 슈팅 게임과 심기루 이후 격투게임에 대해 완벽하게 한국어 패치를 지원할 수 있는 방법은 thcrap밖에 없다. 기존 패치에서 홍마향, 풍신록, 지령전은 엔딩이나 스태프롤이 제대로 번역되지 않았고 성련선 이후는 플레이어 데이터의 스펠카드명을 한글로 출력하지 않기 때문이다. 비상천칙 이전 격투게임은 불완전하거나 지원하지 않으니 기존 패치를 쓰는 것이 좋다.
한국어 패치의 의존성은 'base_tsa'(슈팅), 'base_tasofro'(격투) 뿐이었으나 '18년 12월 5일자로 'script_latin'을 추가했다. 이는 심기루~빙의화에서 가로방향 대사와 말풍선을 자동으로 적용하기 위해서이다.
주로 사용되는 글꼴은 신령묘 이전은 나눔고딕이고 휘침성 이후로는 나눔명조이다. 격투게임 계열의 대사에는 a자막체를 사용한다.
한국어 패치 페이지
한국어 패치 서버
thcrap은 빙의화 패치가 나오기 전까진 한국 팬덤에게 거의 알려지지 않았다. 알고 있는 사람도 몇몇(#, #, #) 존재했지만 극히 소수였고 결정적으로 번역이 거의 되어있지 않았기 때문이다. 그리고 심기루를 제외한 모든 작품은 thcrap을 쓰지 않는 패치가 이미 있기 때문에 알 필요도, 알 기회도 없었을 것이다.
그러나 빙의화 한국어 패치가 thcrap을 통해 배포된 것을 계기로 동방 패치 센터와 thcrap의 존재를 아는 사람이 늘어날 듯하다. 2018년까지의 상황은 요정대전쟁과 신령묘의 텍스트 부분과 천공장의 일부분만이 완성되었을 뿐이었다. 지령전과 휘침성의 극초반 부분도 되어있기는 했다.
'18년 12월에 빙의화가 완료된 것을 시작으로 '19년 1월 31일, thcrap이 지원하는 모든 작품에 대해 한국어 패치 작업이 완료되었다.[4] 이 모든 게 한 유저에 의해 불과 2개월만에 이루어졌다.
기존 한국어 패치에 비하면, 요요몽과 영야초를 제외하고 모든 정규 슈팅 게임과 심기루 이후 격투게임에 대해 완벽하게 한국어 패치를 지원할 수 있는 방법은 thcrap밖에 없다. 기존 패치에서 홍마향, 풍신록, 지령전은 엔딩이나 스태프롤이 제대로 번역되지 않았고 성련선 이후는 플레이어 데이터의 스펠카드명을 한글로 출력하지 않기 때문이다. 비상천칙 이전 격투게임은 불완전하거나 지원하지 않으니 기존 패치를 쓰는 것이 좋다.
한국어 패치의 의존성은 'base_tsa'(슈팅), 'base_tasofro'(격투) 뿐이었으나 '18년 12월 5일자로 'script_latin'을 추가했다. 이는 심기루~빙의화에서 가로방향 대사와 말풍선을 자동으로 적용하기 위해서이다.
주로 사용되는 글꼴은 신령묘 이전은 나눔고딕이고 휘침성 이후로는 나눔명조이다. 격투게임 계열의 대사에는 a자막체를 사용한다.
6.1. 번역이 완료된 작품
슈팅게임 전부 및 심기루 이후 격투게임을 포함한다.
- TH06 동방홍마향
- TH07 동방요요몽
- TH08 동방영야초
- TH09 동방화영총
- TH09.5 동방문화첩
- TH10 동방풍신록
- TH11 동방지령전
- TH12 동방성련선
- TH12.5 더블 스포일러
- TH12.8 요정대전쟁
- TH13 동방신령묘
- TH13.5 동방심기루
- TH14 동방휘침성
- TH14.3 탄막 아마노자쿠
- TH14.5 동방심비록
- TH15 동방감주전
- TH15.5 동방빙의화
- TH16 동방천공장
- TH16.5 비봉 나이트메어 다이어리
- TH17 동방귀형수
6.2. 부분적으로 완료된 작품
7. 패치 및 모드들
7.1. 기본 패치
이 패치들은 thcrap을 적용하기 위한 핵심 해킹 코드와 breakpoint들을 포함하고 있기 때문에 거의 모든 패치에 필수적이다. 이게 없으면 그냥 원본을 실행하는 것과 다름이 없는 셈.
- base_tsa: 상하이 앨리스 환악단이 제작한 슈팅 게임을 지원하기 위한 패치.
- base_tasofro: 황혼 프론티어가 제작한 격투 게임을 지원하기 위한 패치.
- script_latin: 라틴 문자를 사용하는 언어를 위한 패치. 보통 서양권 언어는 번역하면 길이가 길어지기 때문에[6] 폰트 크기를 줄이고 출력 위치를 조정하는 등의 역할을 한다. 그 외에도 심기루~빙의화의 대사와 말풍선을 가로로 바꿔주는 중요한 기능이 있다.
7.2. 언어 패치
7.3. 모드
전체 목록 또는 https://www.thpatch.net/wiki/List_of_Patches
모드 제작에 필요한 ECL, SHT 파일에 대한 정보 모음
참고로 어떤 모드가 모든 게임에 대해 적용될 수 있는 것은 아니다. 모드를 다운받으면 어떤 게임 데이터들이 들어있는지 확인해보자.
다운받기 전에 미리 확인하는 방법은 위 패치 센터의 링크에 적혀있는 URL 목록을 보거나, 또는 thcrap이 있는 패치 폴더의 patch.js에 적혀있는 서버 주소를 보면 된다. ex) http://thcrap.nmlgc.net/repos/DTM/
그런데 'https://raw.githubusercontent.com/사용자/패치이름/master/' 이와 같은 형식이면 직접 접근할 수가 없고 'https://github.com/사용자/패치이름' 으로 들어가봐야 알 수 있다.
모드 제작에 필요한 ECL, SHT 파일에 대한 정보 모음
참고로 어떤 모드가 모든 게임에 대해 적용될 수 있는 것은 아니다. 모드를 다운받으면 어떤 게임 데이터들이 들어있는지 확인해보자.
다운받기 전에 미리 확인하는 방법은 위 패치 센터의 링크에 적혀있는 URL 목록을 보거나, 또는 thcrap이 있는 패치 폴더의 patch.js에 적혀있는 서버 주소를 보면 된다. ex) http://thcrap.nmlgc.net/repos/DTM/
그런데 'https://raw.githubusercontent.com/사용자/패치이름/master/' 이와 같은 형식이면 직접 접근할 수가 없고 'https://github.com/사용자/패치이름' 으로 들어가봐야 알 수 있다.
7.3.1. 리소스 교체 관련
- Braviretex: 리텍스처 패치. 몇몇 스프라이트와 효과음이 바뀐다.
- bgm_sc88pro: 위에서 언급한 미디음 패치.
- real_bullet_size: 피탄 판정에 맞게 탄 크기를 줄인다. 적용 이미지
- Fr00sk_Styled: 적용 이미지
- JzBoy_Styled: 적용 이미지
- mima: 미마를 볼 수 있다.
- untanned_cirno: 천공장의 치르노가 멀쩡하게 나온다.
- le_sanae:
감주전 사나에 패치
- visuals: 천공장의 계절 아이템의 투명도를 증가시키고, 귀형수에서 폭주 로어링 모드일 때 샷을 덜 화려하게 바꾸어 보기 편하게 해준다.
- ufo_vivid: 성련선의 벤토라 색약패치. UFO들을 좀 더 분명하게 알아볼 수 있다. 출처
- bottom_enemy: 하단의 "enemy" 문구를 지령전 이전 스타일처럼 성련선 이후 작품에도 표시한다.
7.3.2. 게임 플레이 관련
- BossRush: 필드전을 생략하고 중보스와 보스만 상대할 수 있다.
- 0power: 파워를 0으로 고정하고 아이템을 먹어도 올라가지 않는다. 마조히스트를 위한 패치.
- transparent_seasen_items - 천공장 계절 아이템을 투명하게 만든다.
- th14sanae: 휘침성 레이무 B를 감주전 사나에로 바꾼다. 적용 영상
- th15sakuya: 감주전 레이센을 휘침성 사쿠야 A로 바꾼다. 다만 칼날에 감속 효과는 없고 그냥 유도탄이다. 적용 영상
- th16sanae: 천공장 마리사를 감주전 사나에로 바꾼다. 적용 영상
- LoDDK: 감주전을 실행하면 휘침성과 감주전 보스가 같이 나오는
매우 끔찍한혼종 패치. 본편은 노멀 난이도만 되어도 루나틱을 상회하는 미친 난이도를 보여준다. 이지 난이도 영상
엑스트라에서 왼쪽을 선택하면 원본 그대로 재현한 모드가 되고 가운데는 클리어가 가능하게 난이도를 조정한 밸런스 모드다. 오른쪽은 지뢰찾기를 할 수 있다.(...)
- th16nonprac: 천공장 스펠 프랙티스에서 스펠이 아니라 통상 패턴을 연습할 수 있다.
-
- 천공장: 루나틱
- th16mystia: 치르노를 선택하면 미스티아처럼 시야가 좁아진 채 플레이하게 된다.(...) 적용 이미지
-
- 월요일 1 / 2 - 스테이지 1 / 보스
- 화요일 1 / 2 - 스테이지 2 / 보스
- 수요일 2 / 3 - 스테이지 3 / 보스
- 목요일 1 / 2 - 스테이지 4 / 보스
- 금요일 1 / 2 - 스테이지 5 / 보스
- 뒷 금요일 1 / 2 - 스테이지 6 / 보스
-
적어도 이미 정해진 패턴에서 탄이 랜덤으로 변하는 것을 예측이라도 할 수 있는 RNG 패치와는 달리, 탄이 생성조차 안 되거나 적의 움직임마저 건너뛰어버리고, 심지어 화면 밖에서 생성된 자코가 화면 안으로 들어오지도 않는 등 진정한 의미의 랜덤패치일지도 모른다.
- th15gapping: 감주전에서 화면 끝으로 다가가면 반대편으로 넘어갈 수 있다.
- th15slippery: 플레이어의 움직임이 마치 얼음판 위에서 미끄러지는 것처럼 관성이 적용된다.
- vx-customshots: 풍신록의 레이무 C타입, 감주전의 마리사 샷 타입을 넓은 형태로 바꾼다. https://twitter.com/thpatch/status/1134761505369526272
- th15garbo: 감주전에서 모든 탄의 모양과 색깔을 랜덤으로 바꾼다. 온갖 탄이 등장하는 걸 볼 수 있다. https://youtu.be/P05jErC_jTo 그리고 RNG패치와 같이 적용하면 정말 혼파망이 따로 없다.(...)
- ultra-fast: 귀형수에서 스테이지의 진행 상황을 2배 빠르게 한다. 게임의 시간 자체를 빠르게 한다는 것이 아니라, 등장하는 적의 타이밍이나 탄환 발사 속도 등의 스크립트 진행을 빠르게 한다. 때문에 필드 BGM이 중간도 가기 전에 보스를 마주하게 된다.(...)
- vx-fixedshots: 풍신록 마리사 B의 비정상적으로 높은 데미지, 귀형수 요우무 C의 비정상적으로 낮은 데미지를 정상으로 바꾼다.
- THBL_01: 엄청난 난이도를 자랑한다. 신령묘로 실행하면 된다.
- 8options: 지령전에서 마리사-파츄리를 제외한 모든 기체가 파워를 8까지 올릴 수 있다.
7.3.3. 기타
- skipgame: 모든 전투장면을 넘기고 대사만 확인해볼 수 있다. 주로 패치 결과를 검수할 때 쓰인다.
- instant_ending: 바로 엔딩 장면으로 넘어간다. 역시 검수과정에 주로 쓰인다.
- cheat: 무적, 오토 피탄 봄, 무한 봄 등등이 있다. 자세한 설명은 이 곳을 참고.
8. 알려진 문제점
8.1. thcrap
-
- 대사 텍스트 위치와 말풍선이 맞지 않는다.
- 마미조 엔딩과 레이센 엔딩에서 마지막 대사 하나가 출력되지 않는다. 게다가 레이센 엔딩은 이미지가 텍스트보다 한 단계 먼저 넘어간다.
-
-
- 불안정해서 종종 튕기는 경우가 있다.
- 스펠 카드 코멘트 번역을 지원하지 않는다.
- 윈도우 모드로 실행시 제목 번역을 지원하지 않는다.
- 비상천칙에서 대화 도중 '戦闘再開処理' 라는 시스템 관련 문자열이 표시되는 증상이 나타난다.
-
- 아직 지원하지 않음.