https://mega.nz/file/k0NEiCCL#_7BssQcXcgqCDmlBmJl_VC7r5iCFVqgLvGqWoSC4e6A

------------------------------------------

시글러스 게임엔진 라인 텍스트와 omv 영상파일 분석을 의뢰받았을 때,

그 과정에서 이분이 만든 번역툴을 많이 참조했습니다.

https://gall.dcinside.com/mgallery/board/view/?id=visualarts&no=6080

이쪽에 있는 기존 번역툴도 기능들은 있을 건 다 있는 훌륭한 번역툴이지만,

툴이 제각기 분리된데다 사용방식도 전부 달라서 처음 하는 분들은 헷갈릴 수 있고, 굳이 알 필요 없는 옵션들도 많은데다

무엇보다 한글 텍스트가 겹치는 문제는 해결이 안 됐습니다.

그래서 이참에 꼭 필요한 기능들만 실장한 시글러스 게임엔진 번역툴을 새로 만들어보려고 했는데, 

개인적으로 번역하는 것과 의뢰받은 것도 있고, 회사 일까지 겹쳐서 크게 늦어졌네요...

예시로 든 게임은 '달의 저편에서 만나요'입니다.

------------------------------------------

2023.12.17

ver 1.01

실행 중인 게임에서 키를 추출하는 기능이 추가되었습니다.

'__key.bin' 파일의 키데이터를 다른 실행파일로 이식하는 기능이 추가되었습니다.

-xkey 옵션-j2k 옵션 항목을 참조해주세요.

------------------------------------------

툴 내용물

------------------------------------------

툴 설명

------------------------------------------

번역과정 요약설명

1. key파일 생성

2. Scene.pck 파일 언팩/리팩

3. .scn / .dbs / .dat 파일에서 텍스트 추출/교체

4. 실행파일 수정 : -j2k 옵션으로 한글 출력간격이 정상수정된 실행파일 생성

5. .g00 파일에서 .png 파일 추출/교체

6. .omv 파일에서 .mp4 파일 혹은 이미지 데이터 추출/교체

------------------------------------------

각 기능 사용법에 대한 설명은 다음과 같습니다.



1. -xkey 옵션 : 시글러스 게임엔진 실행파일 경로를 입력하면, 그 실행파일에서 키를 추출해 __key.bin 파일로 기록합니다.

이 상태에서 cmd로 ToolForSiglus -xkey SiglusEngine.exe 라고 입력하면 다음과 같이 뜹니다.

파일을 보면 다음과 같이 __key.bin 파일이 생성됩니다.

그런데 여기서 문제는, 알파롬이 걸려 있거나 다른 프로텍터가 걸리는 등의 이슈로 파일 경로를 입력해서 키값을 얻는 게 불가능할 수 있습니다.

이때는 다음 기능을 쓸 수 있습니다.


1.1. -xmkey 옵션 : 이름에 'SiglusEngine'이 들어간 실행파일이 실행 중일 때, 거기에서 키를 추출해 __key.bin 파일로 기록합니다.

ToolForSiglus -xmkey 라고 입력하면 다음과 같이 출력됩니다.

즉 파일명에 'SiglusEngine' 이 들어가는 실행파일이 실행될 때까지 기다리고 있는거죠.

이제 AlpharomDie든 뭐든 방법을 써가지고 게임을 실행시킵니다.

저는 '달의 저편에서 만나요'를 실행시켰습니다.

그러면 다음과 같이 실행하는 게임에서 키값을 얻어와 __key.bin 파일을 기록합니다.

알파롬 같은 게 걸려있을 때는 이런 식으로 키를 추출해낼 수 있습니다.



2. -u 옵션 : Scene.pck 파일 경로를 입력하면, 그 pck 파일명을 본딴 폴더에 .scn 파일 형태로 데이터를 언팩합니다.

이 상태에서 ToolForSiglus -u Scene.pck 라고 입력하면

이런 식으로 출력되고,

다음과 같이 Scene 폴더가 생성됩니다.

Scene 폴더 내용물은 대략 이렇습니다.



3. -xat 옵션 : 입력한 폴더 내 모든 .scn / .dbs / .dat 파일에서 텍스트를 추출하여 다른 폴더에 기록합니다.

일단 Scene 폴더가 생성되었다면 ToolForSiglus -xat Scene output_scene 을 입력합니다.

맨 뒤의 output_scene은 추출한 텍스트 데이터를 기록할 폴더명으로, 다른 이름으로 바꿔도 상관없습니다.

그러면 이런 식으로 출력되고

마지막에 입력한 output_scene 이름으로 폴더가 생성된 걸 볼 수 있습니다.

폴더를 들어가보면 다음과 같이 텍스트 데이터가 일괄추출되어 있습니다.

텍스트는 다음과 같은 형식으로 되어 있어서, [◆] ~ [◆] 사이의 텍스트를 번역하시면 됩니다.

이와 마찬가지로 .dbs 파일들이 들어있는 폴더에 대해서도 똑같이 수행할 수 있습니다.

