한글패치 관련 짧은 글

유니티 게임 dll파일 내 대사 수정 (muck)

눈백로 2021. 7. 7. 14:15

예시 게임

:Muck (https://store.steampowered.com/app/1625450/Muck/)

 

필요 프로그램 / 자료

ILSpy 6.2.1 (https://github.com/icsharpcode/ILSpy/releases)

Reflexil 2.5 (https://github.com/sailro/Reflexil/releases)

 

 

Mono 방식의 게임엔 바로 적용되나, il2cpp방식의 게임은 여러가지 불편한 점이 있다.

본문에선 Mono방식의 게임을 다루도록 하겠다.

 

-------

간단요약

1.  ilspy, reflexil 다운로드 후 실행

2.  코드 추출 후 대사 검색

3.  reflexil 플러그인을 이용해 대사 수정 후 패치된 dll파일 저장/교체

 

 

 

 

게임에서 나오는 (Press "E" to pickup 부분이 monobehaviour 파일을 통한 수정으로도 변화가 없었다.

그러므로 dll 파일을 뜯어보도록 하자.

 

 

 

reflexil.for.ILSpy.2.5.AIO.bin.zip과 ILSpy_binaries_6.2.1.6137.zip를 다운받아서 한 폴더에 압축을 푼다.

ILSpy.exe를 실행한다.

 

 

 

File -> Open -> 한글화하고자 하는 게임 폴더 -> {이름}_data -> Managed를 들어가서

Assembly-CSharp.dll을 선택한다.

 

불러온 다음, Save Code를 눌러 폴더에 원본 소스들을 저장한다. 이는 검색을 편하게 하기 위해서다.

다른 dll파일의 경우, 이름만 바꿔서 생각하면 된다.

 

 

 

검색을 편리하게 하기 위해 Notepad++를 실행 후

찾기-> 파일에서 찾기 -> 아까 세이브한 폴더 지정 후 to pickup을 검색한다.

 

 

 

pickupinteract.cs 파일에 대사가 있다고 한다.

ilspy로 - 라고 쓰여져 있는 부분을 열어보면, 뭐가 엄청 나오는데 쭉 내리다 보면 PickupInteract라는 항목이 보인다.

 

 

 

ilspy 상단 View -> Reflexil v2.5를 클릭하면 프로그램 하단부에 Reflexil이 뜨게 된다.

변경하고자 하는 부분을 클릭 후 우클릭하면 Edit... 메뉴가 뜨는데, 누른 다음 수정을 하고 update를 누른다.

이후 제대로 변경되었는지 확인한다.

 

 

 

다시 좌측 트리 제일 윗부분으로 스크롤을 올린 다음, Assembly-CSharp을 우클릭한 후 Save as...를 누른다.

원본 파일을 백업하고, Assembly-CSharp.Patched.dll를 Assembly-CSharp.dll으로 바꾼 후 게임을 실행해 보자.

 

 

 

지금 보니까 뒤에 큰따옴표를 잘못 썼는데, 어쨌건 한글화가 완료되었다.

나머지도 비슷한 방식으로 처리할 수 있다.