본문 바로가기

Visual Novel Project/Support&Service

키리키리(Kirikiri) 엔진 한글화 방법(2) - 엔진 이해와 수정

 

(대표 이미지는 글 내용과 전혀 관계 없습니다.)

 

-----

 

https://meaningless-recitals.tistory.com/19

 

키리키리(Kirikiri) 엔진 한글화 방법 (1) - 개요부터 언팩까지

키리키리를 사용하는 미연시 번역을 시도하시는 여러분을 환영합니다. 대단한 노하우도 아닙니다만, 간단하게 따라해 보실 수 있는 노하우를 몇 가지 알려드리고자 합니다. 전문적인 지식은 아니더라도 다소의 컴..

meaningless-recitals.tistory.com

 

지난 글에서는 키리키리의 소스 파일을 분해하고 작업 환경을 구성하는 것까지 안내해드렸습니다.

지금부터는 '키리키리'라는 엔진이 대충 어떻게 동작하는지를 이해하려 합니다.

 

뭐, 저도 전공자는 아닐 뿐더러, "진짜" 프로그램 작성은 C#으로 Hello, world! 밖에 써본 적 없는 문외한입니다.

직접 런처를 제작해서 텍스트 후킹이나 로케일 변경을 구사하는 분들과는 비교 대상도 안 되기에.

 

따라서 이번 장에서 기술하는 내용은 Kirikiri Documents와 개인적인 디버깅/리버싱 작업을 통해 도출해낸 귀납적 내용이 많습니다. 소스 코드를 풀어낸 내용도 아니고, 그리고 또 파편화가 많이 된 엔진이기에, 그 부분 이해해주셨으면 합니다.

 

전편에서도 '커널'이니 '유니코드'니 하는 온갖 컴퓨터 용어가 나왔습니다만, 이번 편에서는 더욱 많이 나옵니다(?)

다름아닌 게임 번역을 시도하시는만큼 최소한의 컴퓨터 지식이 있을 거라 가정하고 설명드리겠습니다.

진짜 모르시겠다! 하면 Google 선생님께 여쭤보는 게 좋을 것 같습니다. 물론 댓글로 질문 주시면 바로 답해드리겠지만요.

 

 

1. 로그 분석

이번 장에서는 키리키리 콘솔 로그를 통해 작동원리를 알아보도록 하겠습니다.

 

말씀드렸다시피 키리키리는 xp3로 압축된 파일을 소스로 사용합니다.

실행 파일(.exe)를 작동시키면, 프로그램은 컴퓨터의 정보를 읽어들입니다. Windows 버전이나, CPU 아키텍처나, 가용 램 등등.

 

로그 작성은 개인 소장중인 Microsoft Surface Pro 4 / Intel Core i5 6300U / DDR4 SDRAM 4GB / Windows 10 Pro x64 (ver 1909) 환경에서 진행되었습니다.

12:33:04 ! (info) Loading executable embedded options succeeded.
12:33:04 ! (info) Loading configuration file "(파일 경로)" succeeded.
12:33:04 ! (info) Loading configuration file "(파일 경로)" succeeded.
12:33:04 ! (info) Data path : file://./c/users/ (파일 경로) /savedata
12:33:04 ! Kirikiri Z Executable core /1.2.0.3 (Compiled on Oct 26 2015 18:37:10) TJS2/2.4.28 Copyright (C) 1997-2013 W.Dee and contributors All rights reserved.
12:33:04 ! The details of version information can be perused if -about is attached and started. 
12:33:04 ! Program started on Windows 8 6.2.1008  (Win32)
12:33:04 ! (info) Total physical memory : 4216610816
12:33:04 ! (info) Selected project directory : file://./c/(파일 경로)/data.xp3>

 

(중략)

 