다만 텍스트를 추출하려는 .dbs 파일의 인코딩이 utf-16이 아니면 언어코드를 입력받으라고 뜰텐데,

처음에 추출할 때는 보통 일본어에서 추출할 테니 j를 입력하고 엔터를 누르면 문제없이 수행됩니다.

그러면 앞에 [jap] 이 붙어서 추출되는데, 이때 한국어로 번역한 부분에 [jap] 대신 [kor]를 써서 저장하면 됩니다.



4. -rat 옵션 : 입력한 폴더 내 모든 .scn / .dbs / .dat 파일의 텍스트를 다른 폴더에 추출했던 텍스트 데이터로 일괄교체합니다.

추출한 텍스트들을 어느 정도 번역했다면, -xat만 -rat로 바꿔서 ToolForSiglus -rat Scene output_scene 을 입력합니다.

그러면 이런 식으로 쭈욱 뜨며, 이렇게 되면 텍스트 교체가 완료된 겁니다.



5. -p 옵션 : .scn 파일들이 있는 폴더 경로를 입력하면, 그 폴더명을 본따 _new.pck 파일로 데이터를 리팩합니다.

텍스트 교체를 마친 상황에서 ToolForSiglus -p Scene 을 입력하면

다음과 같이 뜨는 걸 볼 수 있습니다.

마찬가지로 Scene_new.pck 파일이 생성된 것도 확인 가능합니다.



6. -j2k 옵션 : 한글간격을 정상적으로 출력하도록 보정된 실행파일을 생성합니다.

그런데 이렇게 생성된 Scene_new.pck 파일을 그대로 가져다 Scene.pck 파일로 이름을 바꾸고 실행시키면 다음과 같은 현상을 볼 수 있습니다.

보다시피 한글 자체 출력은 문제없는데, 간격이 붙어서 나옵니다.

그래서 한글일 때 간격을 보정할 필요가 있습니다.

ToolForSiglus -j2k SiglusEngine.exe 를 입력합니다.

그러면 이렇게 뜨고,

이렇게 패치된 실행파일이 생성된 것을 볼 수 있습니다.

패치된 실행파일로 실행하면 보다시피 간격이 정상적으로 설정됩니다.

하지만 알파롬 같은 프로텍터가 걸린 실행파일은 위와 같은 옵션을 적용할 수 없는데,

이때는 다음 옵션을 참조하시면 됩니다.


6.1. -wkey 옵션 : '__key.bin' 파일에 있는 키데이터를 원하는 실행파일에 이식합니다.

말 그대로 알파롬이 걸리지 않은 시글러스 엔진 실행파일에 현재 키 데이터를 이식하는 겁니다.

이렇게 하면 AlphaRomDie 없이 실행도 잘 되고, 한글 간격도 아무 문제 없이 수정됩니다.

먼저 해당 옵션을 적용하기 전에 위 화면처럼 '__key.bin'  파일이 생성되어 있어야 합니다.

이미 -xkey나 -xmkey 등의 옵션으로 생성이 되어있을 겁니다.

그리고 추가된 파일 중에 SiglusEngine_pure.exe 파일이 있는데,

이 파일은 프로텍터가 걸리지 않은 최신버전 순정 시글러스 게임엔진 실행파일입니다.

여기에다가 키데이터를 이식할 겁니다.

ToolForSiglus -wkey SiglusEngine_pure.exe 를 입력해줍니다.

그러면 다음과 같이 뜹니다.

보다시피 SiglusEngine_pure_key_modified.exe 파일이 새로 생성되었습니다.

이 파일의 키값은 원래 게임의 키값과 완전 동일하고, -j2k 옵션도 적용할 수 있습니다.

즉 알파롬이 걸린 실행파일 같은 경우는 SiglusEngine_pure.exe 파일에다 키데이터를 이식해주면 됩니다.



7. -xt / -rt 옵션 : 입력받은 .scn / .dbs / .dat 파일에서 텍스트를 추출 / 교체합니다.

이 옵션은 근본적으로는 -xat / -rat 옵션과 기능 차이는 없지만, 각 파일에 대해 개별적으로 수행한다는 차이점이 있습니다.

Gameexe.dat 파일 같은 경우는 하나뿐이라서 -xat / -rat 기능을 쓸 수 없으니 이 옵션을 써야 합니다.

다음과 같이 Gameexe.dat 파일을 복사하고 ToolForSiglus -xt Gameexe.dat 을 입력합니다.

그러면 다음과 같이 뜨고

Gameexe.ext.ini 파일이 생성됩니다.

해당 파일은 이런 식으로 되어있어서 게임 타이틀과 기타 메시지 등을 수정할 수 있습니다.

적당히 수정한 후 -xt를 -rt로 바꿔서 ToolForSiglus -rt Gameexe.dat 를 입력하면

이렇게 뜨면 Gameexe.dat 파일 텍스트 교체가 완료되었다는 증거입니다.

바뀐 Gameexe.dat 파일을 옮겨놓고 실행하면 문제없이 적용됩니다.



8. -xaimg / -raimg 옵션 : 입력한 폴더 내 모든 .g00 파일에서 이미지를 추출 / 교체합니다.

