작년 12월에 드래곤 이클립스 컴패니언 앱을 뜯어보다가 건질게 없어서 스크립트를 API로 긁어서 번역을 진행했었습니다.
좌충우돌 드래곤 이클립스 스토리 번역기
드래곤 이클립스 펀딩도 들어갔겠다, 뭐 미리 해둘것 없나 찾아보고 있던 차에 룰북이 공개되어 있길래 호다닥 초벌번역을 진행했습니다. 드래곤 이클립스(Dragon Eclipse) 룰북 & 퀵시트 번역 자료
hobbyjjun.tistory.com
이미 번역을 완료한터라 까맣게 잊고 지냈었습니다.
그때 당시에는 Codex를 써서 분석해볼 생각을 못했었는데, 요새 제가 잘 활용하고 있기도 해서 Codex를 통해서 APK를 분석해봤습니다.
오쓰스원과는 다르게 Unity앱이라... Unity 지식이 없었기에 분석을 포기했었는데
이번에 Codex를 사용하니 완벽하게 분석이 됩니다 ㅋㅋㅋㅋㅋ
대충 이런식으로 알아서 잘 분석해주고, 실제로 제가 못찾았던 스크립트 원본 파일도 앱 내에 들어있더라구요 ㅋㅋㅋ 뻘짓했음....
```
앱(.xapk / split APK)
├─ base APK
│ ├─ classes.dex ← (있다면) Google Play 라이선스/무결성 보호 코드
│ └─ assets/
│ ├─ Translations/translations.csv ← 모든 UI/스토리 텍스트 (언어별 열)
│ └─ bin/Data/
│ ├─ data.unity3d ← Unity 에셋 번들 (폰트 atlas + TMP FontAsset 들이 여기)
│ └─ Managed/Metadata/global-metadata.dat
└─ config.<abi>.APK ← 네이티브 라이브러리(libil2cpp.so 등)
```
히스토리를 이야기하자면 길지만,,,,
대충 Codex가 지지고 볶고 별짓을 다해도 폰트를 넣고 불러오는 부분에서 막혀서 좌절하고 있었습니다 ㅜㅜ
### 5. 한글 폰트 작업 (진행 중)
#### 5-1. 첫 시도: Dynamic SDF + NotoSansKR TTF ✅ (부분 성공)
- 원본 MB의 `m_AtlasPopulationMode`를 0→1 (Dynamic)
- `m_SourceFontFile` pathID를 80 (LiberationSans Font)으로 설정
- Font 오브젝트의 m_FontData를 NotoSansKR-Regular.ttf로 교체
- **결과**: 한글 렌더링 자체는 성공! 하지만 ~24자 한계 (아틀라스 공간 부족)
#### 5-2. MB 통째 교체 시도 ❌
- Unity 2022.3.62f2에서 FontProject 빌드
- Static SDF (pointSize 20, 1024x1024, 1549자)로 시도
- Dynamic SDF (4096x4096, 빈 테이블)로 시도
- Script PathID, Material PathID, Texture PathID 모두 패치
- **결과**: 모든 경우 실패 (앱 크래시 또는 글자 안 보임)
- **원인**: IL2CPP vs Mono 빌드의 TMP 직렬화 구조 차이
#### 5-3. 아틀라스 크기 패치 시도 ❌
- 89316, 89408 위치의 1024를 4096으로 변경
- 텍스처도 4096x4096으로 교체
- **결과**: 앱 깨짐 (다른 필드까지 깨뜨림)
- 정확한 m_AtlasWidth 오프셋 미확정 (89316 vs 89408)
#### 5-4. Multi Atlas 패치 시도 ❌
- offset 64320: m_IsMultiAtlasTexturesEnabled = 0 → 1
- **결과**: 효과 없음 (런타임에서 미지원 추정)
#### 5-5. Il2CppDumper + TypeTreeGenerator ✅ (도구 준비)
- Il2CppDumper로 DummyDll 56개 생성 완료
- TypeTreeGeneratorAPI로 TMP_FontAsset 260 노드 typetree 생성
- level-1 필드 순서 확인:
```
m_AtlasTextures [81] → m_AtlasTextureIndex [87] →
m_IsMultiAtlasTexturesEnabled [88] → m_ClearDynamicDataOnBuild [89] →
m_UsedGlyphRects [90] → m_FreeGlyphRects [98] →
... → m_AtlasWidth [134] → m_AtlasHeight [135]
```
- UnityPy 연동은 노드 형식 호환 문제로 미완
### 6. 확인된 오프셋 맵 (초기 추정, 아래 TODO에서 정정됨)
> ⚠️ 아래 값은 세션 초중반에 패턴 매칭으로 추정한 것입니다.
> 정확한 오프셋은 "다음 세션 TODO" 섹션의 "확정된 오프셋"을 참조하세요.
### 7. 원본 앱 주요 PathID
친절하게 어느분께서 유니티 앱 한글화 하는 MD 문서를 올려주셔서 적용하니 바로 폰트 문제가 해결되더라구요!!
컴패니언 앱 한글화 가이드 - 부루마불 마이너 갤러리
주말에 컴패니언 앱들 한글화 한거 올렸는데 필요한 부붕이 있는것 같아서 가이드 올려놓음. 세가지 다른 가이드 만들어놓았고, ai 한테 그대로 먹이면 바로 작동할 정도로 작업해 놓았으니 적
gall.dcinside.com
그리고 원본 스크립트 파일도 구한김에 앱에 깔끔하게 포팅하기 위해서 번역도 새로 진행했습니다.
자동화 스크립트 짜놓은걸 잘 활용하고 있긴한데, 이제는 제미나이도 정책이 바뀌어서 API 사용하려면 무조건 돈내야 합니다 ㅜㅜ
2.5-flash 모델 사용해서 드래곤 이클립스 본판과 확장 스토리북 전체 번역하는데 5000원 정도 들었습니다. (시간은 2시간)
영문 보드게임 룰북 번역을 위한 자동화 스크립트
요즈음 AI가 너무나도 좋아져서 신나게 잘 활용하고 있는 중입니다 ㅎㅎ 예전에는 영문 룰북 PDF을 번역하려면 아래와 같은 개 노가다 방법으로 진행했었습니다PDF 룰북을 구한다PDF를 일일히 긁
hobbyjjun.tistory.com
앱에다 포팅해야 되기 때문에 태그도 원본과 똑같이 맞춰서 번역을 진행합니다.
ENTRY_A1_[2][1]_WE_WANT_TO_51B5
<b>“드래곤 가디언즈에 대해 듣고 싶습니다!”</b>
ENTRY_A1_[2][1][1]_GO_TO_SCRI_D5D6
스크립트 A16으로 이동하십시오.
ENTRY_A1_[2][2]_TELL_US_MO_4958
<b>“이클립스에 대해 더 자세히 이야기해 주세요!”</b>
ENTRY_A1_[2][2][1]_GO_TO_SCRI_0613
스크립트 A11로 이동하십시오.
물론 AI 초벌 번역만 믿을 수는 없어서 반드시 검수는 진행해야 합니다.
번역의 어색함은 제가 전수조사를 할 수 는 없어서 간단하게 태그만이라도 원본과 동일하게 들어있는지 체크해 봅니다.
한 200개 정도 안맞는게 있어서 해당부분은 다시 원문과 비교해서 고쳐주는 작업이 필요합니다.
====================================================================================================
1. TAG: ENTRY_A21_[1]_IF_YOU_DON_0902
----------------------------------------------------------------------------------------------------
[ORIGINAL]
If you <b>don’t have Secret 02</b> – <i>Olin doesn’t want to speak with you</i>; go to Script A12.
[KOREAN]
<b>비밀 02</b>가 <b>없다면</b> – <i>Olin은 당신과 이야기하고 싶어 하지 않습니다</i>; Script A12로 이동합니다.
[MODIFIED]
<b>비밀 02가 없다면</b> – <i>Olin은 당신과 이야기하고 싶어 하지 않습니다</i>; Script A12로 이동합니다.
[CHECK MODIFIED]
OK
깔끔하게 원본과 태그까지 맞춰서 번역한 스크립트를 앱에다 넣고 다시 말아주면 완성!
원문은 그대로 English쪽에 넣어두고, 한글 번역본은 Polski에 넣어둡니다.
번역이 이상하면 바로 English로 바꿔서 볼 수 있으니 편리하네요.