12:33:04 ! (info) Specified option(s) (earlier item has more priority) : -wsrecreate=yes -padinterval=70 -contfreq=60 -dbstyle=d3d -datapath=$(exepath)/savedata -readencoding=Shift_JIS -debugwin=no -hkupdaterect=
12:33:05 ! OS : Windows 8 6.2.1008  (Win32)
12:33:05 ! KAG : EX 3.27-dev.20070519
12:33:05 ! Kirikiri : 1.2.0.3
12:33:05 ! ----- CxImage Copyright START -----
CxImage version 7.0.2 07/Feb/2011
CxImage : Copyright (C) 2001 - 2011, Davide Pizzolato
Original CImage and CImageIterator implementation are:
Copyright (C) 1995, Alejandro Aguilar Sierra (asierra(at)servidor(dot)unam(dot)mx)
----- CxImage Copyright END -----

여기서 키리키리 실행 파일은 데이터파일의 위치와 savedata 폴더 등을 정의합니다.

 

12:33:04 (info) Loading startup script : startup.tjs
12:33:04 (info) Trying to read XP3 virtual file system information from : file://./(파일 경로)/data.xp3
12:33:04 (info) Done. (contains 2060 file(s), 2060 segment(s))
12:33:04 (info) Rebuilding Auto Path Table ...

(중략)

 
12:33:04 (info) Trying to read XP3 virtual file system information from : file://./(파일 경로)/fgimage.xp3
12:33:04 (info) Done. (contains 4 file(s), 4 segment(s))
12:33:04 (info) Trying to read XP3 virtual file system information from : file://./(파일 경로)/bgimage.xp3
12:33:04 (info) Done. (contains 1246 file(s), 1246 segment(s))
12:33:04 (info) Total 459 file(s) found, 458 file(s) activated. (9ms)
12:33:04 (info) Rebuilding Auto Path Table ...

 

(중략)


12:33:04 (info) Trying to read XP3 virtual file system information from : file://./(파일 경로)/voice.xp3
12:33:04 (info) Done. (contains 51082 file(s), 51082 segment(s))
12:33:04 (info) Total 689 file(s) found, 687 file(s) activated. (253ms)

 

(중략)


12:33:04 (info) Trying to read XP3 virtual file system information from : file://./(파일 경로)/thum.xp3
12:33:04 (info) Done. (contains 24250 file(s), 24250 segment(s))

 

(중략)


12:33:05 (info) Trying to read XP3 virtual file system information from : file://.(파일 경로)/emotedx.xp3
12:33:05 (info) Done. (contains 571 file(s), 571 segment(s))
12:33:05 (info) Total 1240 file(s) found, 1236 file(s) activated. (11ms)
12:33:05 (info) Rebuilding Auto Path Table ...
12:33:05 (info) Total 54271 file(s) found, 53377 file(s) activated. (112ms)
12:33:05 append_init.tjs を読み込みました(119ms)
12:33:05 (info) Rebuilding Auto Path Table ...
12:33:05 (info) Trying to read XP3 virtual file system information from : file://./(파일 경로)/patch.xp3
12:33:05 (info) Done. (contains 1637 file(s), 1637 segment(s))
12:33:05 (info) Total 55908 file(s) found, 53602 file(s) activated. (86ms)
12:33:05 OS : Windows 8 6.2.1008  (Win32)
12:33:05 KAG : EX 3.27-dev.20070519
12:33:05 Kirikiri : 1.2.0.3

다음으로 startup.tjs를 실행시킨 뒤, xp3 내의 파일을 읽어들입니다. 

 

여기서 주목할 점은 "patch.xp3"도 자동으로 읽어들인다는 점입니다. 여기에 대해서는 좀 설명이 필요할 것 같습니다.

 

- patch 아카이브의 우선순위

 

patch 가 붙은 xp3 파일은, 추후 패치로 인해 기존에 배포했던 파일을 수정하는 데에 쓰입니다.

그리고 이는 patch 뒤의 숫자가 클수록 최신 버전임을 의미합니다.

 

즉,

 

data.xp3 내에 시나리오1.ks가 있고,

patch.xp3에도 시나리오1.ks,

patch2.xp3에도 시나리오1.ks, 

...

patch98.xp3에도 시나리오1.ks

