XUnity.AutoTranslator 텍스쳐 번역 조금 쉽게 하기

2022. 1. 9. 05:25·한글패치 관련 짧은 글들

XUnity.AutoTranslator에는 텍스쳐 번역 기능이 있다.

텍스쳐에 있는 글자를 번역해주는 것은 아니지만,

게임의 텍스쳐/스프라이트를 png로 추출/대체할 수 있다.

 

https://github.com/bbepis/XUnity.AutoTranslator#texture-translation

 

GitHub - bbepis/XUnity.AutoTranslator

Contribute to bbepis/XUnity.AutoTranslator development by creating an account on GitHub.

github.com

 

설정은 대충 링크한 부분을 읽어보면서 하면 된다.

내 경우 텍스트 번역을 방지하고, 텍스쳐 대체용으로 사용해야 하기 때문에

번역 [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와 같은 "파일에서 직접 이미지를 추출"하는 툴을 가지고 작업하면 직접 플레이하면서 추출하는 것에 비하여 훨씬 작업이 수월할 것임

 

 

 

<테스트용 이미지>

 

 

<실제 적용 모습>

저작자표시 (새창열림)

'한글패치 관련 짧은 글들' 카테고리의 다른 글

cpp2il작업  (0) 2022.02.19
XUnity.AutoTranslator rich text tags 사용하기  (0) 2022.02.09
유니티 게임 한글화 - UnityExplorer로 SDF폰트 이름 찾기  (0) 2021.12.23
유니티 게임 한글화 - 폰트 쳐짐/올라감/너무 큰 경우 해결  (1) 2021.12.19
멜론로더 포함하여 배포시 유의점 (il2cpp 게임)  (5) 2021.12.19
'한글패치 관련 짧은 글들' 카테고리의 다른 글
  • cpp2il작업
  • XUnity.AutoTranslator rich text tags 사용하기
  • 유니티 게임 한글화 - UnityExplorer로 SDF폰트 이름 찾기
  • 유니티 게임 한글화 - 폰트 쳐짐/올라감/너무 큰 경우 해결
Snowyegret
Snowyegret
기록용 블로그입니다.
  • Snowyegret
    Snowyegret
    Snowyegret
  • 공지사항

    • 개인 후원/기부 안내
    • 블로그 글 재공개 안내
    • 문의: 디스코드 snowyegret12
    • 저작권 및 라이선스 안내
  • 링크

    • 블로그 메인
    • 방명록/문의사항
    • Github Repositories
    • Github Gists
    • 분류 전체보기 (71)
      • 늑대와 향신료 VR2 한글패치 (1)
      • Shephy 카드 설명 한국어 텍스쳐 모드 (1)
      • 한글패치 관련 짧은 글들 (32)
      • 한글화 관련 자작 프로그램 (4)
      • 한글화 분석 (작업X) (4)
      • python snippets (4)
      • 게임 (3)
      • IT (19)
      • AI (1)
      • TODO (1)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
Snowyegret
XUnity.AutoTranslator 텍스쳐 번역 조금 쉽게 하기
상단으로

티스토리툴바