폰트까지 깔끔하게 해서 번역되서 나옵니다 ㅎㅎ
진작 이 방법을 알았으면 오쓰스원 플레이할때도 앱을 번역해서 진행하는건데 아쉽네요 ㅜㅜ


선택지 번역도 깔끔하게 잘 나옵니다!
이제 배송받아서 즐기는 일만 남았네요 ㅎㅎ

※ 앱을 제가 임의로 뜯어서 내용물을 고쳐서 리패키징 한거라 번역 앱 공유는 불가능합니다.
다만 첨부의 링크의 MD 파일을 그대로 Codex 한테 먹이면 무리없이 작업이 가능합니다.
PS. 겸사겸사 안드로이드 태블릿도 구매 완!
레노버 샤오신패드 11인치 2025 6GB 글로벌 램 구매기
패드는 주로 아이패드만 쓰고 있었는데,,, 요런 앱 패치 작업은 안드로이드 단말에서 가능해서 적당한 사양의 안드로이드 패드를 찾아보다가 구매하게 됬습니다. 드래곤 이클립스 컴패니언 앱
hobbyjjun.tistory.com
드래곤 이클립스 게임 소개글 입니다
드래곤 이클립스(Dragon Eclipse)는 어떤 게임일까? - 1편 스토리 파트
펀딩을 들어가긴 했는데, 게임이 오려면 거의 1년이 넘게 남아있어서 어떤 게임인지 궁금해서!! 테이블탑 시뮬레이터로 플레이 해봤습니다 ㅎㅎ 마침 친절한 외국분이 창작마당에 스크립트까지
hobbyjjun.tistory.com
드래곤 이클립스(Dragon Eclipse)는 어떤 게임일까? - 2편 전투 파트
스토리 파트에서 이어진 전투 파트입니다. 드래곤 이클립스(Dragon Eclipse)는 어떤 게임일까? - 1편 스토리 파트펀딩을 들어가긴 했는데, 게임이 오려면 거의 1년이 넘게 남아있어서 어떤 게임인지
hobbyjjun.tistory.com
'[보드게임] > [정보]' 카테고리의 다른 글
| 스타크래프트 테이블탑 미니어처 파운더스 에디션 구성품 (0) | 2026.03.17 |
|---|---|
| 정령섬 펀딩(본판과 가지와 발톱 확장) 에라타 스티커 및 교체 카드 수령기 (0) | 2026.02.14 |
| 프라이멀 더 어웨이크닝(Primal : The Awakening) 보드게임 룰북 번역기 (0) | 2026.01.29 |
| 영문 보드게임 룰북 번역을 위한 자동화 스크립트 (0) | 2026.01.29 |
| 올드 킹스 크라운(The Old Kings Crown)은 어떤 게임일까? (0) | 2026.01.27 |