patch99.xp3에도 시나리오1.ks가 있다면,

 

키리키리는 patch99.xp3 내의 시나리오1.ks를 최신 버전(up to date)로 인식하고 그쪽을 실행합니다.

이것은 data 내의 파일 수정이나 엔진의 스크립트 수정을 굳이 할 필요 없이, 자동으로 이루어집니다.

 

따라서, 한글패치는 기존에 있던 patch.xp3를 수정하거나 patch(n).xp3를 만듦으로서 간편하게 실행될 수 있습니다.

 

물론 data.xp3 폴더 내의 파일 자체를 바꾸어 아카이브 전체를 배포하는 것도 훨씬 간편한 방법이 될 수 있습니다.

키리키리는 patch(n).xp3 내의 디렉터리는 자동으로 읽지 않습니다. 즉, 모든 파일을 루트 디렉터리에 쑤셔박아야 합니다. 그러나 이렇게 되면 각 부분의 파일 관리가 힘들어집니다. 기껏 폴더로 파일들을 정리해 놨더니 patch.xp3에는 최상위 디렉터리에 파일만 수백 수천 개... 어휴.

 

그래서, 머리를 좀 쓰자면, Autofilepath.add. 명령줄을 사용하여 patch(n).xp3 내의 각 디렉터리를 읽도록 지시하도록 합니다. 제가 작업한 <Re:LieF ~친애하는 당신에게~>역시 마찬가지로, 한글패치에 해당하는 patch2.xp3 내의 각 디렉터리를 전부 색인하도록 지시해 두었습니다.

 

하지만 이런 작업은 프로그래밍 모르겠다! 배우기도 싫다! 하신다면 그냥 성가신 작업일 뿐입니다. 
어차피 저희가 돈 받고 일하는 것도 아니고, 그냥 data.xp3 내지 patch.xp3를 통째로 수정하시고 통째로 패킹하셔서 배포하면, 다운받는 사람은 용량이 커서 귀찮겠다만 저희는 알 바가 아닙니다.

 

(실제로 제 현재 프로젝트인 <밤을 맴도는, 우리들의 미아교실>은 저런 귀찮은 시스템 수정 없이 그냥 data랑 patch 통째로 배포할 생각입니다.)

 

아무튼, 이 점을 알고 계신다면 번역작업에 편의를 기하실 수 있을 것 같습니다.

 

키리키리는 실행할 때마다 patch(n).xp3를 차례로 읽어들이고, patch(n).xp3 내에 data.xp3 및 다른 아카이브 파일과 동일한 이름의 파일이 있으면 patch 쪽을 우선시합니다.

 

12:51:31 DefaultMover.tjs を読み込みました(4ms)
12:51:31 Action.tjs を読み込みました(37ms)
12:51:31 LoopVoice.tjs を読み込みました(2ms)
12:51:31 LineMode.tjs を読み込みました(16ms)
12:51:31 LineModeEx.tjs を読み込みました(16ms)
12:51:31 MainWindow.tjs を読み込みました(291ms)
12:51:31 YAML.tjs を読み込みました(7ms)
12:51:31 KAGEnvBase.tjs を読み込みました(19ms)
12:51:31 KAGEnvTrans.tjs を読み込みました(5ms)
12:51:32 KAGEnvironment.tjs を読み込みました(45ms)
12:51:32 KAGEnvImageMapperStage.tjs を読み込みました(1ms)
12:51:32 KAGEnvImageMapperStand.tjs を読み込みました(3ms)
12:51:32 KAGEnvImage.tjs を読み込みました(53ms)
12:51:32 KAGEnvMusic.tjs を読み込みました(4ms)
12:51:32 KAGEnvSound.tjs を読み込みました(2ms)
12:51:32 world.tjs を読み込みました(238ms)
12:51:32 MyHistoryLayer.tjs を読み込みました(16ms)
12:51:32 YesNoDialog.tjs を読み込みました(2ms)
12:51:32 MyYesNoDialog.tjs を読み込みました(9ms)
12:51:32 MyMapSelectLayer.tjs を読み込みました(4ms)
12:51:32 system.tjs を読み込みました(35ms)
12:51:32 pagebase.tjs を読み込みました(5ms)
12:51:32 cgmode.tjs を読み込みました(15ms)
12:51:32 scenemode.tjs を読み込みました(4ms)
12:51:32 soundmode.tjs を読み込みました(6ms)
12:51:32 option.tjs を読み込みました(7ms)
12:51:32 saveload.tjs を読み込みました(20ms)
12:51:32 name.tjs を読み込みました(5ms)
12:51:32 encyclopedia.tjs を読み込みました(7ms)
12:51:32 default.tjs を読み込みました(5ms)

 

