한글패치 관련 짧은 글 18

UABEA로 유니티 게임 폰트 교체 (일반 폰트)

이메일로 유니티 게임의 일반 폰트 교체 문의가 와서 작성한다. SDF 폰트는 교체를 할 수 있으나, 일반 폰트는 교체하기가 어렵다고 한다. 게임의 버전이 높아 UnityEX를 통한 교체가 어렵다고 한다. 하지만 UnityEX를 사용하지 않아도 UABEA만으로 간단하게 폰트 교체를 할 수 있다. 일단 부딪혀보고, 경험상 먹혔던 방법을 게시글로 작성하는 것이라 불필요한 과정이 많이 있을 수 있다. 예시 게임) Squirm 게임의 폰트이다. SquimFont 및 EMULOGIC이며, resources.assets에 들어있다. UABEA를 통해 dump를 떠보면 위 사진처럼 나온다. 일단 덮어두고 폰트용 게임을 빌드해보자. 폰트를 Project view에 드랍한다. Add Component 클릭 후 Mesh -..

XUnity.AutoTranslator rich text tags 사용하기

원문: https://github.com/bbepis/XUnity.AutoTranslator/issues/260 유니티 게임을 AutoTranslator로 번역할 때, 태그가 붙어 나오는 것을 볼 수 있다. 대략 이런 식으로 나온다. 원래 or 처럼 사용되어야 하지만 Autotranslator 특성상 "="가 원문/번역문의 구분자로 사용되므로 "=" 대신 "%3D"를 사용한다. URL 인코딩하면 "="가 "%3D"로 변한다. 왜 이 아닌진 모르겠다. 암튼 저렇게 나오니까 똑같이 쓰면 된다. 수동 번역의 경우 MonoBehaviour 파일을 통해 전체적인 폰트 크기 제어가 가능하나, 자동 번역의 경우 대부분 Fallback/Override Font를 적용시키는 것으로 알고 있다. 그래서 수정하기 좀 껄끄러..

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

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를 공..

UnityExplorer로 SDF폰트 이름 찾기

폰트 폴백 모드를 제작하거나, SDF폰트를 직접 교체해야 할 때 원본 폰트의 이름을 알아두면 작업이 훨씬 편해진다. 모든 폰트를 추출해서 하나 하나 대조하는 과정을 스킵 가능하기 때문이다. 필요 프로그램: 모드로더, UnityExplorer 우선 게임이 Mono인지, il2cpp인지 구분을 해야 한다. 모드로더: Mono 게임의 경우 - BepInEx 5 (https://github.com/BepInEx/BepInEx/releases) - BepInEx 6 (https://builds.bepis.io/projects/bepinex_be) * BepInEx의 경우, 컴퓨터가 32비트인지 64비트인지 구분해서 다운로드 해야 한다. - MelonLoader 최신버전 (https://github.com/Lava..

유니티 한글화 중 폰트 쳐짐/올라감/너무 큰 경우 해결

예시 게임) MUCK 무료겜이라 만만한게 muck이다. 한글화를 진행하다 보면 위 그림처럼 위-아래가 엇나가 있는 경우가 발생한다. 이럴 경우 해당 폰트의 MonoBehaviour 파일을 수정하는 것으로 해결할 수 있다. 이 게임은 메뉴 표기를 위해 Roboto-Bold 폰트를 사용하고 있다. 해당 MB파일을 추출한 후 0 FaceInfo m_FaceInfo 하위 항목인 m_AscentLine을 수정해주자. 참고로, 글자를 내리고 싶으면 수치를 올려야 하고, 글자를 올리고 싶다면 수치를 내려야 한다. 살짝 높긴 하지만 제대로 복구된 것을 알 수 있다. 그럼 이제 폰트 크기 조절을 해 보자. 마찬가지로 아까 추출한 MB파일에서 작업이 이루어진다. m_FaceInfo의 m_PointSize의 수치를 조절하자..

멜론로더 포함하여 배포시 유의점 (il2cpp 게임)

절대 게임 폴더에서 모드와 멜론로더 관련 파일들을 그대로 압축해서 올리면 안된다. 게임 버전이 올라가거나 내려가면(복돌/롤백의 경우) 문제가 생길 수 있다. 아마 cpp2il 하는 과정에서 뭔가 문제가 있거나, 내가 알지 못하는 어떤 문제가 생기는 것 같다. 예시 게임) 귀곡팔황(Tale of immortal) 우선 해당 게임은 한글화를 위해 2개의 모드를 사용한다. 한글 출력용 KRFONT 모드, 덤프 및 한국어 교체용 Villain 모드. 이 중 Villain 모드는 Unity.2D.IK.Runtime.dll과 dnlib.dll을 사용한다. 최신 Melonloader에서 KRFONT에서 사용하는 il2cpp CoRoutine이 적용되는데, 하지만 최신 Melonloader에선 Unity.2D.IK.R..

유니티 IL2CPP 게임에서 DLL 생성 (윈도우, 안드로이드)

유니티 게임을 빌드할 시 mono방식으로 빌드할 수도, il2cpp방식으로 빌드할 수도 있다. mono방식은 보통 {게임이름}_data\Managed 폴더 안에 dll파일들이 들어 있으며 il2cpp방식은 보통 {게임이름}_data\ 폴더 내부에 il2cpp_data 폴더가 존재한다. 메인 에셋들 한글화 작업시 dll파일들이 있어야 MonoBehaviour 파일이 정상적으로 덤프되는 경우가 많다. 필요한 툴: Il2CppDumper (https://github.com/Perfare/Il2CppDumper) 1. PC의 경우 (예시 - 늑대와 향신료 VR 2) 게임 exe 파일이 있는 곳에 GameAssembly.dll이 있다. 이게 il2cpp binary file이다. {게임이름}_data\ 폴더 내부..

유니티 게임 SDF 폰트 변경 (폴백 폰트 연결의 경우)

유니티 게임의 한글화를 진행하다 보면 한글 SDF폰트를 넣지 않았음에도 불구하고 한글이 출력되는 경우가 있다. 이 경우 대부분 3가지 정도로 요약할 수 있다. - 첫째. 개발사가 추후 한국어 지원을 위해 한글 SDF 폰트를 제작해서 넣어둔 경우 - 둘째. CJK(중국, 일본, 한국어) 지원을 위해 때려박아 버린 경우 - 셋째. ttf/ufnt폰트를 사용하거나, sdf 폰트를 쓰되 ttf 폰트를 폴백으로 잡은 경우 첫번째 혹은 두번째 케이스는 그냥 대사만 번역해도 될 정도겠지만 세번째는 그냥 번역할 경우 일부 한글이 깨지는 증상이 나타나는 경우가 잦다. 또한, 1개월쯤 전에 봤던 게임 몇몇개가 그랬는데, 그 중 하나인 Pathlogic 2를 대상으로 폴백 폰트 연결이 대충 어떤 식으로 되어있으며, 문제를 ..