[보드게임]/[정보]

드래곤 이클립스 컴패니언 앱 번역 패치 작업기

쭌쭌77 2026. 6. 12. 22:30
반응형

작년 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

 

반응형