그 뒤에는 지난번해도 설명했던 '.tjs' 형식의 시스템 파일을 읽어들입니다. tjs 파일은 Kirikiri 구동에 필수적인 시스템 파일들입니다. 컴퓨터에 간단히 비유하자면, 지금은 컴퓨터 전원을 켜고 윈도우를 시작하는 단계라 볼 수 있습니다.

 

- 파일 로딩

 

이렇게 시스템이 전부 준비되었다면, 키리키리는 first.ks를 찾아 실행시킵니다.

다른 파일이 아니라 무조건 first.ks입니다. 엔진 세팅이라 다른 방법이 없습니다. 그래서, 오히려 저희들은 더 편하죠. first.ks만 찾아서 코드의 흐름을 따라가시면 되거든요.

 

first.ks부터는 각 제작사별 모딩이 들어가 있어서, 대강의 흐름을 구두로만 설명하겠습니다.

 

first.ks에서는 보통 게임 시작에 앞서 여러 정의를 내려놓습니다.

Autofilepath라는, xp3 아카이브 내에 있는 파일을 경로 없이 이름만 쳐 주면 바로 쓸 수 있도록 도와주는 색인 작업부터 시작하여, 폰트의 정의, 버전 정의, 경고 문구 및 제작사 로고를 띄우는 것까지 대개 first.ks에서 처리합니다. 그리고 macro.ks를 실행시켜서 메모리상에 엔진에서 사용할 macro를 저장해 놓습니다.

 

게임을 번역하시다가, "이게 뭐지" 싶으신 함수나 동작은 일단 macro에서 찾으시면 거의 찾으실 수 있을 겁니다. 그만큼 자유롭게 제작하는 코드 묶음이고, 그만큼 제작사 프로그래머의 성향을 잘 알 수 있는 부분입니다. 어떤 제작사는 거의 대부분의 작업을 macro로 정의해놓고 키리키리 자체 구문은 안 쓰는 반면, 어디는 macro를 거의 안 쓰고 키리키리 자체 구문으로 처리하기도 합니다.  

 

그 뒤는 (다른 파일을 거칠 수도 있지만, 대개는) title.ks로 넘깁니다.

 

title.ks에서는 타이틀 화면을 구성합니다. 로고의 배치부터 Start, Load 등 우리가 흔히 생각할 수 있는 부분들이 등장합니다. 그리고 각 버튼을 눌렀을 때의 동작을 정의하는 것으로 title.ks가 마무리됩니다.

 

대개는 title.ks에서 start를 눌렀을 때, 바로 시나리오 스크립트로 들어가도록 설정되어 있습니다. 따라서 그 뒤로는 번역을 하면 될 뿐이죠.

 

 

 

 

 

- 번외편: 그래픽 레이어

 

키리키리가 텍스트 스크립트 엔진이라고는 해도 기본적인 GUI를 지원하긴 해야 합니다.

왜냐면 명령줄 구문(CLI)로는 게임하기 좀 그렇잖아요.  아 오토메 도메인 켜서 한발 빼고 자야지~

$ sudo apt-get install otome*domain(=v.1.0.0)...

 

아니 생각만 했는데 왜 좆같지? 아무튼간에 키리키리는 그래픽 레이어를 통해 이미지를 표시합니다.

