XUnity.AutoTranslator에는 텍스쳐 번역 기능이 있다.
텍스쳐에 있는 글자를 번역해주는 것은 아니지만,
게임의 텍스쳐/스프라이트를 png로 추출/대체할 수 있다.
https://github.com/bbepis/XUnity.AutoTranslator#texture-translation
설정은 대충 링크한 부분을 읽어보면서 하면 된다.
내 경우 텍스트 번역을 방지하고, 텍스쳐 대체용으로 사용해야 하기 때문에
번역 [Service]-Endpoint를 공란으로 냅두고, [TextFrameworks]의 하위항목을 모두 False로 바꾸었다.
이렇게 설정하면 텍스트 후킹 및 endpoint가 없어지기에 텍스트 번역이 아예 동작하지 않는다.
Texture 부분도 아래와 같이 설정했다.
[Texture]
TextureDirectory=Translation\Texture
EnableTextureTranslation=True
EnableTextureDumping=True
EnableTextureToggling=False
EnableTextureScanOnSceneLoad=True
EnableSpriteRendererHooking=True
LoadUnmodifiedTextures=False
DetectDuplicateTextureNames=False
DuplicateTextureNames=
EnableLegacyTextureLoading=False
TextureHashGenerationStrategy=FromImageName
CacheTexturesInMemory=True
EnableSpriteHooking=True
이제 게임을 실행해 보면, 위 캡처같이 게임에서 로드된 텍스쳐/스프라이트가 추출되었음을 확인 가능하다.
파일명 | sactx-0-256x512-DXT5-MapBattlePre_En-b272620d [CF40D254B5-DF0CFE5FEE].png | |
파일명 앞부분 | sactx-0-256x512-DXT5-MapBattlePre_En-b272620d | 텍스쳐 이름 |
파일명 뒷부분 (1번째 해시값) | CF40D254B5 | 원본 파일명에 대한 SHA1 해시값 10자리 (sactx-0-256x512-DXT5-MapBattlePre_En-b272620d) |
파일명 뒷부분 (2번째 해시값) | DF0CFE5FEE | 이미지 파일에 대한 SHA1 해시값 10자리 |
* Autotranslator 링크에 들어가 스크롤을 조금만 내리면 관련 내용이 나온다.
이는 간단하게 검증할 수 있다. 온라인 해시값 생성 사이트에서 확인해도 좋고, 파이썬으로 해도 좋다.
이미지 이름에 대한 SHA1 해시값 10자리와, 이미지 파일에 대한 SHA1 해시값 10자리가 일치하는 것을 볼 수 있다.
하지만 이러한 방식으로 하나하나 해시값을 추출하기엔 무리가 있다.
해당 스프라이트가 사용되는 부분을 직접 플레이해야 하기 때문이다.
또한, 수십~수백개 파일을 모두 하나하나 계산하고 있을 수도 없는 노릇이다.
그래서 간단하게 SHA1 해시값을 계산하여 파일 이름을 바꿔주는 프로그램을 짰다.
다운로드)
https://github.com/snowyegret98/TextureRenamer_for_Autotranslator/releases/download/0.0.2/hash.exe
해시값을 계산하고, 각각 10자리씩 자르고, OUTPUT 폴더에 파일명 형식에 맞게 복사해주는 프로그램이다.
위 검증부분의 코드를 이용해서 만들었다.
사용법)
1. input 폴더에 이미지를 원본 이름으로 넣는다.
* 위 경우 AssetStudio로 추출했다.
* 만약 "105 #28988.png"처럼 이미지 이름 뒤에 #번호가 붙을 경우, 자동으로 번호를 삭제하고 이름을 변경해준다.
* 어차피 파일 기반으로 해시값 계산을 한번 하기에, 문제가 생기진 않는다고 보았다.
* 참고로 유니티 에셋 내에 중복되는 파일명이 있을 경우, AssetStudio에서 구분을 위해 {이름 #번호} 형식으로 추출한다.
2. output 폴더에 들어가 보면 파일명이 정상적으로 변경되었음을 알 수 있다.
* output폴더가 없을 경우 자동으로 생성한 다음 작업을 수행한다.
첫번째 해시의 경우 파일명 기반이라 꼭 틀림없어야 하지만,
두번째 해시의 경우 파일 자체에 대한 해시값이기에 해시값이 틀려도 괜찮은 것 같다.
AutoTranslator에서 추출된 파일과 AssetStudio로 추출한 파일의 용량이 다르기에 뒷부분 해시값이 달랐는데
실제로 적용시켜 보니 정상적으로 적용되었다.
정리)
Autotranslator에서 추출된 이미지명
sactx-0-256x512-DXT5-MapBattlePre_En-b272620d [CF40D254B5-E6ED69B28F].png
AssetStudio에서 추출된 이미지명
sactx-0-256x512-DXT5-MapBattlePre_En-b272620d.png
AssetStudio에서 추출된 이미지 해시값 계산
sactx-0-256x512-DXT5-MapBattlePre_En-b272620d [CF40D254B5-8CCC98A429].png
- 뒷부분 해시값이 다르지만 앞부분이 동일하므로 정상적용 되는 것을 확인할 수 있었음
- 따라서, AssetStudio와 같은 "파일에서 직접 이미지를 추출"하는 툴을 가지고 작업하면 직접 플레이하면서 추출하는 것에 비하여 훨씬 작업이 수월할 것임
'한글패치 관련 짧은 글들' 카테고리의 다른 글
UABEA로 유니티 게임 폰트 교체 (일반 폰트) (5) | 2022.02.24 |
---|---|
XUnity.AutoTranslator rich text tags 사용하기 (0) | 2022.02.09 |
유니티 게임 한글화 - UnityExplorer로 SDF폰트 이름 찾기 (0) | 2021.12.23 |
유니티 게임 한글화 - 폰트 쳐짐/올라감/너무 큰 경우 해결 (1) | 2021.12.19 |
멜론로더 포함하여 배포시 유의점 (il2cpp 게임) (2) | 2021.12.19 |