[CK2 모딩 팁]내멋대로 쓰는 Crusader King 2 모딩 매뉴얼 (1) 서설, 모드 설정 파일 - 개정판 (2015/04/28 수정)
작성자tacitus작성시간15.02.13조회수3,628 목록 댓글 4내멋대로 쓰는 Crusader Kings 2 모딩 매뉴얼 - 개정판
1. 서론
1) 모딩 서설
런칭된 게임을 플레이어가 일정한 범위 내에서 수정할 수 있도록 제공되는 기능인 모드는, 잘만 사용한다면 게임의 새로운 재미를 느낄 수 있는 좋은 컨텐츠가 될 수 있습니다. 저도 가끔, 나는 Crusader Kings 2 를 플레이하고 있는 건지, Crusader Kings 2 Mod Creater 라는 게임을 하고 있는 건지 혼동될 때가 있으니까요. 게임사의 입장에서도, 다소 게임이 불안정해질 수 있다는 문제, 모드로 인한 확장을 엔진단계에서부터 고려해야 한다는 어려움이 있기는 하지만, 제대로만 만들어 둔다면 플레이어들이 만들어 내는 여러가지 모드로 인하여 개발사가 조금 놀아도(..) 게임의 생명력이 그만큼 길어질 수 있다는 점이 메리트가 될 수 있습니다.
저도 많은 게임의 모드를 접해보진 않았습니다만, Crusader Kings 2(이하 CKII라고 쓰겠습니다)의 모드 기능은 꽤 훌륭하다고 생각합니다. 작게는 단순한 치트의 구현에서부터, 크게는 아예 전혀 다른 게임을 창조해기에 이르기도 하니까요. 제가 처음으로 모드를 접했던 게임인 The Guild II 처럼 아예 메인 코드 자체를 오픈해버린 형태1)는 아니지만, 상당히 넓은 범위를 플레이어의 입맛에 맞추어 수정할 수 있게 해 주는 제법 훌륭한 모드 서포트를 제공합니다.
무엇보다도, 그 구조와 문법이 그다지 복잡하지 않기 때문에, 프로그래밍 경험이 없는 플레이어도 기본적인 개념과 규칙을 익히면 어렵지 않게 접근이 가능하다는 점은 상당한 장점이 됩니다. 물론 워낙 사이즈가 크기 때문에, 아무리 구조와 문법이 단순하다고 해도 쌓인 분량에 압도당하는 측면이 있는 건 분명한 사실입니다만, 그건 분량의 문제이지 복잡성의 문제는 아니죠. 게다가, 일반적으로는 그 많은 걸 다 건드리지는 않으니까요.
2) 어떤 이야기를 할 것인가
CKII 의 모딩에 관한 완결된 문서는 현재 존재하지 않습니다. 제작사인 파라독스사에서 모딩에 관한 공신력 있는 문서를 공개하지 않고 있기 때문이지요. 그나마 일반 유저가 편하게 접근할 수 있는 통일된 소스는 CKII 위키의 모딩 관련 카테고리인데, 여기의 내용도 100% 정확하지는 않고, 어떤 부분의 경우 내용이 상당히 빈약한 부분도 있습니다. 그 외에 파라독스 포럼의 유저 작성 문서들은 한국의 유저 입장에서는 언어의 장벽도 있을 뿐더러 검색도 쉽지 않다는 문제가 있죠. (개인적으로 포럼형 게시판을 별로 좋아하지 않습니다.)
결국 이 글을 쓰고 있는 저도, 참고할 수 있는 문서들은 위키에 공식적으로 언급된 내용들 이외에 포럼의 유저들이 작성한 글들, 그리고 이 카페의 게시판의 글들 정도입니다. 거기에 제가 모딩을 해 오면서 알게 된 몇 가지 문서화되지 않은 지식들이 더해지긴 하겠지요. 따라서, 실제로 이 시리즈에서 다루게 되는 내용들의 수준 자체는 위키 등 기존의 문서의 수준을 뛰어넘지는 못할 것입니다.
단, 이 글은 어느 정도 컴퓨터를 다룰 줄은 알지만 모딩에 대해서 별다른 지식이 없는 독자를 상정하고 작성되고 있습니다. 즉, 모딩 초보자가 이 글을 읽으면서 실제로 어느 정도 스스로 모딩을 할 수 있는 수준에 다다르게 하는 것을 목표로 합니다. 따라서, 알려진 각종 지식들은 제 관점에서 보기에 이런 목표를 달성할 수 있는 형태로 재구성될 것입니다. 그 결과, 이 글은 어느 정도 모딩에 대해서 알고 있는 유저가 필요한 내용을 찾아보는 용도로 사용하기에는 부적합할 수도 있습니다. 애초에 이 정도 경지에 오르신 분들은 이 글은 단지 위키나 포럼 등에서 느낄 수 있는 언어의 장벽을 해소하는 것 이외에는 큰 의미가 없을 테죠.
구체적으로는, 우선 모딩에 관련된 이런 저런 이야기들과, 모딩에 필요한 기본적인 이야기들을 말씀드린 후 바로 디시전 파일 모딩을 설명드릴 것입니다. 왜 디시전 파일인가 하면, 대부분의 모딩 유저들이 모딩에 입문하는 계기가 게임의 난이도를 낮추기 위한 치트의 제작인 경우가 많고, 이런 경우 유저가 직접 어떤 코드를 실행하기 위한 가장 편리한 수단이 바로 디시전을 통한 코드 실행이기 때문입니다. 이런 글을 읽어가는 사람의 입장에서 일단 빠른 시간 안에 결과물이 눈에 보여야 따라갈 맛이 나지 않겠습니까?
다만, 실제로 디시전 그 자체에 대해서는 크게 설명할 만한 내용은 없습니다. 오히려, 디시전 모딩에 관한 내용 속에, CKII 모딩을 하면서 필수적으로 알아야 하는 여러 가지 개념과 구조에 관한 이야기를 녹여서 같이 설명드릴 것입니다. 아마도, 디시전 파일 모딩에 관한 내용이 모두 끝나고 나면, 독자분들 스스로가 위키의 명령문 레퍼런스 등을 의지해서 CKII 의 텍스트 파일을 (힘들게나마) 읽어나갈 수 있는 수준이 될 것이라 생각합니다. 그 이후에 이벤트 파일의 모딩에 관한 내용, 그 외 제가 설명드릴 수 있는 다른 여러 가지 요소들의 모딩에 관련된 이야기를 풀어나갈 것입니다. 어디까지 쓸 수 있을지는 현재로서는 알 수 없군요.
3) 모딩을 하기 위해 필요한 것들
CKII 모딩을 위해서 필요한 것들이 몇 가지 있습니다. 길고 긴 이야기를 이제 막 시작하는 참이니, 이런 내용을 조금 자세히 짚고 넘어가도 상관 없겠죠. 게다가 실제로 필요한 것이기도 하고요. 마음 편하게 읽으셔도 됩니다.
■ 불만 또는 망상
시작부터 좀 황당한 이야기를 하는 것 같지만, 사실 이게 없다면 애초에 모딩이라는 걸 시작할 동기 자체가 없을 겁니다. 대개 게임을 하면서 "젠장 게임이 너무 어려워!" 라든가, "아, 이런 건 좀 고쳤으면 좋겠어." 라든가, "이런 시스템이 있으면 어땠을까?" 라든가, "아, 이 좋은 떡밥을 이렇게밖에 못 살리네!" 라든가, "이건 명백히 사실과 다르잖아! 수정해주겠어!" 라든가, 무엇이든 좋습니다. 이런 불만 또는 망상이 여러분의 모딩 라이프의 든든한 기반이 됩니다.
문제는, 이 불만 또는 망상을 실제로 게임 내에서 모딩을 통해 실현할 수 있는가입니다. 어느 정도 모딩에 대한 지식이 쌓이고 큰 그림이 그려지면, 구현하려는 이벤트 또는 기능이 정말로 구현이 가능한지 여부를 대략 판단할 수 있는 능력이 생깁니다. 그러나 모딩 초심자의 경우에는 이게 될 리가 없습니다. 그래서 의욕에 넘쳐서 작업에 들어갔다가, 몇 시간 만에 구현불가라는 장벽을 만나 GG를 치는 경우가 허다하게 많습니다.
물론 이런 실패 자체도 모딩 플레이(...)의 일부가 되기도 합니다. 대부분의 RPG 게임에서도 주인공이 고난과 시련을 몇 번쯤은 겪게 마련이지 않습니까? 그리고 몇 번 이런 식으로 물을 먹다 보면 어디까지 수정이 가능한지 몸으로 익히게 되는 것도 사실입니다. (경험치를 얻어서 레벨업?) 허나 이런 식의 실패가 상당히 맥을 빠지게 한다는 것도 엄연한 사실입니다.
그러니, 모딩을 시작하기 전에 일단 이것이 되는 모딩인지 안 되는 모딩인지 정도는 알아보고 시작을 하시라는 이야기를 하고 싶습니다. 대개의 경우 어느 정도 모딩을 손대본 플레이어라면 어떤 이야기를 들었을 때 될 것 같다 내지 안될 것 같다 정도의 감은 가지고 있게 마련이고, 카페에는 그런 플레이어들이 제법 많이 있으니까요.
참고로, 모드에 관련된 질문게시판의 질문 중 장기간 답이 달리지 않는 질문들이 있는데요. 질문이 명확하지 않아서 답변하기가 곤란한 질문이 아니라면, 대부분은 그 모딩의 난이도가 너무 높거나 모딩으로 구현하기가 불가능한 부분에 대한 질문입니다. 답변자의 입장에서 "~~~하면 됩니다." 라는 답변은 쓰기가 쉽지만, "그건 ~~~해서 안 됩니다." 라는 답변은 정말 확실하지 않은 이상 쓸 수 없는 답변이기 때문에, 결국 누구도 답을 달지 않게 되는 거죠.
■ 근성과 낙천
이건 또 무슨 이야기냐.. 모더가 싸워야 하는 적들은 사방에 널려 있지만, 그 중에서 가장 상대하기 어려운 적은 바로 제작사인 파라독스입니다. 마이너 버전업의 경우에는 크게 걱정하지 않아도 되지만, 새로운 DLC 의 투입이 이루어지는 메이저 버전업(첫째 자리 또는 둘째 자리 숫자가 커지는 버전업)이 이루어지면, 바로 직전까지 멀쩡하게 돌아가던 모드가 갑자기 먹통이 되어버리는 예가 허다합니다. 단순한 치트성 모드의 경우에는 그 위험성이 상대적으로 적지만, 시스템의 핵심적인 부분을 건드리는 모드나, 복잡성과 관계 없이 기존의 내용을 수정하는 종류의 모드라면 최악의 경우 모드를 사용할 수 없게 되거나 대대적인 수정을 필요로 하는 상황이 벌어질 수 있습니다.
즉, 파라독스는 버전업 시에 기존의 모드와의 호환성을 일차적으로 고려해주지 않습니다. 애초에 세상에 존재하는 모드들을 그들이 모두 알고 있을 턱이 없죠. 그들이 보기에 시스템의 변화가 필요하다면 그들은 거리낌 없이 바꿉니다. 이에 따라 모드에 호환성 문제가 발생하는 것은 순전히 모더, 그리고 모드의 사용자가 감수해야 할 위험입니다. 모드의 볼륨이 커짐에 따라, 이런 호환성 문제에 직면했을 때 모더가 받게 되는 데미지도 커질 수밖에 없을 겁니다. 원본에서 수백 줄을 수정해서 대체해놨는데 정확히 그 부분이 업데이트되면서 내용이 변경되었다면 기분이 어떠실 것 같습니까? 이런 일이 발생했을 때, 한번 씨익 웃어주고 "고치지 뭐." 할 수 있는 근성과 낙천적인 자세가 필요하다는 것입니다.
마치 파라독스사를 우리의 주적인 것처럼 적었습니다만, 그렇다고 해서 그들이 모드의 호환성에 전혀 신경을 안 쓰는 건 아닙니다. 바로 전 버전까지 잘 돌아가던 명령어가 갑자기 사라진다거나 하는 일은 없습니다. 제 경우는 원본 자체의 내용을 수정하는 부분이 거의 없었기 때문에 하위 호환성 문제(구 버전에서 정상적으로 실행되는 모드가 신 버전에서 실행되지 않거나 오류가 발생하는 문제)를 겪어본 적은 없습니다. 상위 호환성 문제(2.1.6 등 구 버전에서의 실행 불가 문제)는 어쩔 수 없는 부분이죠. 새로 추가된 명령어를 사용해서 발생하는 하위버전에서의 호환성 문제는 어찌할 수 없는 부분이잖아요?
대부분의 경우, 호환성 문제는 원래의 시스템, 이벤트, 데이터 등 원래의 코드와 직접 관련되거나 거기에 의존적인 코드, 원본의 내용을 대체하는 코드 등의 경우에 한정됩니다. 따라서, 이 문제에 대해서 심각하게 고민할 필요는 없습니다. 다만 이런 문제 - 원본 게임의 버전업과 함께 발생할 수 있는 모드의 호환성 문제 - 에 대해서는 반드시 알고서 모딩을 시작하셔야 한다는 점을 강조하고 싶었습니다.
■ 첫 번째 도구. 텍스트 에디터
이제 도구에 대해서 이야기해봅시다. 모딩 작업에서 가장 큰 비중을 차지하는 것이 바로 스크립트 코딩 작업입니다. 기존의 이벤트/데이터 파일을 수정하거나 새 이벤트/데이터 파일을 작성하는 작업이죠. 이 파일들은 대개 .txt 확장자(또는 .csv, .gfx 확장자)를 가진 텍스트 파일이기 때문에, 이들을 작성하고 편집하기 위한 텍스트 에디터가 필요합니다.
일반적인 컴퓨터 사용자라면, 여기서 바로 떠올리실 프로그램이 있죠. 바로 윈도우 환경에서 기본적으로 제공하는 [메모장] 프로그램 말입니다. 그러나, 분명히 말씀드리건대, 모딩 작업을 하는 동안에는 [메모장] 이라는 프로그램은 머리에서 지우십시오. 절대로 사용하시면 안 됩니다. 어째서? 사용이 불편해서? 그렇기도 하죠. 그러나 그것은 근본적인 이유가 아닙니다. [메모장] 프로그램이 가지고 있는 한계로 인해, 작성하거나 수정한 모드 파일을 CKII 런처가 제대로 받아먹지 못할 수 있기 때문입니다.
이런 문제가 발생하는 이유는 바로 인코딩 문제 때문입니다. 모든 텍스트 파일은 문자열 그 자체를 그대로 저장하고 있습니다. 따라서 별다른 조작 없이도 그 파일의 내용을 그대로 읽을 수 있죠. 그런데, 세상에 언어가 얼마나 많습니까? 그래서, 각 나라마다 자국이 사용하는 문자를 컴퓨터에서 표기하기 위한 고유한 표준 문자 세트를 가지고 있습니다. 우리 나라도 KS-C-5601(완성형) 이라는 (행망용) 표준 문자세트를 가지고 있었죠. (지금은 CP949 또는 euc-kr 이라고도 불리지만, 사실 이들은 엄밀히 말해 모두 다른 것입니다. 다만 대체적으로 호환은 됩니다.)
이러한 문자 세트는, 대개 키보드 위에 표시되는 알파벳 26자, 숫자 10개, 각종 기본 특수문자들과 함께, 각국에서 사용하는 기본 문자세트 및 특수문자들을 포함합니다. 하나의 문자를 표시하기 위한 바이트 수도 나라마다 조금씩 다른데, 그럼에도 불구하고 일반적인 영문, 숫자, 기본 부호 등은 전세계적으로 사용하는 아스키코드(ASCII Code)와의 호환성을 유지하여 공통된 1바이트 코드로 표시하기 때문에 이들 문자들의 경우에는 별로 문제가 되지 않습니다.
문제는 특수문자와 각국 고유의 문자세트들입니다. 예를 들면, 독일어의 경우, 모음 위에 움라우트를 찍은 기호 등이 문자 세트에 들어 있을 거고, 프랑스어의 경우에는 모음 위에 악센트 기호 같은 점이 찍힌 문자들이나, c 밑에 물결표시 꼬리가 붙은 문자 등이 기본 문자 세트에 들어 있을 겁니다. 그리고 그들은 이런 기호들을 당연히 사용하겠죠. 그러나, 우리 나라에서는 그런 기호들을 사용하지 않으니, 그런 문자들이 우리의 표준 문자세트에 들어있을 리가 없습니다. 게다가, 텍스트 파일에는 오직 텍스트만 저장되는 것이 원칙이므로(유니코드 기반 텍스트 파일의 경우에는 예외가 있습니다), 이 텍스트 파일이 어떤 문자세트를 사용하여 작성된 것인지를 전혀 알 수가 없습니다! 사용된 문자들을 기반으로 하여 "추측"할 수 있을 뿐이죠.
CKII 의 제작사인 파라독스가 스웨덴 회사다 보니, 그들이 작성한 텍스트 파일에는 곳곳에 한글 윈도우에서 사용하는 표준 문자세트에 존재하지 않는 문자나 기호들이 존재합니다. 따라서, 한글 윈도우 환경에서 메모장과 같이 단순한 텍스트 에디터로 이 파일들을 열게 되면, 이런 표준 문자세트에 없는 문자들이 죄다 깨진 채로 읽어들여져 화면에 보여지게 됩니다. 특히 1바이트 기반의 문자세트를 사용하는 대다수의 서유럽권 국가들과 달리, 우리나라는 2바이트 문자세트를 사용하기 때문에(한글과 기본 한자를 표시하기 위해서 1바이트가 제공하는 256개 공간으로는 택도 없지 않겠습니까?), 이런 문자들이 마치 불완전한 한글 문자처럼 인식되어 망가진 채 표기됩니다. 만약 이런 파일을 수정한 후 다시 저장하면? 그 깨졌던 문자들이 (애초에 표시할 수 없는 문자이므로) 다시 한 번 깨져서 저장되거나 아예 삭제되어 저장되는 등의 비극이 벌어집니다. 이런 파일들을 CKII 런처가 읽게 되면 어떤 일이 벌어질까요? 알 수 없는 문자들이 막 나타나니 읽다 말고 이거 내가 읽을 텍스트가 아니잖아 하고 도로 뱉어버리는 경우가 생깁니다.
이런 문제의 발생을 막기 위해서, 텍스트 파일의 인코딩 문제를 고려해서 작성된 전문적인 텍스트 에디터가 필요해집니다. 메모장 같은 허접한 텍스트 에디터 말고요.
카페에서는 아크로에디터를 주로 권장하는 것 같고, CKII 위키에서는 NotePad++ 를 권장하고 있더군요. 저는 둘 다 써보지 않았기 때문에 잘 모르겠습니다. 제 경우는 EditPlus 를 사용하기 때문에.. 아무튼 이들 중에서 손에 맞는 에디터를 사용하시면 될 겁니다. 어찌 됐건 메모장은 절대로 사용하시면 안 됩니다.
EditPlus 와 같이 인코딩에 민감한 텍스트 에디터를 사용하시는 경우, 특히 원본 파일을 열 때에 [현재 인코딩에서 손실될 수 있는 문자가 포함되어 있습니다] 경고가 나타나면서 다른 인코딩을 선택할 것을 요구하는 메시지가 뜨는 경우가 있습니다. 이 때는 원본의 파일 또는 원본의 파일을 복사한 파일이라면 인코딩을 "Western European (Windows)" 을 선택해 주면 됩니다. 모드라면.. 저도 모르겠습니다. 한글 패치 모드의 언어 파일(.csv 파일)을 열 때에도 이 경고가 나올 때가 있는데, 이건 제어문자 때문입니다. 이 부분은 나중에 설명드릴 기회가 있습니다. 이런 파일은 아크로에디터를 쓰는 것이 이런 저런 고민을 할 필요가 없어서 편합니다. (저도 주 에디터가 EditPlus 이지만, 이런 파일들을 수정하는 문제가 가끔 생겨서, 아크로에디터도 함께 설치해 두고 있습니다.)
참고로, 새로 만든 파일을 저장하실 때에는 인코딩은 그냥 아무 생각 없이 ANSI 로 저장하시면 됩니다. 절대 유니코드나 UTF-8 인코딩은 사용하지 마세요. 못 읽습니다.
■ 두 번째 도구. 이미지 에디터
대부분의 작업이 텍스트 작업이지만, 아이콘 또는 이벤트 이미지 등과 같은 이미지 작업이 필요할 때가 있습니다. 이벤트 이미지의 경우 귀찮으면 게임에서 기본으로 사용되는 이미지 등을 그대로 사용하는 경우도 있습니다만, 일부 아이콘 작업의 경우에는 기존 아이콘 세트 파일의 편집이 필수적으로 요구되는 경우도 있습니다. 만약 맵 모딩을 하게 된다면 그래픽 작업은 당연히 필수 작업이 되죠. 이런 경우에 사용할 이미지 에디터가 필요합니다.
CKII 가 사용하는 이미지 파일들은 맵 등 일부의 경우를 제외하고는 DirectDraw Surface(.DDS) 라는 이미지 형식을 사용하고 있습니다. 따라서, 이 .DDS 파일을 읽고 편집할 수 있는 에디터가 필요합니다. 윈도우에서 기본으로 제공하는 그림판은 당연히 이 형식을 지원하지 않습니다. (걔한테 그런 거 바라시면 안됩니다.)
이런 2D 그래픽 작업에 있어서 가장 유명한 프로그램은 역시 Adobe Photoshop 이죠. 다만 포토샵의 경우 .DDS 파일을 읽고 쓰는 기능을 기본적으로는 제공하지 않습니다. 그러나 플러그인을 추가로 설치하여 .DDS 파일을 읽고 쓰는 기능을 추가할 수 있습니다. 포토샵용 .DDS 파일 플러그인은 아래의 경로에서 구하실 수 있습니다.
- 포토샵용 .DDS 플러그인 다운로드: 엔비디아 홈페이지
엔비디아 홈페이지에서 제공하지만, 그렇다고 엔비디아 그래픽 칩셋과 관련이 있는 건 아닙니다. 자신의 그래픽 카드와 관계 없이 사용하실 수 있어요. 거의 모든 포토샵 버전을 지원합니다.
허나, 포토샵이 뉘집 개 이름도 아니고, 수십에서 수백만원을 주고 구입해야 하는 상용 프로그램입니다. (현실은 개인 사용자의 경우 불법복사가 판을 치고 있지만요.) 게다가, 이런 작업에 포토샵"씩이나" 사용하는 것은 어찌 보면 닭 잡는 데 소 잡는 칼을 사용하는 격이나 마찬가집니다.
따라서, 개인적인 그래픽 작업에 사용할 수 있는 무료 프로그램들이 이것저것 등장했습니다. 그 중에서 GIMP 라고 하는 프로그램이 상당히 유명하죠. 오픈소스로 개발되고 있는 무료 2D 이미지 에디터입니다. 이 프로그램 역시 .DDS 파일을 직접 읽을 수는 없지만, 포토샵처럼 전용 .DDS 플러그인을 설치하면 .DDS 파일을 읽고 쓸 수 있게 됩니다. GIMP 용 .DDS 플러그인은 아래의 경로에서 구하실 수 있습니다.
- GIMP .DDS 플러그인 다운로드 : 다운로드 페이지
필자는 GIMP를 사용해본 일이 없습니다만, 포럼의 글을 보면 GIMP + 플러그인을 이용해서 게임에 사용되는 .DDS 파일을 편집할 수 있다는 포스팅을 몇 개 발견할 수 있습니다.
다만, 필자의 경우에는 이 가이드에서 설명하는 모든 그래픽 작업에 Paint.NET 이라고 하는 프로그램을 사용할 것입니다. 카페의 그러하오 님께서 추천해주신 프로그램으로, 세부적인 기능으로 들어가면 조금 미약한 부분이 있지만, 기본적인 편집 기능은 모두 제대로 제공하고 있으며, 무엇보다도 .DDS 파일을 별도의 플러그인 없이 기본으로 지원한다는 점이 매력적입니다. 이미지의 투명 부분 처리만 제대로 해 주면 알파 채널도 자동으로 처리를 해 주기 때문에 알파 채널 신경쓸 필요도 없고요. 이 프로그램은 Donationware2) 이지만, 기부하지 않는다고 하더라도 사용할 수 있는 기능에 제한이 없으므로, 사실상 무료 프로그램입니다.
- Paint.NET 프로그램 다운로드 : 공식 배포 페이지 (http://www.getpaint.net/)
위 페이지에 접속하신 후, 상단 메뉴의 Download 를 클릭하시고, 페이지 아랫쪽의 Download Now dotPDN 아이콘을 클릭하셔서 다운로드 페이지로 들어가십시오. 그리고 페이지 오른쪽의 Free Download Now 링크를 클릭하시면 됩니다. (중간의 다운로드 버튼을 가장한 광고에 낚이지 마시라는 이야깁니다.)
다만, 이 프로그램은 그 실행에 닷넷 프레임워크 4.5 를 필요로 하기 때문에, 윈도우 7 서비스팩 1 또는 그 상위 버전의 윈도우가 필요합니다. 따라서 윈도우 XP, 윈도우 비스타, 서비스팩 1이 설치되지 않은 윈도우 7 환경에서는 실행이 불가능합니다. (이들 윈도우 버전은 닷넷 프레임워크 4.5가 지원하지 않기 때문입니다.) 닷넷 프레임워크 4.5가 설치되지 않았다면 자동으로 이를 다운로드 받아 설치를 해 줍니다만, 만약 자동으로 설치되지 않는다면 아래의 링크를 이용하여 업데이트를 받아 설치하시면 됩니다.
4) 모딩 시 주의할 점
작업 시 아래 내용들은 반드시 염두에 두고 작업하십시오. 아래 내용들은 무의미한 시간 낭비와 각종 정신적 데미지를 예방 혹은 완화하는 데 큰 도움이 됩니다.
-
절대로 오리지널 게임 파일을 직접 수정하지 말 것: 모딩을 하다 보면 불가피하게 원본 파일의 내용을 수정해야 하는 경우도 생깁니다. 이 경우 원본 파일을 직접 수정하지 마시고, 원본 파일을 모드 폴더로 복사한 후에 복사한 파일을 수정하셔야 합니다. 원본을 훼손시키지 않기 위해서이기도 하고(원본을 건드렸는데 오류가 발생하면 되돌리기 귀찮아집니다), 게임 업데이트 시 원본 폴더의 내용은 스팀 업데이터가 아무런 확인 없이 밀어버리기 때문에 자칫하면 엄청난 시간과 노력을 들인 모드 파일이 손실될 수 있기 때문이기도 합니다. 모드 폴더의 위치 및 파일을 복사해 넣어야 하는 위치 등의 내용은 곧 알려드립니다.
-
원본 파일의 수정은 최소한으로: 위에서 내용 수정 시 어떻게 해야 하는지 알려드리긴 했습니다만, 애초에 원본 파일을 건드릴 일을 최소한으로 줄이는 것이 업데이트 시 호환성 문제에 부딪칠 확률을 줄여줍니다. 만약 내용 수정이 아닌 새로운 내용의 추가인 경우, 기존 파일은 냅두시고 모드 폴더 내에 새로운 파일을 만들어서 작성하십시오.
-
Validator를 사용하여 모드를 검증할 것: 기본적인 문법 오류는 포럼에 등록되어 있는 Validator 를 이용하면 잡아낼 수 있습니다. (특히 게임 실행 단계에서 일어나는 크래시의 경우 대부분 이런 오류..) 다만 오류가 아닌 것을 오류라고 잡아내는 경우도 많기 때문에, Validator의 출력 결과를 100% 신뢰하지는 마십시오. 또한 당연한 이야기지만, Validator 는 인공지능을 가진 생명체가 아니므로 논리 오류는 잡아내지 못합니다.
위 링크는 파라독스 포럼의 링크인데, 위 게시물은 파라독스 홈페이지에 가입하여 포럼에 연동한 후, 포럼에서 스팀 클라이언트에서 알려주는 CKII 오리지날 게임의 시리얼 넘버를 등록해야만 위 게시물에 접근이 가능합니다. (DLC의 시리얼 넘버는 몇 개를 등록해도 메타 서버에 등록되지 않기 때문에 접근 권한이 주어지지 않습니다. 전 이걸 몰라서 가입 후에도 일주일 이상 포럼 이용을 못 했었어요. 그냥 아무거나 등록하면 되는 줄 알았는데..)
-
주석을 적극적으로 사용할 것: 작성한 코드는 조금만 길어져도 나중에 수정하려고 보면 굉장히 읽기가 어렵습니다. 특히 코딩의 신이 강림하여 작성한 코드3)의 경우, 나중에는 해독 자체에 애를 먹는 경우도 생깁니다. 코드에서 # 뒤의 내용은 개행문자(줄바꿈 문자)가 나올 때까지 모두 주석으로 해석되어 무시되므로, 간단하게라도 꼭 설명을 달아 두십시오. 특히 이벤트 파일의 경우 현재 이 이벤트의 FROM과 ROOT 스코프가 누구를 의미하는지(해당 부분에서 설명하겠습니다!) 정도는 꼭 기록을 해 두시는 것이 정신건강에 좋습니다. (저도 정말 엄청나게 실수합니다.)
-
좋은 텍스트 에디터를 사용할 것: 더 이상 말씀드릴 필요가 있을까요?
2. 모드 폴더
이제 본격적으로 내용을 보도록 할까요. 여기서는 모드 파일이 저장되는 위치인 모드 폴더의 위치와 그 구조, 그리고 모드 파일이 적용되는 규칙과 관련된 사항을 확인하도록 하겠습니다.
1) 모드 폴더의 위치 및 그 구조
모드 데이터들은 원본 게임 데이터와 분리되어 별도의 위치에 저장하게 됩니다. 이를 통해 원본 파일과 모드에서 사용하는 파일이 서로 뒤섞이지 않도록 하죠. 일반적인 윈도우즈 유저라면, 모드 파일은 내 문서 폴더 아래에 저장됩니다. 구체적으로, 내 문서\Paradox Interactive\Crusader Kings II\mod 이하의 위치입니다. 여기에 개별 모드에서 사용하는 파일들이 들어갈 폴더를 만들고, 해당 폴더 이름과 같은 이름의 모드 설정 파일 (폴더 이름.mod)을 두면 CKII 런처가 알아서 찾아서 띄워줍니다. 예를 들면, 우리가 흔히 사용하는 CKII 의 한글 패치 모드 파일들의 경우, "내 문서\Paradox Interactive\Crusader Kings II\mod" 폴더에 Korean.mod 파일이 존재하게 되며, 같은 폴더 내에 Korean 이라는 폴더를 만들어 그 안에 나머지 모드 파일들을 몰아넣게 되는 것이죠.
앞으로 CKII가 설치된 경로의 최상위 폴더는 [원본 루트 폴더], 특정 모드가 설치된 경로의 최상위 폴더는 [모드 폴더], [폴더 이름.mod] 파일이 있는 폴더를 [모드 루트 폴더]로 부르겠습니다. 예를 들면, 제 모드인 Nemo Mod 의 경우, 내 문서\Paradox Interactive\Crusader Kings II\mod\Nemo 에 위치하게 되는데, 이 위치를 지칭하는 것을 [모드 폴더]라고 부르겠다는 의미입니다.
기본적으로, 모드 폴더 내의 구조는 CKII 원본 루트 폴더의 구조와 같습니다. 즉, 모드 폴더의 구조와 원본 루트 폴더의 구조는 서로 정확하게 1:1 대응됩니다. 따라서, 어떤 요소를 모드에 추가했다면, 그 파일은 그 파일이 있어야 할 폴더의 위치에 대응하는 위치에 복사해 넣어주면 됩니다.
폴더 구조. 왼쪽이 원본 게임 폴더. 오른쪽은 한글 패치 모드의 폴더. 이런 식으로 같은 구조를 사용합니다.
예를 들면, 디시전 파일들은 [원본 루트 폴더]\decisions 의 경로에 들어 있는데, 모드에 특정한 디시전을 추가하려면 [모드 폴더]\decisions 폴더 내에 추가한 디시전 파일을 넣어주면 된다는 겁니다.
2) 같은 이름의 파일이 중복되는 경우4)
■ 원본과 모드 사이에 같은 이름의 파일이 존재하는 경우
만약, 원본과 모드의 같은 위치에 같은 이름의 파일이 존재한다면 어떻게 처리될까요? 원칙적으로, 파일의 이름이 겹칠 경우 모드에 저장된 파일이 우선시되고, 원본의 파일은 무시됩니다. (모드라는 게 무엇인지를 생각해보면 어쩌면 이건 당연한 거죠.)
이 규칙을 이용하여 원본 파일의 내용을 수정할 수 있습니다. 원본 파일을 모드 폴더의 같은 위치로 복사한 후 모드 폴더로 복사한 파일을 수정하는 거죠. 그러면 원본의 같은 이름의 파일 대신 모드 폴더의 같은 이름의 파일이 적용될 것입니다. 수정한 부분, 추가한 부분, 삭제한 부분들이 모두 정확하게 적용이 됩니다.
관련되는 내용으로, 만약 원본 파일을 모드 폴더로 복사한 후 그 내용을 깨끗이 지워 0바이트 파일로 만들어버리면 어떤 일이 벌어질까요? 일단 모드 폴더에 "파일이 존재" 하기 때문에 원본 파일은 무시되고 모드 폴더의 파일이 읽어들여지지만, 내용이 전혀 없기 때문에 아무 것도 적용되지 않겠죠. 즉, 특정한 원본 파일을 삭제한 것과 같은 효과가 발생합니다. 이 방식을 사용하여 원본 파일을 그대로 놓아둔 상태에서도 원본의 특정한 파일의 내용을 완전히 배제하는 것이 가능합니다.
■ 서로 다른 두 모드 사이에 같은 이름의 파일이 존재하는 경우
그렇다면, 이번엔 원본 파일이 아니라, 여러 개의 모드를 실행하는 경우에 각각의 모드들 사이에 겹치는 파일이 존재하는 경우를 생각해 봅시다.
보통 여러 개의 모드를 동시에 적용하는 것은 여러 가지 문제를 발생시킬 수 있기 때문에 권장되지는 않습니다. 그러나 한글패치모드 사용자의 경우에는 뭔가 다른 모드를 하나라도 더 사용하게 되면 최소한 2개의 모드를 동시에 실행하는 셈이 되므로, 이 내용은 모더가 아닌 일반 사용자의 입장에서도 알아두는 것이 좋겠습니다.
이 경우, 원칙적으로는 가장 먼저 읽어들여진 모드의 파일이 유효하고 나머지는 무시됩니다. 예를 들면, A,B,C 세 개의 모드의 동일 위치에 똑같이 landed_titles.txt 파일이 존재한다면, 셋 중 가장 먼저 읽어들여진 파일이 유효하고 나머지는 모두 무시됩니다. 따라서 무시되는 파일의 내용을 아무리 수정해 봐야 적용이 안 됩니다. 특히 이 부분은 한글 패치 모드를 사용하시면서 다른 모드를 사용하실 경우에 문제가 됩니다. 한글 패치 모드가 먼저 읽히느냐, 다른 모드가 먼저 읽히느냐에 따라서 어느 것이 적용되느냐의 문제가 발생하게 되거든요.
그럼 여러 개의 모드를 선택한 경우 읽어들여지는 순서는 어떻게 될까요? 원칙적으로 모드 이름의 알파벳 순서 - 모드 목록에서 위에서 아래 - 로 읽혀집니다.
다만, 예외적으로 나중에 읽어들여진 모드의 파일이 유효하게 되는 경우가 있습니다. 이에 대해서는 조금 뒤에 모드 설정 파일을 설명드리면서 말씀드리겠습니다.
- 확인 퀴즈. 원본, 모드1, 모드2에 전부 같은 파일이 존재하고, 모드1, 모드2가 모두 실행된 경우 어떤 파일이 최종적으로 적용될까요? 원본과 모드 간에는 모드가 우선하므로 원본 파일은 제일 먼저 탈락, 모드들 간에는 먼저 읽혀진 파일이 우선적용되므로 모드1과 모드2 중 로드 우선 순위가 있는 모드의 파일이 최종적으로 적용될 겁니다. 모드 우선 순위는 원칙적으로 알파벳순입니다. 다만 이 순서가 변경되는 경우가 존재하긴 합니다. 이는 다음에 설명드리겠습니다.
3) 서로 다른 이름의 파일에서 내용이 중복되는 경우
이 내용은 조금 어렵습니다. 만약 잘 이해가 되지 않는다면, 그냥 이 내용은 없다고 생각하고 넘어가세요. 알면 꽤 유용하게 써먹을 수 있는 내용이지만, 몰라도 큰 지장이 없는 내용입니다. 오히려 잘못 이해하시면 알 수 없는 오류에 머리털을 쥐어뜯는 상황이 올 수도 있습니다. (그래서 쓸까말까 고민했습니다.) 차라리, 어느 정도 모딩에 대해서 알고 난 후에 다시 돌아오셔서 읽으시면 더 이해가 쉬울 수 있습니다.
■ 문제의 소재
CKII 는 같은 종류의 데이터를 동일한 폴더에서 정의하는 방식으로 같은 범주의 내용을 설정하는 방식을 사용합니다. 예를 들면, common/buildings 폴더 내의 텍스트 파일은 그 파일 이름에 관계 없이 모두 건물 정의 파일로 간주한다는 것입니다. 따라서, 특정 범주에 대한 새로운 내용을 추가하는 경우에는 동일한 폴더 내에서 새로운 파일을 만들고 그 안에 새로운 내용을 추가하면 됩니다. (원본의 내용이 변경되지 않는다면 이렇게 하는 것이 버전 관리에도 좋습니다.) 이 부분은 전혀 문제가 아닙니다.
문제는, 특정 범주에 대해서 일부 내용을 수정해야 하는 경우입니다. 제가 앞에서 말씀드리길, 기존의 내용을 수정할 경우에는 원본을 모드 폴더로 복사한 후 그 복사한 파일을 수정하면 된다고 말씀드렸을 겁니다. 이렇게 하면 원본과 모드의 파일명이 같기 때문에 이미 앞에서 설명드린 대로 원본의 내용이 무시되므로 이 경우도 문제가 안 됩니다.
그런데, 이 사람은 그렇게 하지 않았습니다. 특정한 내용을 수정하기 위해, 모드 폴더의 같은 위치에 다른 이름의 파일을 생성한 후 거기에 수정할 내용을 추가해버린 겁니다. 잘 이해가 안 되시죠? 이렇게 생각해 보세요. 원본에 12000 이라는 이벤트 코드를 가진 A.txt 라는 이벤트 파일이 있습니다. 그런데, 12000 이벤트의 내용이 영 맘에 안 들어서, 모드 폴더의 같은 위치에 B.txt 라는 이벤트 파일을 만든 후, 거기에 12000 이벤트의 내용을 입맛대로 다시 적어서 저장해 버린 것입니다. 자, 어떻게 될까요?
A.txt 와 B.txt 는 원본-모드 관계이지만 파일명이 서로 다르기 때문에, 이들은 다른 파일로 인식되어 둘 모두 읽혀지고 정상적으로 적용됩니다. 그러나, 두 파일 모두에 12000 이라는 이벤트 ID 를 가진 이벤트가 존재하기 때문에, 이들 사이에 충돌이 발생합니다. (원래 이벤트 ID 는 유니크해야 하며, 겹치면 안 됩니다. 나중에 설명드리겠지만, 기본 중의 기본이니 미리 알아 두세요.) 그 결과, 12000 번 이벤트는 망가지고(croak), 정상적으로 동작하지 않게 됩니다.
자, 문제는 여기에 있습니다. 한번 머리를 굴려 봅시다. 위와 같은 바보 짓을 한 사람은 어째서 저런 짓을 한 걸까요? 참고로, 이 사람은 제가 위에서 설명한, 원본 파일의 내용을 수정하려면 그 파일을 그대로 모드 폴더로 복사한 후 그 파일을 수정하라는 내용을 알고 있는 사람입니다. 알고 있지만, 어떤 이유가 있어서 저런 짓을 한 것입니다. 물론 의도대로 이루어지지는 않았지만요.
■ 왜 그랬을까?
이런 생각을 해 봅시다. 원본의 내용을 수정하는 일반적인 방법인, 원본 파일을 모드 폴더로 복사한 후 모드 폴더의 파일을 수정하는 방법은 부담없이 사용할 수 있지만, 대신 파일 내용의 (극히) 일부만을 수정했음에도 불구하고 파일 전체를 모드 폴더에 복사해 놓았기 때문에 디스크 용량 차원에서 비경제적입니다(물론 요즘 하드디스크 용량을 생각하면 이건 경제논리를 들이댈 것은 아니죠). 게다가, (이 부분이 중요한데) 업데이트 등으로 복사했던 원본 파일의 어딘가가 변경되면 수정한 부분이 변경되지 않았더라도 해당 파일을 다시 복사한 후에 다시 패치를 해야 하죠. (물론 변경된 부분이 어딘지 알고 있다면 그 부분만 직접 패치하면 되겠지만..) 번거롭습니다.
따라서, 파일 단위가 아닌, 특정 파일의 특정한 구역 단위로, 해당 구역만을 다른 이름의 파일에서 정의하고 수정할 수 있다면, 원본 파일 전체를 복사하는 수고를 하지 않아도 되고, 그 내용을 담은 원본 파일이 업데이트되더라도 수정한 부분 자체가 업데이트된 것이 아닌 이상 버전업 때마다 관련 파일을 수정해야 하는 수고도 덜 수 있습니다. 이제 상황이 이해가 되시죠?
■ 가능한 경우
원칙적으로, 위와 같은 수정 방법은 앞에서 보셨다시피 현재는 인정되지 않습니다. 특히 이벤트와 디시전의 경우에는 여지없이 깨져나갑니다. 아예 해당 이벤트가 먹통이 되어버려요. 따라서 이와 같은 방법을 사용하시면 안 됩니다.
그러나, 일부의 경우 이와 같은 수정방법이 통하는 경우가 있습니다. 아래는 제가 실험 후 정상적으로 적용(override)되는 것을 확인한 것들입니다.
-
종교 설정 파일(/common/religions) : 원본의 종교 관련 내용은 하나의 종교 레벨에서 모드 파일의 내용이 정확하게 합쳐지고 적용됩니다. 예를 들어, 원본의 파일이 00_religions.txt 파일인데, 모드 파일에 01_religions.txt 파일을 만들고, 이 파일 안에 기존 종교에 대해 다른 내용의 설정을 넣었다고 가정해 봅시다. 이 경우 CKII 는 새로 설정된 종교에 대해서 완벽하게 모드 파일의 내용으로 대체(override)합니다. 따라서, 원본과 모드 사이에서, 원본의 일부 내용만을 수정하는 새로운 파일을 작성하여 원본 내용의 수정이 가능합니다. 물론 특정한 종교 그룹에 새로운 종교를 새로운 파일을 작성하여 추가해 넣는 것도 가능합니다.
-
On-Actions 설정 파일(/common/on_actions) : 원본과 모드 사이에서, 섹션 단위로 모드의 내용이 적용(override)됩니다. 개별적인 on_actions = { } 단위로 모드의 다른 파일에서 수정이 가능합니다. 모드에서 추가된 내용은 정상 적용되고, 모드에서 삭제된 내용도 정상적으로 배제됩니다.
아래는 제가 테스트해 보지는 않았지만, 위키에서 정상적으로 대체됨이 확인된 것입니다.
- 인터페이스 그래픽 설정 파일(/interface/*.gfx) : .gfx 파일들은 알파벳 순서대로 읽혀지며, 마지막에 읽혀진 설정으로 대체(override)된다고 합니다. 단, "/gfx/interface/종교 그룹" 폴더의 이미지가 타겟인 경우에는 모드에서 수정이 안 된다고 합니다.
3. 모드 설정 파일
1) 모드 설정 파일의 위치
CKII 런처가 모드를 구성하는 파일들을 정상적으로 읽을 수 있도록 런처에게 정보를 제공해 주는 파일이 바로 모드 설정 파일입니다. 앞에서 말씀드린 바와 같이, 모드 루트 폴더(내 문서\Paradox Interactive\Crusader Kings II\mod)의 위치에 저장되며, 일반적으로 폴더와 같은 이름으로 설정합니다.
사소한 내용이지만 주의할 점. 모드 설정 파일의 이름에는 공백 문자(스페이스)가 들어가지 않도록 해야 합니다. 공백 문자가 들어가면 CKII 런처가 자동으로 모드를 선택해 주지 못하므로(그래서 실행할 때마다 모드 선택이 자동으로 해제됩니다), 게임을 실행할 때마다 모드를 직접 선택해 주어야 하는 불편함이 있습니다.
2) 모드 설정 파일의 구조
이 파일의 내용은 굉장히 심플합니다. 아래의 내용은 제 Nemo Mod 의 모드 설정 파일인 Nemo.mod 파일의 내용입니다.
name = "Nemo" path = "mod/Nemo" user_dir = "Nemo"
- name 은 런처가 표시하는 모드 이름을 지정합니다.
- path 는 모드가 어느 폴더에 저장되어 있는지를 알려주는 항목입니다.
위 두 가지가 필수 항목이며, 그 외의 항목은 없어도 됩니다. 그 외에 설정할 수 있는 항목은 아래와 같습니다.
- user_dir 은 세이브 파일 등을 어디에 저장할 것인지를 지정해 주는 항목인데, 위와 같이 지정하면 세이브 파일 등의 데이터는 내 문서\Paradox Interactive\Crusader Kings II\Nemo 폴더 이하에 저장되게 됩니다. (제 경우도 설정되어 있죠.)
- replace_path 는 의외로 중요할 수 있는 항목입니다. 모드 내의 특정 폴더를 지정하는데, 이것이 지정되면 지정된 폴더 내의 모든 원본 파일은 무시되며, 오직 모드 폴더 내의 파일만 읽어들여집니다.
이 옵션은 원본 폴더 자체를 무시해버린다는 점에서 다른 파일 대체 방법과 차이가 있습니다. 예를 들어, replace_path = "history/provinces" 라고 지정해버리면, 원본 데이터의 모든 프로빈스 설정 데이터는 읽어들여지지 않고, 모드에서 지정한 프로빈스 설정 데이터만 읽어들여집니다. 따라서, 원본의 특정 설정을 (수정이 아니라) 아예 게임에서 빼 버리고 싶은 경우에 사용할 수 있는 선택지입니다.
이런 배제 방법은 사실 일반적인 모딩에서는 거의 쓸 일이 없습니다. 스케일이 매우 큰 범주의 모딩을 하는 경우에 사용될 가능성이 있죠. (아예 맵을 뜯어 고치고 새로운 맵을 투입한다던가 하는 경우) 다만, 이렇게 원본 파일을 대체하는 것은 언제나 잠재적인 호환성 문제를 일으킬 수 있기 때문에, 최소한으로만 사용하시고 버전업 때마다 변경 사항을 꼭 확인하시기 바랍니다. 또한, 특정 폴더 내의 일부 파일만을 배제하고 싶은 경우에는 배제할 파일을 제외한 나머지 나머지 파일들을 수정 여부와 관계 없이 모드 폴더로 복사해 두어야 게임을 플레이하는 데에 지장이 없습니다. 만약, 예를 들어 한 폴더에 수백 개의 파일이 있는데 그 중 소수의 파일만 실행에서 배제하고 싶은 경우, 이 옵션을 설정하고 나머지 수백 개의 파일을 모드 폴더로 복사하는 비효율적인 방법을 쓰지 마시고, 배제하고 싶은 파일과 같은 이름의 내용 없는 파일을 모드 폴더의 같은 위치에 복사하는 방법을 쓰시기 바랍니다. (원본보다 모드의 파일이 우선하므로 내용이 있는 같은 이름의 원본 파일이 무시되는 결과가 되니까요.)
- dependencies 옵션은 런처에게 이 모드가 실행되기 위해서는 다른 모드가 더 필요하다는 사실을 알려주는 옵션입니다. 예를 들면, 제 Nemo Mod 의 경우 한글로 작성되어 있기 때문에, 반드시 한글 패치 모드와 함께 실행되어야 합니다. 이 점을 런처에게 알려줄 수 있는 거죠. dependencies = { "Korean" } 와 같이 적을 수 있습니다.
다만, 이 옵션을 가지고 런처가 오류 검사를 하지는 않습니다. 예를 들어, 제 모드에서 위와 같이 옵션을 주었는데, 제가 실행할 모드 목록에서 Korean 모드를 체크하지 않은 상태에서 제 모드만 체크하고 실행했다고 가정해 봅시다. 그럼 런처가 Korean 모드를 자동으로 읽어 주거나, 의존성이 설정된 모드를 체크하지 않고 실행했다고 경고 메시지 등을 출력해 줄까요? 전혀 아닙니다. 그렇다면 이걸 설정하는 의미가 대체 무엇인가 하는 의문이 자연스럽게 떠오르게 되죠.
이 옵션의 설정 의의는 전혀 다른 데에 있습니다. 앞에서 설명한, 모드와 모드 사이에 파일이 겹치는 경우에 어느 쪽을 적용할 것인지를 설정하는 방법인 거죠. 예를 들면, 제 Nemo Mod 의 설정 파일에 위와 같이 설정했다고 합시다. 그러면 런처는 모드 파일을 읽을 때에, dependencies 설정에서 지정된 Korean 모드 파일을 먼저 읽어들여서, 이들 모드 간의 관계에 있어서만큼은5) Korean 모드를 원본과 같이 취급합니다. 즉, Korean 모드와 제 Nemo Mod 사이에는 Korean 모드가 원본이고, Nemo Mod 가 모드인 것처럼 취급하는 거죠. 그 결과, 두 모드 사이에 겹치는 파일이 존재하면 무조건 Nemo Mod 파일이 우선 적용되는 결과가 됩니다. 제 모드의 이름은 Nemo 이고, 한글 모드의 이름이 Korean 이기 때문에, 별도의 설정이 없다면 알파벳 순서대로 적용되는 규칙상 무조건 Korean 모드의 설정이 우선 적용될 것이어서, 이런 경우 특히 적용 순서를 변경하는 효과가 있게 될 겁니다.
그렇다면, 제 Nemo Mod 에는 왜 이 설정이 없을까요? 특히 설정의 의미가 있다고 설명하면서도 설정을 하지 않은 이유는? 제 Nemo Mod가 한글 모드를 전제로 하기는 하지만, 한글 패치 모드의 파일들과 제 모드의 파일들이 겹치는 파일이 없기 때문에 굳이 설정을 하지 않았습니다. 사실 있건 없건 설정하는 게 맞는데, 초기 버전에 설정을 하지 않았다가 이제 와서 설정을 하게 되면 user_dir의 설정과 관련한 살짝 미묘한 다른 문제가 발생을 하기 때문에, 기존에 제 모드를 사용하시던 분들께 불편을 드릴 수가 있어서, 이후 버전에서도 설정을 하지 않았습니다.
이제 모드의 기본적인 내용들은 대충 설명을 한 것 같군요. 이제 세부적인 내용을 채워도 될 것 같습니다. 앞에서 말씀드린 대로 일단 일반 디시전 파일의 모딩에 관한 내용을 설명드리면서, 모딩에 있어서 중요한 주요 개념들을 함께 설명드리는 시간을 갖도록 하겠습니다.
덧붙임. 다시 한 번 말씀드리지만, 이 글의 기획 의도상, 위키와 같이 필요한 내용을 한 번에 찾아보기 쉬운 형태로 쓰여지지는 못할 것 같습니다. 따라서, 특히 초심자의 경우 일부를 발췌독하면서 필요한 부분을 바로 찾아서 사용하는 식으로 사용하기는 어려울 수 있습니다. 뒤에 서술되는 내용의 상당수는 앞의 내용을 알고 있어야 그 맥락을 이해할 수 있는 경우가 반드시 생길 거거든요.
따라서, 이왕 모딩을 한번 해 보겠다는 생각이 드셨다면, 이 시리즈의 글 전체를 일독해 보시기 바랍니다. 제 글이 모드의 모든 부분을 다 다루지는 못할 것입니다만, 그래도 상당히 많은 부분을 건드리게 될 것이기 때문에, 보이게 되는 만큼 건드릴 수 있는 범위가 더 넓어질 것입니다. 무엇보다, 수많은 파일들이 어떤 식으로 연관을 맺고 있는지를 알게 되면 접근이 매우 쉬워질 겁니다.
1) 그래서 루아 스크립트를 사용할 줄 아는 게이머의 경우 게임의 꽤 깊은 부분까지 수정이 가능했죠.
2) Donationware 는 보통 따로 비용 지불 없이 사용할 수 있는 프로그램이지만, 만약 이 프로그램을 사용해 보고 그 성능에 만족했다면 사용자의 자유 의사로 개발자에게 일정 금액을 기부하도록 권장되는 프로그램입니다. (기부 여부에 상관 없이 모든 기능을 사용할 수 있는 경우도 있고, 기부자에게 일정한 특전을 주는 경우, 기부하지 않은 경우 몇몇 기능을 사용할 수 없도록 막아놓는 경우도 있습니다.)
3) 정말 이럴 때가 있습니다. 평소 같으면 생각지도 못한 방법으로 절묘하게 코드를 디자인하는 자신을 발견하게 됩니다. 나중에 봤을 때 이게 내가 작성한 코드가 맞나 싶을 정도로요.
4) 과거에는 이에 대한 논리만 있을 뿐 문서로 된 명확한 설명이 없었습니다만, 최근 위키의 모드 총론 문서가 수정되면서 명확하게 관련 내용이 들어갔습니다. (사실상 위키의 내용은 파라독스사의 공식적인 문서나 마찬가지의 권위를 가지므로, 이제 이에 대해서 골치 썩일 필요는 없겠습니다.) 이 부분은 그런 이유로 좀 더 명확하게 수정되었습니다.
5) 사실 이 설명은 논란의 여지가 있습니다. 이해하기 쉽게 설명드리기 위해 이렇게 설명드립니다만, dependencies 가 설정된 경우에 이것이 두 모드 사이에서만 영향을 미치는지, 아니면 읽기 순서 자체를 변경하게 되는 결과 다른 모드와의 관계에서도 그 적용 순서가 변경되는 결과가 되는지는 저도 테스트를 해 본 적이 없습니다. 예를 들어, A,B,C,D 네 개의 모드를 동시에 실행하고, A 모드에 dependencies = C 라고 설정된 경우, A 보다 C 가 먼저 로드되는 결과 C가 B에 대해서도 먼저 읽혀진 효과를 발생시키는지(D는 어차피 이러나 저러나 가장 늦게 로드되니까 상관없고), 아니면 이 설정은 A와 C 사이에서만 영향을 미쳐서 B와 C 사이에는 B가 먼저 읽어들여진 효과가 발생하는지는 알 수 없다는 것입니다. 애초에 이렇게 여러 개의 모드를 혼용해서 사용하는 경우는 그다지 권장되는 경우는 아니고, 그럼에도 불구하고 이렇게 많은 모드를 혼용하는 경우라면 대개 그 모드들이 소수의 파일만을 가진 미니 모드인 경우가 많을 테니 파일이 그렇게 신나게 겹치지도 않을 거라, 이런 것까지 고민해야 할 건 아니라고 봅니다.
댓글
댓글 리스트-
작성자hun4476 작성시간 15.02.13 추천-!
-
작성자가이사 작성시간 15.02.13 잘 읽었습니다 추천합니다
-
작성자통장 작성시간 15.02.13 이 양은 대체 ㄷㄷㄷ 잘읽었습니다 팁에 올라가야될 내용이네요
-
작성자우등생렐티 작성시간 15.02.20 정독했습니다. 모딩한답시고 만지작 거리다 포기하고 다시 만지작거리다 포기하고
반복하던 저에게 너무나도 좋은글이 될듯 ㅠㅠ 감사합니다. 진짜로.
뭔가 애매하게 알고있던 부분이나 아예 모르던 부분을 많이 알아갑니다.