레이어는 배경 레이어, 전경 레이어, 텍스트 레이어로 나뉘고, 레이어의 숫자가 낮을수록 뒤에 깔리는 레이어입니다.

 

일반적인 경우 배경을 배경 레이어에, 캐릭터들을 전경 레이어에, 텍스트 창과 각 버튼들을 전경 레이어 최상단에 올려놓습니다. 그리고 텍스트 레이어의 크기와 위치를 지정해서 최상단 텍스트 레이어에 올리고요.

 

저희는 게임 개발을 하려는 게 아니니, 그냥 알고만 계시면 됩니다.

 

 

 

2. 번역 시에 건드리게 될 파일들 

 

- 시나리오

 

시나리오 역시 제작사에 따라 파편화가 심합니다. 어디는 ks 파일에 통합을 시켜놓더니, 어디는 txt로 써 놓고, 어디는 txt로 써 놨지만 그걸 scn으로 암호화하기도 합니다. 또한 시나리오 내에 등장인물의 CG를 구동하는 부분, BGM을 재생하는 부분, 목소리를 재생하는 부분 역시 제작사마다 다른 매크로를 사용합니다. 따라서 일률적으로 설명하기에는 애로사항이 다소 있습니다.

 

하지만 어떻게 되었건 간에 수정은 간편합니다. ks의 경우 확장자만 ks지, 그냥 텍스트 파일과 다름없습니다. 메모장이든 뭐든 열어서 수정하면 됩니다. txt는 말할 필요도 없고요.

 

문제는 scn이죠. 하지만 이것도 이미 뚫어놓으신 용자가 존재한다고 말씀드렸습니다. 링크는 아래입니다.

 

https://github.com/marcussacana/KrKrZSceneManager

 

marcussacana/KrKrZSceneManager

A KrKrZ .SCN string editor. Contribute to marcussacana/KrKrZSceneManager development by creating an account on GitHub.

github.com

새삼스러운 이야기입니다만, 키리키리를 한글화하다 보면 Github나 기타 서양권 에로게 커뮤니티랑 많이 친해지셔야 합니다. 애초에 일본 애들은 번역할 필요가 없고, 번역 수요는 러시아나 중국이 가장 크더군요. Garbro도 제가 알기로는 러시아 쪽 툴입니다.

 

아무튼 이런 툴들은 대부분 C++나 C#으로 제작되었고, 필요하시다면 소스 코드를 직접 받아서 사용하시는 것도 가능합니다. 그런 건 전혀 모르겠고, 내 컴퓨터에 Visual Studio나 Eclipse 같은 공돌이 냄새 나는 흉물을 깔기 싫으신 문과러들께서는 그냥 Releases 탭 들어가셔서 완성판을 다운받으시면 됩니다. 

 

아무튼 저 툴을 이용하면 scn으로 암호화된 파일도 수정 가능합니다.

 

 

- 폰트

 

시나리오를 열심히 한글로 바꿔놔도 게임에서 안 나오면 무용지물이겠죠? 말씀드렸다시피 키리키리는 유니코드를 지원합니다만, 가끔 보면 한글이 안 표시되는 경우가 있습니다. 탈출 문자(????나, .... 같이)로 표시되거나 아니면 아예 궯뛟쉛뛟이 되는 경우도 있습니다. 전자의 경우 폰트 렌더링에 한글이 없는 것이고, 후자의 경우 시나리오 파일 인코딩이 잘못된 겁니다.

 

이럴 때, 후자는 시나리오 파일의 인코딩이 UTF-16LE인지 다시 한번 체크해 주시면 됩니다.

아, 이 툴을 아직 안 소개했네요. 인코딩 변경하기 좋은 툴입니다. 가끔 크래시가 나긴 하는데, 몇 번씩 시도하거나 호환성 설정을 win7로 해주시면 됩니다.

 

https://tetris.tistory.com/441

 

Bolt Text Manager 2.0 문자 인코딩 변환 툴 업그레이드