보통 시글러스 엔진의 모든 이미지 데이터는 g00 폴더에 들어있는데, 

이 파일들에 대해 전부 수행하면 시간이 너무 많이 걸리니까 꼭 필요한 파일들만 복사하는 게 좋습니다.

저는 g00_test라는 폴더를 만들고, 앞에 ef가 붙은 .g00 파일들만 따로 복사해서 확인하겠습니다.

이 상태에서 ToolForSiglus -xaimg g00_test output_g00 를 입력합니다.

이런 식으로 로그가 뜨고, 생성된 output_g00 폴더에 들어가면

이렇게 일괄추출이 된 것을 확인할 수 있습니다.

추출된 데이터를 보면 .png 확장자가 아니라 .dir라는 폴더로 추출된 경우도 볼 수 있는데,

이와 같은 경우는 하나의 g00 파일에 여러 이미지 데이터가 들어 있어서 그렇습니다.

포토샵의 레이어 개념으로 봐도 될 것 같네요.

이렇게 추출된 이미지 파일들을 적당히 수정하고, -xaimg를 -raimg로 바꿔서 ToolForSiglus -raimg g00_test output_g00 를 입력합니다.

그러면 이런 식으로 뜨는데, 이렇게 되면 g00_test 내부의 모든 g00 파일의 이미지 데이터를 교체했다는 증거입니다.



9. -ximg / -rimg 옵션 : 입력받은 .g00 파일에서 이미지를 추출 / 교체합니다.

-xt / -rt 옵션과 마찬가지로, 이 옵션도 근본적으로 -xaimg / -raimg 옵션과 기능 차이가 없고

각 파일에 대해 개별적으로 수행한다는 차이만 있습니다.

예를 들면 ToolForSiglus -ximg g00_test/ef_after_start.g00

혹은

ToolForSiglus -rimg g00_test/ef_after_start.g00 와 같이 입력해도 문제없이 동작합니다.



10. -xv / -rv 옵션 : 입력받은 .omv 파일에서 영상 혹은 이미지 데이터를 추출 / 교체합니다.

이쪽은 -xav / -rav 옵션이 있긴 한데, omv 영상 하나만 작업하는데도 오랜 시간이 걸리기 때문에

굳이 설명할 필요성은 없다고 판단하여 -xv / -rv 옵션만 설명하겠습니다.

보통 시글러스 게임엔진의 omv 파일은 mov 폴더에 위치합니다.

저는 SR_KK.omv 파일로 수행하겠습니다.

ToolForSiglus -xv SR_KK.omv 를 입력합니다.

그러면 다음과 같이 출력되는데, 실제로는 저 프레임 숫자가 1부터 8880 까지 순차적으로 올라갑니다.

다만 추출하고 난 결과물이 원본에 비해 지나치게 큰데, 이건 opencv를 이용한 수제 인코더로 트랜스코딩한거라 어쩔 수가 없네요;

사실 omv 파일에서 ogv 파일로 추출하는 게 훨씬 쉬워서, ffmpeg으로 어떻게 ogv <-> mp4 컨버터를 추가로 만들어보려 했는데

일부 프레임이 드랍되는 현상이 발생해서 어쩔 수가 없었습니다.

그래도 일단 기능 자체는 문제없고, 영상 편집할 때도 큰 문제는 없을 겁니다.

이제 영상편집을 어느 정도 했으면 -xv를 -rv로 바꿔서 ToolForSiglus -rv SR_KK.omv 를 입력합니다.

이 작업이 제일 오래 걸립니다.

그러면 이런 식으로 뜹니다.

omv 파일도 마찬가지로 교체되는데, 보다시피 교체한 용량은 원본 파일의 1.5배 정도입니다.

'달의 저편에서 만나요'의 모든 omv로 확인해보니, 편차는 좀 있는데 대체적으로 1.5 ~ 2배 사이로 용량이 불어나네요.

그래도 추출할 때만큼 용량이 커지는 건 아니니, 영상 데이터를 교체할 때는 걱정하지 않아도 될 듯 합니다.


참고로  .omv 파일 중에는 폴더 형태로 추출되는 경우도 있습니다.

이 경우는 omv 파일 내부 이미지 데이터가 32비트라서 알파값을 반영한 포맷으로 출력해야 하는데,

마땅한 라이브러리를 찾지 못해 별수없이 이미지 리스트로 추출해서 그렇습니다.

그 예시로 ef_fnoise00.omv 파일을 복사해서 ToolForSiglus -xv ef_fnoise00.omv 를 입력하면

SR_KK.omv 파일과 마찬가지로 출력되지만, .ext.mp4 파일이 아니라 .ext.dir 폴더로 추출됩니다.

.ext.dir 폴더로 들어가면 다음과 같이 추출된 이미지들을 볼 수 있습니다.



------------------------------------------

가이드 쓰는것만 해도 한세월이네요;

시글러스 게임엔진 번역이 워낙 번거롭게 손대야 할 것들이 많아서 접근성이 많이 떨어지는 느낌이었는데,

조금이나마 도움이 되면 좋겠습니다.