thcrap

덤프버전 :


1. 개요
2. 탄생 계기
3. 특징
4. 작동 방식
5. 사용법
6. 한국어 패치
6.1. 번역이 완료된 작품
6.2. 부분적으로 완료된 작품
7. 패치 및 모드들
7.1. 기본 패치
7.2. 언어 패치
7.3. 모드
7.3.1. 리소스 교체 관련
7.3.2. 게임 플레이 관련
7.3.3. 기타
8. 알려진 문제점
8.1. thcrap
8.2. lang_ko
9. 기타
10. 외부 링크
11. 관련 문서


1. 개요[편집]


thcrap은 동방 프로젝트 게임에 적용할 수 있는 언어 패치/모딩 툴이다. 간단히 말해서 동방 프로젝트의 정규작과 외전작들을 한국어를 포함한 다양한 언어로 즐길 수 있게 해주는 프로그램. 게임에 재미를 더해주는 모드를 적용시킬 수도 있다.

2. 탄생 계기[편집]


프로젝트는 프랑스인 Brliron과 독일인 NamelessLegacy가 주축이 돼서 2013년쯤 시작됐다. 이들은 소개(#1#2)와 깃허브 기여 목록에서 알 수 있듯이 로우 레벨 프로그래밍, 리버스 엔지니어링, 파일 구조 분석까지 다룰 줄 아는 능력자들이다.

thcrap의 탄생 계기는 위키 번역과 다른 언어 패치 작업과정에서 기인한다. 예를 들어 동방위키 영문판의 경우, 대사 번역물은 항상 최신 상태가 유지되고 틀린 부분이 있으면 일본어에 더 능숙한 자가 나타나 올바르게 수정할 여지가 있다. 하지만 게임 패치는 어떤가? 제작자가 한 번 배포하고 나면 그냥 그걸로 끝이다. 오류를 고친 수정본을 배포하는 것 역시 한계가 있다.

또한 어떤 언어 A 패치를 만드는 과정을 생각해보자. A 패치를 만들기 위해선 데이터를 분해하고 텍스트와 이미지를 번역하고, 모든 번역물을 다시 결합하여 실제 게임에서 잘 적용되는지 검수과정을 거치는 등 수많은 노력이 필요하다. 그런데 이 힘든 과정을 거친 다음엔, 또 다른 언어 B 사용자가 패치를 만들고자 한다면 위 과정을 그대로 반복해야 하는 어려움이 따른다. 실질적으로 다른 부분은 데이터를 B로 번역하는 것뿐인데도 상당히 중복되는 작업이 발생하는 것이다. 이러한 문제들을 해결하기 위해 Touhou Patch Center와 thcrap이 제작되었다.


3. 특징[편집]


  • 다국어를 지원한다.
thcrap이 가장 내세우는 기능이다. 메인 페이지만 봐도 수많은 언어들을 지원하며 추가로 요청할 수도 있다.

  • 게임의 원본을 유지한다.
dll을 인젝션하는 방식이기 때문에 실행파일(exe)이나 원본 데이터를 변경하지 않으며 스코어 파일에도 문제가 없다. 때문에 원본 폴더에 다른 패치 방식의 로더나 패치 파일 등을 지저분하게 놓을 필요없이 깔끔하게 유지할 수 있다.

  • 개발자와 번역자가 분리되어 있다.
개발자는 오로지 개발과 버그 수정에만 힘을 쓴다. 그 외 번역이나 번역물 결과 검수는 패치 센터와 커뮤니티에서 수많은 사용자가 참여하여 이루어진다. 이로 인해 개발자가 바로 작업에 착수한다면 상당히 빠른 속도로 패치를 제작할 수 있다. 예를 들어 비봉 나이트메어 다이어리는 발매된 지 이틀만에 기술적 지원이 완료되었고 같은 날에 영어 패치가 완성되었다.

  • 위키 시스템으로 누구나 참여할 수 있으며, 업데이트를 통해 최신 상태를 유지한다.
이로 인해 thcrap을 사용한 번역 방식은 항상 더 개선될 여지가 있다. 다만 반달 역시 무시할 순 없는데 이에 대한 대책은 여기를 참고.

  • 여러 개의 패치를 중첩하여 동시에 적용할 수 있다.
예를 들어 한국어 패치를 적용하는 경우라면 'base_tsa', 'base_tasofro', 'script_latin' 패치 위에 'lang_ko' 패치가 적용되는 식이다. 여기에 추가로 alphes 그림체 패치나 보스 러쉬 패치를 적용하는 등 자유자재로 사용할 수가 있다.

  • 모드 제작에 유용하다.
thcrap은 번역에 관련된 파일뿐만 아니라 다른 데이터 역시 교체하여 적용할 수 있기 때문에 수많은 모드들이 나와 있다.

  • BGM을 변경할 수 있다.
18년 12월 3일자로 BGM 모딩 기능이 추가되었다. 적용 방법은 원문이나 한국어 설명을 참고. 이를 이용해 어레인지 음악을 넣거나 홍마향, 요요몽, 영야초의 미디 BGM을 ZUN이 사용하던 SC-88 Pro로 재생한 음으로 바꿔 들을 수도 있다. (Splashman's BGM patch)

  • V패치와 같이 적용할 수 있다.
thcrap_configure.exe를 이용하여 한글화후 games.js를 메모장 등 텍스트 에디터를 통해 열어 게임 파일 경로를 ~/게임.exe에서 ~/vpatch.exe로 수정하면 적용된다. 동방홍마향의 경우 dll 파일 교체가 필요한데 이는 문제점 문단에서 후술.

  • 게임 내 버그 수정
일부 작품에 있는 중대한 버그를 수정하는 기능이 있다.
  • 동방천공장: 스테이지 5의 스펠 프랙티스에서 사토노를 먼저 격파할 때 발생하는 버그를 고친다.(anm_leak)
  • 비봉 나이트메어 다이어리: 악몽 화요일-5에서 에이린&신묘마루가 쓰는 스펠카드명을 올바르게 출력한다.
  • 동방귀형수(체험판): 우루미와 쿠타카의 스펠카드가 바뀌어 출력되는 버그를 고친다.
  • 이 외에 일부 리플레이 버그도 해결되는 것으로 보인다.

  • 홍마향과 요요몽에서 캐릭터 이름과 이명을 단순한 텍스트 형태가 아니라 이미지로 표시할 수 있다.
이는 원래 영야초 이후에나 사용되는 방식인데 패치를 통해 개선한 것. 적용 이미지 #1, #2

  • 주석 표시 기능
19년 3월 23일자로 주석 기능이 추가되었다. 위키에서 {{Tlnote|주석내용}}으로 표기한 주석을 출력할 수 있다. 적용 이미지
주석은 게임 내 대사뿐만 아니라 스펠카드, 뮤직룸 코멘트 및 엔딩 대사에도 붙이는 것이 가능하다. 뮤직룸 코멘트의 주석은 화면을 벗어나도 잠시 글자가 남아있는 버그가 있다. 스펠 카드의 주석은 스펠 카드 리절트 화면에서 취득한 횟수 숫자가 안 보이는 문제가 있다.
그리고 슈팅게임 계열에만 적용 가능하고 격투 게임은 아직 지원하지 않는다.

  • 2022년 8월 업데이트 이후 thcrap 적용 시 스크린샷을 찍을 경우 스크린샷의 확장자가 기존의 bmp에서 png로 변경되었다. 또, 기존에 스크린샷 기능을 지원하지 않았던 홍마향과 요요몽에서도 영야초 이후와 동일하게 스크린샷을 찍을 수 있게 되었다.

개발자가 생각하는 thcrap의 주요 4가지 특징[1]


4. 작동 방식[편집]


패치 자료

패치 서버

사용자(thcrap)
동방 패치 센터
https://www.thpatch.net

메인 패치 서버
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자막체를 사용한다.


6.1. 번역이 완료된 작품[편집]


슈팅게임 전부 및 심기루 이후 격투게임을 포함한다.



6.2. 부분적으로 완료된 작품[편집]


  • TH10.5 동방비상천
  • TH12.3 동방비상천칙
    • 스토리, 엔딩, 이미지 등 거의 모든 항목은 번역됐지만 스펠카드 코멘트만 아직 지원되지 않는다.
  • TH17.5 동방강욕이문
    • 대부분의 대사와 이미지가 번역되었지만 일부 대사와 이미지가 출력되지 않는다.

7. 패치 및 모드들[편집]



7.1. 기본 패치[편집]


이 패치들은 thcrap을 적용하기 위한 핵심 해킹 코드와 breakpoint들을 포함하고 있기 때문에 거의 모든 패치에 필수적이다. 이게 없으면 그냥 원본을 실행하는 것과 다름이 없는 셈.

  • base_tsa: 상하이 앨리스 환악단이 제작한 슈팅 게임을 지원하기 위한 패치.
  • base_tasofro: 황혼 프론티어가 제작한 격투 게임을 지원하기 위한 패치.
  • script_latin: 라틴 문자를 사용하는 언어를 위한 패치. 보통 서양권 언어는 번역하면 길이가 길어지기 때문에[7] 폰트 크기를 줄이고 출력 위치를 조정하는 등의 역할을 한다. 그 외에도 심기루~빙의화의 대사와 말풍선을 가로로 바꿔주는 중요한 기능이 있다.


7.2. 언어 패치[편집]



이 외에도 다양한 언어 패치들이 있다.
  • lang_en: 영어 패치.
    • lang_en-gb: 영국식 영어 패치. lang_en 패치가 미국식 영어다 보니 lang_en을 베이스로 미국식 영어와 영국식 영어에 차이가 있는 부분만 따로 수정하는 식.
  • lang_en-4kids: 어린이를 위한(...) 영어 패치. 창씨개명은 기본이고[8], 그림도 유치한 것으로 바뀐다[9]. 그럼에도 세부설정이 의외로 충실한게 함정. 감주전 이후 번역이 끊겼지만 홍룡동까지 등장하는 캐릭터의 이름은 꾸준히 개명되고 있다.
  • lang_en-google: 구글 번역기 영어.(...)
  • lang_ja: 일본어.왜 있는 거야? 사실 thpatch의 번역 방식은 원문 페이지를 먼저 만들어놓고 그에 대한 번역 페이지를 채워나가는 식이다. 때문에 일본어 데이터도 패치 서버에 예외없이 올라갈 뿐이다.
  • lang_cue (Scoring cues): 일부 텍스트를 lllllllllllllllllllllllll(...)로 바꿔버린다.

이 외에 클링온어, 로지반, 도기 보나 등의 인공어로도 패치가 개발되고 있다.


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/사용자/패치이름' 으로 들어가봐야 알 수 있다.


7.3.1. 리소스 교체 관련[편집]



  • Braviretex: 리텍스처 패치. 몇몇 스프라이트와 효과음이 바뀐다. 다만 영어로만 적용되기 때문에 영어 이외의 다른 언어로 할 거면 하지 않는 것을 추천.

  • bgm_sc88pro: 위에서 언급한 미디음 패치.


  • real_bullet_size: 피탄 판정에 맞게 탄 크기를 줄인다. 적용 이미지

  • mima: 미마를 볼 수 있다. 요악단의 역사를 소지하고 있는 팬들에게는 그다지 중요하지 않은 패치일 수도 있다.

  • untanned_cirno: 천공장의 치르노가 멀쩡하게 나온다.


  • visuals: 천공장의 계절 아이템의 투명도를 증가시키고, 귀형수에서 폭주 로어링 모드일 때 샷을 덜 화려하게 바꾸어 보기 편하게 해준다.

  • ufo_vivid: 성련선의 벤토라 색약패치. UFO들을 좀 더 분명하게 알아볼 수 있다. 출처

  • bottom_enemy: 하단의 "enemy" 문구를 지령전 이전 스타일처럼 성련선 이후 작품에도 표시한다. Enemy의 폰트는 지령전과 동일.

  • Undefined_Fantastic_Emoji: 성련선의 그래픽을 죄다 이모지로 바꿔버린다. #


  • EoSD_Retexture: 홍마향 리텍스처 패치의 thcrap 이식 버전. 단 리소스가 구 영문패치 기준으로 적용되어 있다.

  • le_sanae: 감주전의 거의 모든 텍스처를 사나에 얼굴로 바꾼다.(...) #

7.3.2. 게임 플레이 관련[편집]


  • BossRush: 필드전을 생략하고 중보스와 보스만 상대할 수 있다.

  • 0power: 파워를 0으로 고정하고 아이템을 먹어도 올라가지 않는다. 마조히스트를 위한 패치.

  • transparent_seasen_items - 천공장 계절 아이템을 투명하게 만든다.

  • th14sanae: 휘침성 레이무 B를 감주전 사나에로 바꾼다. 적용 영상

  • th15sakuya: 감주전 레이센을 휘침성 사쿠야 A로 바꾼다. 다만 칼날에 감속 효과는 없고 그냥 유도탄이다. 적용 영상

  • th16sanae: 천공장 마리사를 감주전 사나에로 바꾼다. 적용 영상

  • LoDDK: 감주전을 실행하면 휘침성과 감주전 보스가 같이 나오는 매우 끔찍한혼종 패치. 본편은 노멀 난이도만 되어도 루나틱을 상회하는 미친 난이도를 보여준다. 이지 난이도 영상
엑스트라에서 왼쪽을 선택하면 원본 그대로 재현한 모드가 되고 가운데는 클리어가 가능하게 난이도를 조정한 밸런스 모드다. 오른쪽은 지뢰찾기할 수 있다.(...)

  • th16nonprac: 천공장 스펠 프랙티스에서 스펠이 아니라 통상 패턴을 연습할 수 있다.



  • th16mystia: 치르노를 선택하면 미스티아처럼 시야가 좁아진 채 플레이하게 된다.(...) 적용 이미지

  • th165lolk: 비봉 나이트메어 다이어리에서 감주전 루나틱을 플레이할 수 있게 된다.세상에 해당 스테이지는 다음과 같다.
    • 월요일 1 / 2 - 스테이지 1 / 보스
    • 화요일 1 / 2 - 스테이지 2 / 보스
    • 수요일 2 / 3 - 스테이지 3 / 보스
    • 목요일 1 / 2 - 스테이지 4 / 보스
    • 금요일 1 / 2 - 스테이지 5 / 보스
    • 뒷 금요일 1 / 2 - 스테이지 6 / 보스

  • thanos: ECL[10] 명령문의 50%를 랜덤으로 날려버려 적의 패턴이 엉망진창이 된다.(...) https://youtu.be/dp1y_QcI-7U?t=5m6s
적어도 이미 정해진 패턴에서 탄이 랜덤으로 변하는 것을 예측이라도 할 수 있는 RNG 패치와는 달리, 탄이 생성조차 안 되거나 적의 움직임마저 건너뛰어버리고, 심지어 화면 밖에서 생성된 자코가 화면 안으로 들어오지도 않는 등 진정한 의미의 랜덤패치일지도 모른다.

  • th15gapping: 감주전에서 화면 끝으로 다가가면 반대편으로 넘어갈 수 있다.

  • th15slippery: 플레이어의 움직임이 마치 얼음판 위에서 미끄러지는 것처럼 관성이 적용된다.



  • ultra-fast: 귀형수에서 스테이지의 진행 상황을 2배 빠르게 한다. 게임의 시간 자체를 빠르게 한다는 것이 아니라, 등장하는 적의 타이밍이나 탄환 발사 속도 등의 스크립트 진행을 빠르게 한다. 때문에 필드 BGM이 중간도 가기 전에 보스를 마주하게 된다.(...)

  • DIO: 귀형수에서 C키를 누르면 약 3초 동안 시간을 멈출 수 있다. 문제는 귀형수용 사쿠야 패치가 없다는 것이다.



  • th08_swapping: 플레이어 기체쌍을 섞어놓았다. 각각 레이무-마리사, 사쿠야-앨리스(...), 요우무-레밀리아, 유카리-유유코. 다만 요우무, 유카리의 샷 타입은 완벽히 작동하진 않는다.

  • 8options: 지령전에서 마리사-파츄리를 제외한 모든 기체가 파워를 8까지 올릴 수 있다.


  • continue: 풍지성의 컨티뉴 방식(게임 오버된 스테이지의 처음부터 재시작)을 홍요영과 신령묘 이후의 방식(게임 오버된 그 자리에서 재시작)으로 바꾼다. 단 컨티뉴 후 리플레이를 저장하면 리플레이가 정상적으로 작동하지 않는다.



7.3.3. 기타[편집]


  • skipgame: 모든 전투장면을 넘기고 대사만 확인해볼 수 있다. 주로 패치 결과를 검수할 때 쓰인다.

  • instant_ending: 바로 엔딩 장면으로 넘어간다. 역시 검수과정에 주로 쓰인다.

  • cheat: 무적, 오토 피탄 봄, 무한 봄 등등이 있다. 자세한 설명은 이 곳을 참고.


8. 알려진 문제점[편집]


깃허브 이슈 목록

이슈 목록을 보면 알겠지만 비상천/칙의 버그가 상당히 많다. 이 문제들을 해결하고 나서야 췌몽상을 지원할 수 있을 것으로 보인다.


8.1. thcrap[편집]


  • 빙의화
    • 대사 텍스트 위치와 말풍선이 맞지 않는다.
    • 마미조 엔딩과 레이센 엔딩에서 마지막 대사 하나가 출력되지 않는다. 게다가 레이센 엔딩은 이미지가 텍스트보다 한 단계 먼저 넘어간다.
  • 심기루
  • 비상천 / 비상천칙
    • 불안정해서 종종 튕기는 경우가 있다.
    • 스펠 카드 코멘트 번역을 지원하지 않는다.
    • 윈도우 모드로 실행시 제목 번역을 지원하지 않는다.
    • 비상천칙에서 대화 도중 '戦闘再開処理' 라는 시스템 관련 문자열이 표시되는 증상이 나타난다.
  • 췌몽상
    • 아직 지원하지 않음.


8.2. lang_ko[편집]


이전에 제작된 요요몽 패치, 영야초 패치와 호환되지 않는 부분이 있다. 바로 스코어 파일 문제인데, scorek.dat을 그냥 score.dat으로 바꾸고 플레이하면 스펠카드가 나올 때 그 스펠카드의 획득 기록이 초기화 되어 버린다. thcrap은 반드시 원본에만 적용할 것.


9. 기타[편집]


문자열을 UTF-8래핑하는 기능이 있기 때문에 이를 이용해 앱로캘이 필요한 동방이 아닌 다른 게임을 구동하는 데 쓰는 사례도 있다.

패치 147개(...)를 한꺼번에 적용시킨 영상이 있다. 다만 정말로 모든 패치가 다 적용되는 게 아니라 겹치는 파일이나 속성은 리스트 중에서 가장 뒤에 있는 게 최종적으로 선택된다.

약자가 영 좋지 않다. crap에는 이란 뜻이 있는데, 즉 똥퍼가 되어버린다(...).

10. 외부 링크[편집]




11. 관련 문서[편집]




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-06 14:15:06에 나무위키 thcrap 문서에서 가져왔습니다.

[1] 이미지: 파일:thcrap_refer1.png[2] 이미지: 파일:thcrap_refer2.png[3] 대화 전문[4] 정확히는 기존 패치 자료를 옮긴 것이다. 때문에 이미지 쪽에서는 휘침성 6스테이지 같은 기존의 오역이 아직도 남아있으며, 일부 리텍스처 패치 위에 사용하면 텍스처 충돌이 일어난다.[5] 스팀판은 아직 튕긴다.[6] custom.exe는 아직 지원하지 않는다.[7] 한 예로, 요우무의 축취검 "무위무책의 명벌"은 이렇게 나온다.(...)[8] 예를 들어 레이무는 Rachel Heartway, 마리사는 Melissa McDonald 이런 식[9] 예를 들어 사쿠야의 나이프는 야구공으로 컨셉이 바뀌었다.[10] 게임 내 등장하는 적의 행동을 기술하는 스크립트 파일