Bolt Text Manager 는 텍스트/소스/자막 파일의 인코딩을 변환하는 유틸리티입니다. 이런 종류의 유틸리티는 꽤 여러 종류가 있고, 에디터에서도 지원을 하지만, 일괄 작업이 불편하거나 UI 사용이 좀 불편한 부분..

tetris.tistory.com

 

하지만 전자는요?

오호라. 폰트를 바꾸러 가 봤더니 익숙한 트루타입 폰트(.ttf)나 오픈타입 폰트(.otf)가 아니라 무슨 .tft라고 되어 있네요.

키리키리는 엔진 자체에서 폰트 렌더링을 지원하지 않습니다(!!!). 그래서 저희가 직접 기 렌더링된(Pre-Rendered) 폰트 파일을 생성해줘야 합니다. 이럴 때 사용하는 키리키리 SDK 툴이 있습니다.

 

https://krkrz.github.io/krkr2doc/kr2doc/contents/FontMaker.html 

 

レンダリング済みフォントデータ作成ツール

 

krkrz.github.io

이번에는 일본어입니다. 설마 일본 게임 번역하시는데 일본어를 모르시지는... 에이 설마요.

혹시나 모르시는 분을 위해서 영어로 이식한 버전도 같이 올려드립니다.

 

http://moddingwho.blogspot.com/2013/02/modding-tools-kirikiri.html

 

Modding Tools - 기리기리

기리기리 - Modding Tools 자료의 출처는 HongFire, TLWiki, 중국, 러시아 사이트 등이고 CMD는 제가 직접 작성했습니다. 작업 시에 폴더 비교/수정 관련으로 기능이 강력한 Total Commander도 쓸만합니다. ...

moddingwho.blogspot.com

 

참고로 폰트를 고를 때, 앞에 @이 붙은 폰트와 아닌 폰트가 있습니다.

@이 붙은 폰트는 세로쓰기 폰트이므로 선택하지 않도록 해 주세요. 게임이 세로쓰기라면, 반대로 @이 붙은 폰트만 선택하셔야 합니다. (제가 레리프 번역할 때 이거에 당해서 당황한 적이 좀 있읍니다...)

 

이렇게 폰트를 렌더링해주실 때에는, 파일을 폰트 크기별로, 셋팅별로 만들어주셔야 합니다.

자체 렌더링 엔진이 있는 경우 엔진이 알아서 해 주지만(다른 고-급 게임들마냥), 그렇지 않은 키리키리의 경우에는 각 컴퓨터별 윈도우 환경에 의존하거나 자체 렌더링된 폰트만을 사용해야 합니다.

 

윈도우 환경에 의존하는 게임의 경우 그냥 게임 설치 안내에 "무슨무슨 폰트를 미리 설치해 주세요~" 라고만 하면 됩니다. 그러나 아닌 경우는 모든 경우의 수를 고려해 주셔야 합니다. 한 폰트마다 16, 18, 20폰트에 필요하면 볼드나 이탤릭까지...ㅎㅎ;

 

그리고 폰트를 전부 만들어 주셨다면, 다음 선택지는 두 가지로 나뉩니다.

하나는 폰트 이름을 기존 폰트와 동일하게 만들어서 '바꿔치기' 하는 겁니다. 이러면 별다른 코드 에디팅 없이도 바로 적용됩니다.

다른 하나는 폰트 이름은 내가 알 수 있게 해 놓되, 코드를 바꿔서 키리키리가 "아, 이 폰트는 저 파일을 로드하면 되는 거구나" 하고 인식하게 하는 겁니다. 이건 보통 다음과 같이, first.ks 내에서 선언합니다.

 

나눔스퀘어 20포인트, 특별한 세팅 없이 렌더링한 폰트를 nanumsquare20.tft라는 이름으로 만들었을 경우,

[font face="(폰트 이름)"][mappfont storage="font/nanumsquare20.tft"]

이렇게 씁니다. 그리고,

[deffont face="(폰트 이름)"]

default font로 설정하도록 deffont를 통해서 폰트를 고정해 주시면 됩니다.

 

물론 이 짓거리를 하느니 그냥 이름만 바꿔넣고, 셋팅을 딴데 메모해 두시는게 정신건강에 이롭습니다.

 

 

- 이미지 파일

 

키리키리는 기본 이미지 파일 형식으로 .png를 사용합니다.

어? 익숙한 형식이네요. 네. 그냥 포토샵이든 김프든 포토스케이프든 좋으실 대로 수정하시고, 똑같이 png로 저장하셔서 대체시키시면 됩니다.

 

혹시나 psb 파일이나 tlg 확장자로 설정된 파일들도 있는데, 이건 텍스트보다 오히려 추출 툴이 더 잘 나와 있습니다. 찾아서 취향에 따라 사용하시면 되겠습니다.

 

여기서 눈치를 채셨겠지만, 키리키리는 비트맵 기반 파일만을 사용하기에, 3D 모델링을 사용하는 타 고오급 엔진보다 훨씬 텍스쳐 개조가 편합니다. 이 이미지 파일의 수정을 통해서 HD만 지원하던 게임을 4K FHD를 지원하도록 마개조하실 수도 있고(?!), 그 외의 온갖 삽질을 다 할 수 있습니다.

 

물론, 게임을 게임이 아닌 무언가로 바꿀 수도 있습니다...

 

 

- 동영상 수정

 

여기는 게임 한글화나 프로그래밍의 영역이라기보다는 자막 제작의 영역입니다. 인터넷에서 자막 제작 꿀팁들을 참고해 보시고 제작하시면 될 것 같습니다.

 

문제는 인코딩입니다. 키리키리는 저희에게 익숙한 mp4나 mkv 등의 최신 컨테이너를 지원하지 않습니다. 다만 wmv, avi 같은 조금 예전 확장자만을 지원하는데요. 코덱 또한 H.264를 지원하지 못하는 것으로 알고 있습니다. 그래서 가급적이면 2000년대 초반 인터넷에서 떠돌아다니던 것과 비슷한 수준으로 인코딩을 하시면 될 것 같습니다.

 

제 경우 이렇게 인코딩합니다.

 

확장자 : .avi

비디오 : mpeg4(H.263) 5000kbps bicubic 1280x720(해상도는 가변)

오디오 : wma1 256kbps 44.1kHz

 

당연히 자막은 영상 내에 합쳐주셔야 합니다.

 

이렇게 했을 때 게임 오프닝/엔딩 정도는 120MiB 선에서 끝나더군요.

물론 훨씬 최적화가 잘 된 프리셋이 있겠지만, 이런 부분은 좀 보수적으로 접근할 필요가 있을 것 같습니다...ㅠ

혹시 에러라도 뜨면 픽스가 귀찮아져서...

 

 

- 게임 제목 수정

 

사실 어찌되든 상관없는 부분입니다만, 왠지 한글판이니까 제목도 한글로 쓰고 싶을 때가 있습니다.

 

그럴 때는 system/Config.tjs를 찾아가시면 됩니다. 켜자마자 눈 앞에 딱 '제목이다' 싶은 게 있습니다.

이때는 엔진에 따라서 선택지가 갈립니다. 엔진이 krkrz인 경우에는 그냥 한글로 휙 쓰시면 됩니다. 하지만 엔진이 krkr2인 경우에는 영문이나 일어밖에 지원하지 않습니다, 가능하면 영문으로 쓰시는 게....

 

그리고 Config.tjs 내용을 변경해도 게임 창에 표시되는 타이틀도 안 바뀔 때가 있습니다. 그 때는 first.ks 같은 다른 파일들에 모딩을 해 놨을 수도 있으니까, 일일이 찾던가 코드 에디터의 검색 기능으로 찾던가 해야 합니다.

 

 

 

 

다음 편에서 마지막 리패킹과 디버깅을 다룰까, 아니면 소소한 팁들을 소개할까 고민중인데...

암튼 언제인진 모르겠지만 다음에 만납죠.