[CK2 모딩 팁]내멋대로 쓰는 Crusader King 2 모딩 매뉴얼 (6) 플래그, 디시전 메시지, 디시전 아이콘 - 개정판 (2015/05/01 수정)
작성자tacitus작성시간15.02.13조회수2,626 목록 댓글 5내멋대로 쓰는 Crusader Kings 2 모딩 매뉴얼 - 개정판
4. 디시전 파일의 작성
이번 회도 중간까지는 디시전을 빌어다 모딩의 기초를 설명하는 항목입니다. 익혀두면 매우 유용하게 사용할 수 있는 내용들이므로 잘 읽어 보십시오. 내용은 어렵지 않을 것입니다. 디시전 아이콘의 편집 부분은 개정판 이전 20회에 있었던 내용을 가져와 통합하였습니다.
(7) 플래그
플래그라는 제목을 보고 옆나라 연애시뮬레이션의 플래그를 떠올리신 분들은... 음.. 뭐라 말씀을 못 드리겠네요. 취향이니까 존중해드려야죠. 근데 사실 별로 다르지가 않아요. 그런 분들께는 이 내용은 사실 설명할 필요도 없을 듯도 합니다.
이미 한참 지난 일인데, 웬수같은 봉신들을 내 맘대로 작위를 뺏기 위해서 치트성 디시전을 한번 만들어보자고 했던 적이 있었죠. 그런데 말입니다. 아주 조금 남은 양심에 가책이 느껴지는 겁니다. 그래서 고민합니다. 내가 한 번은 내 멋대로 작위를 뺏지만, 같은 캐릭터에게 두 번은 못 뺏도록 코드를 만들어보자. 거 참 훌륭한 양심입니다.
어떻게 하면 될까요? 해당 캐릭터에게 "얘는 한번 작위를 뺏겼던 놈" 이라고 표시를 해 두면 될 일입니다. 이런 표시를 하기 위해서 사용하는 것이 바로 플래그입니다. CKII 에서는 두 종류의 플래그를 지원하는데, 전역 플래그(Global Flag)와 캐릭터 플래그(Character Flag)가 그것입니다.
사실 캐릭터와 전역 이외에, 타이틀이나 프로빈스, 가문 등에 대해서도 설정할 수 있습니다. 언제부터? 타이틀의 경우는 2.3.x 부터, 그 외에는 예전부터요. ^^ 실제 원본에서도 사용 합니다. 다만 제가 사용해본 적이 없어서 설명은 따로 드리지 않습니다. 캐릭터 플래그에 대해서 드리는 설명과 똑같이 적용되므로 사실 더 설명드릴 내용도 없습니다.
전역 플래그는 문자 그대로, 현재 진행되고 있는 게임 전체의 레벨에서 설정되는 플래그입니다. 누가 세팅하든 세팅하는 순간 어디서나 참조될 수 있고, 또 삭제될 수도 있습니다. A라는 캐릭터가 AA 라는 전역 플래그를 만들었다면, B건 C건 누구라도 이 AA 라는 플래그를 참조할 수 있고, 삭제할 수도 있습니다. 이런 특성 때문에, 게임 전체적으로 적용되는 설정 사항 등, 어떤 스코프에서 호출해도 확인할 수 있어야 하는 사항은 전역 플래그를 이용하여 표시해두는 것이 좋습니다.
- set_global_flag : 현재의 게임에 대하여 전역 플래그를 설정합니다. (스코프 무관)
- has_global_flag : 현재의 게임에 대하여 전역 플래그가 존재하는지를 확인합니다. (스코프 무관)
- clr_global_flag : 현재의 게임에 대하여 전역 플래그를 삭제합니다. (스코프 무관)
캐릭터 플래그는 특정한 캐릭터의 정보 아래에 설정되는 플래그입니다. 완벽하게 해당 캐릭터에 개인적인 정보가 되므로 그 캐릭터의 스코프 내에서만 이 정보를 참조하거나 삭제할 수 있고, A 라는 캐릭터가 AA 라는 캐릭터 플래그를 자신에게 설정했더라도, B 라는 다른 캐릭터는 이와 아무런 상관이 없습니다. 전역 플래그의 경우 같은 이름의 플래그는 전체 게임에 오직 하나만 있을 수 있다면, 캐릭터 플래그는 같은 이름의 플래그가 최대 캐릭터 갯수만큼 존재할 수도 있다는 이야기가 되겠죠. 이런 특성으로 인해, 특정한 캐릭터에만 적용되는 내용, 예를 들면 이 캐릭터가 특정한 이벤트를 수행했었는지 등의 내용을 체크할 때에 캐릭터 플래그를 이용하면 좋습니다.
- set_character_flag : 현재 캐릭터 스코프에 대하여 캐릭터 플래그를 설정합니다.
- has_character_flag : 현재 캐릭터 스코프에 대하여 캐릭터 플래그가 존재하는지를 확인합니다.
- clr_character_flag : 현재 캐릭터 스코프에 대하여 캐릭터 플래그를 삭제합니다.
그럼 실제로는 어떻게 세팅하면 될까요? 3회의 코드를 다시 가져와서, 캐릭터 플래그를 이용하여 조금 손질해 보겠습니다.
vassal_decisions = { test_decision = { from_potential = { ai = no in_command = no prisoner = no NOT = { trait = incapable } } potential = { is_alive = yes prisoner = no NOT = { trait = incapable } is_landed = yes NOT = { has_character_flag = mod_already_revoke } } allow = { age = 16 trait = ambitious } effect = { FROM = { hidden_tooltip = { character_event = { id = TST.1001 } } } ROOT = { hidden_tooltip = { set_character_flag = mod_already_revoke character_event = { id = TST.1002 } } } } ... } }
potential = { } 섹션에 3회에서 host = { } 와 liege = { } 로 적었던 봉신 조건이 is_landed = yes 로 변경되었습니다. is_landed 조건문은 해당 캐릭터가 영지를 가지고 있는지를 확인하는 조건문입니다. (영지는 남작령 이상입니다.) 따라서, 이제 확실히 백수 가신은 제외되고 봉신들만 범위에 들어오게 됩니다.
두 줄이 더 들어간 게 눈에 띄시나요? potential 섹션에 mod_already_revoke 라는 캐릭터 플래그가 없어야만 한다는 조건이 들어갔고, effect 섹션의 ROOT 스코프 안에서는 봉신 캐릭터에게 같은 캐릭터 플래그를 세팅하는 명령이 추가되었죠. 이제, 이 디시전을 실행하는 순간 실행된 봉신에게 mod_already_revoke 라는 캐릭터 플래그가 붙을 것이고, 앞으로 이 봉신은 지금 설정된 캐릭터 플래그의 영향으로 인해 potential 섹션의 조건을 충족하지 못하게 되기 때문에, 생사람 잡혀서 작위를 털리는 불상사는 겪지 않게 될 겁니다. 플래그는 이런 식으로 사용합니다. ^^
일반적으로, 정상적인 게임 환경에서 어떤 캐릭터(플레이어 캐릭터 포함)에게 어떤 플래그가 설정되어 있는지는 플레이어가 확인할 수 있는 방법이 없습니다. 단, 캐릭터 플래그에 한해서는 콘솔창에 charinfo 를 입력하면 확인이 가능합니다. 전역 플래그는 그나마도 방법이 없어요. 그래서 디버그 용도로 사용하실 때는 전역 플래그를 사용하시면 좀 불편합니다.
얼마나 알고 있는지 한번 확인을 해 볼까요? 만약 has_character_flag, set_character_flag 대신에, has_global_flag, set_global_flag 명령을 사용하면 어떤 결과가 벌어질까요? 전역 플래그를 설정하기 때문에 최초로 이 디시전을 사용한 순간 전역 플래그 mod_already_revoke 가 세팅되고, 이 플래그는 특정 캐릭터가 아닌 전체에 대해서 참조가 가능하기 때문에 모든 봉신 캐릭터가 potential 의 조건에 걸리게 되어 플레이어는 다시는 이 디시전을 사용할 수 없게 되겠죠. 즉, "특정인에 대해 1회" 가 아니라, "이 게임에서 딱 한 번" 사용할 수 있는 디시전이 되는 겁니다.
그럼 이건 어떨까요? 캐릭터 플래그를 그대로 쓰되, has_character_flag 를 from_potential 에, set_character_flag 를 effect 의 FROM 스코프 안쪽으로 옮겨버린다면? 문제의 캐릭터 플래그가 플레이어 캐릭터에 생성되고, 플래그가 있는지 여부도 플레이어 캐릭터에 대해 확인하므로, 한 번 이 기능을 사용하는 순간 그 플레이어 캐릭터는 어떤 봉신에 대해서건 다시 이 기능을 사용할 수 없는 상황이 되는 점은 위와 동일합니다. 그러나 전역 플래그는 삭제하지 않는 한 누구에게나 영향을 미치지만, 캐릭터 플래그는 그 캐릭터에만 영향을 미치게 되므로, 해당 캐릭터가 사망하는 등으로 상속이 이루어지면 새로 플레이하게 되는 캐릭터는 그 캐릭터 플래그가 없기 때문에 다시 1번의 기회를 얻게 되는 거죠. 결국 재위 동안 단 1번만 사용할 수 있다 라는 기능을 구현하게 되는 겁니다.
이처럼, 플래그는 직접적으로 어떤 효과를 발생시키거나 하지는 않습니다. 그러나 모드 작성자가 필요에 따라서 모드 내에서 자유롭게 작성, 참조, 삭제가 가능하며 플레이어는 이를 알 수가 없으므로, 각종 이벤트를 제어하거나, 설정사항을 저장하거나, 혹은 디버그에 사용하는 등 그 쓸모가 무궁무진합니다. 단순한 치트가 아닌 한 단계 높은 수준의 모드를 작성하기 위해서는 플래그를 잘 사용할 줄 알아야 합니다.
(8) 디시전 텍스트
지금까지의 내용을 보고 자신만의 디시전을 만들어서 게임에 적용해보신 분이 혹시 계실지 모르겠습니다. 아마 그런 분이 계셨다면 디시전 목록에 나타나는 자신의 디시전이 마음에 들지 않으셨을 겁니다. 그냥 디시전 네임 코드가 그대로 나올 테니까요. 만약 타겟이 있는 디시전이었다면 더 문제가 심각하죠. 누구에 대한 디시전인지 알 수가 없으니까요.
Vassal Decision 인데, 디시전 이름만 덩그러니 출력되고, 이게 누구에 대한 디시전인지도 알 수 없습니다.
우리는 지금까지 디시전의 내용을 채우는 데에 주력했지만, 그 디시전이 어떻게 표시될지는 전혀 신경을 안 쓰고 있었습니다. 이제 그 부분을 좀 채워보도록 하죠.
CKII에서 출력되는 거의 모든 텍스트들은 로컬라이제이션 폴더의 언어 파일에 들어 있습니다. 원본의 경우 CKII 설치 폴더 아래에 localisation 폴더가 존재하죠. 그 안에는 게임에 출력될 텍스트들을 담은 수많은 .CSV 파일이 존재합니다.
.CSV 파일은 아주 원시적인 텍스트 데이터베이스 파일 형태이지만, 그 구조가 간단해서 지금도 많이 쓰입니다. 정해진 구분자(보통 ,나 ; 을 많이 씁니다)로 필드를 구분해 씁니다. 엑셀 등에서도 이 형식을 지원을 하죠. 그래서 이 언어 파일 편집에 엑셀을 사용하는 경우도 있습니다. 전 안 쓰지만요.
아무 파일이나 열어보시면 그 구조가 굉장히 단순하다는 걸 아실 수 있을 겁니다. 한번 실제로 열어보십시오. 혹시라도 EditPlus 를 사용하신다면 파일을 열 때 인코딩이 맞지 않는다면서 인코딩을 물어볼텐데, Western European (Windows) 인코딩을 선택하면 깨지는 글자 없이 깔끔하게 열립니다.
제일 첫 줄은 주석으로 (첫 문자가 # 이면 그 뒤는 다 주석으로 처리되는 건 언어 파일에서도 똑같습니다.) 영어, 불어, 독어, ... 순서대로 쓰라는 안내가 있죠. 그리고 둘째 줄부터는 텍스트 데이터가 쭉 늘어서 있는데, 구조는 다음과 같습니다.
- 첫 필드에는 이 텍스트에 대응시킬 모드의 개체 이름을 적습니다. 그리고 구분자 ; 을 적어줍니다.
- 두 번째 필드부터는 첫 줄의 주석에 있는 순서대로 각 언어별로 표시할 메시지를 적습니다. 필드 구분은 ; 라는 점은 같습니다.
- 한 줄의 입력이 끝나면 그 줄이 끝났다는 표시로 x 를 적어줍니다.
이게 구조 규칙의 전부입니다. 다만, 우리가 보통 한글 패치 모드에 대응해서 모드를 만들기 때문에, 언어 파일의 메시지 부분에 한글을 적게 되는데, 이 때는 두 번째 필드(ENGLISH)에 한글로 적으시고 나머지 필드는 전부 비워 두시면 됩니다.
그럼 실제로 만들어 보도록 하죠. 모드 폴더 아래 localisation 폴더 안에, 원본과 파일명이 겹치지 않도록 적당히 빈 .CSV 파일을 하나 만들어 줍니다. 그걸로 준비가 끝났고, 이제 그 .CSV 파일을 텍스트 에디터로 열어줍니다. localisation 폴더 내에 있는 .CSV 파일은 모두 언어 파일로 인식되어 실행 시 로드되므로, 파일명을 무엇으로 정하든 전혀 문제가 되지 않습니다.
일반적으로, 디시전을 위한 언어 파일은 디시전 하나당 최소 두 줄의 작업이 필요합니다. 디시전 목록에 표시할 디시전 이름과, 디시전 목록의 해당 항목에 마우스를 올렸을 때 풍선 도움말로 표시할 설명 내용이 그것이죠.
디시전을 구분하는 기호는 디시전의 이름입니다. 따라서 디시전 이름을 이용해서 언어 파일과 대응시키면 됩니다. 그러므로, 첫 칸에는 디시전을 만들면서 정했던 디시전 이름을 먼저 적어줍니다. 예를 들면 바로 위에 만들었던 디시전의 경우 test_decision 이 디시전 이름이라는 것 정도는 다 알고 계시죠? 그리고 ; 기호로 구분해 주고, 그 뒤에는 디시전 목록에 출력할 메시지를 적습니다. 예를 들면 봉신의 죄를 조작한다 정도로 적어볼까요? 알고 계시겠지만, 표시되는 길이가 그리 길지 않으므로 너무 길게 적으면 잘립니다.
test_decision;봉신의 죄를 조작한다;;;;;;;;;;;;;x
나머지 언어는 알 바 아니므로 비워둡시다. 줄의 마지막에 x표시 잊지 마시고요. 그리고 줄을 바꿔서, 이번에는 디시전 이름을 적고 뒤에 _desc 라고 적어줍니다. 이 뒤에 쓸 내용은 디시전 위에 마우스를 올렸을 때에 이 디시전이 무엇을 하는 디시전인지 구체적으로 설명을 하는 내용입니다. 이렇게 대응하는 코드 뒤에 _desc 를 붙이는 형식은 이 곳 뿐만이 아니라 트레잇 등 다른 부분에서도 사용되므로 잘 눈에 익혀 두십시오.
test_decision_desc;봉신의 죄를 조작하여 페널티 없이 리보크를 할 수 있도록 합니다.;;;;;;;;;;;;;x
이제 실행을 해 보시면 test_decision 이라고 코드로 출력되던 것이, [봉신의 죄를 조작한다] 처럼 한글로 딱 출력됩니다. 그런데.. 문제가 있죠? 일반 디시전이라면 저래도 괜찮은데, 타겟이 있는 디시전이라면 각각의 타겟마다 개별 디시전으로 출력될텐데, 봉신이 10명이라면 10개의 디시전이 다 똑같은 이름을 달고 있습니다. 누구에 대한 디시전인지 알 수가 없잖아요? 이런 경우에 사용하기 위해서, CKII 는 로컬라이제이션 파일에 사용할 수 있는 특수한 코드들을 제공합니다. 대괄호[ ] 안에 적게 되어 있습니다. 이렇게 고쳐 볼께요.
test_decision;봉신 [Root.GetTitledFirstName]의 죄를 조작한다;;;;;;;;;;;;;x
GetTitledFirstName 은 해당 봉신의 타이틀명과 성을 표시(백작 ~~~~)해주는 코드입니다. 앞에 스코프로 ROOT 를 썼는데, 디시전에서 ROOT 는 디시전 이벤트를 받는 사람이라는 거 이제 다 알고 계시니까, 봉신이라는 것 아시겠죠? 즉 저 자리에 봉신의 작위와 이름이 출력되는 것입니다. 실행해 보시면, 이제 누구에 대한 디시전인지 명확하게 드러나죠.
이제 누구에 대한 디시전인지 확실히 알 수 있습니다. 몇몇 봉신들은 야심적 트레잇이 없어서 사용할 수 없군요.
로컬라이제이션 파일에 사용할 수 있는 특수 코드들은 위키의 Localisation 페이지에 Commands 라는 제목으로 표로 정리되어 있습니다. 자주 사용하는 건 몇 가지 되지 않으니 필요할 때마다 찾아보시면 금방 익숙해지실 겁니다.
(9) 디시전 아이콘
■ 디시전에 아이콘 붙이기
원본의 디시전들은 앞에 멋진(?) 아이콘들이 따라다니죠. 그러나 내가 만들어 넣은 디시전은 뭔가 허전합니다. 아이콘이 없으니.
디시전의 아이콘 정보는 CKII 설치 폴더 아래 interface 폴더 안에 있는 decision_icons.gfx 파일이 저장하고 있습니다. 텍스트 파일이므로, 텍스트 에디터로 열어보면 됩니다. 구조는 다음과 같죠.
spriteTypes = { spriteType = { name = "GFX_디시전 이름 1" texturefile = "아이콘 파일의 경로 (CKII 설치 경로로부터의 상대 경로)" } spriteType = { name = "GFX_디시전 이름 2" texturefile = "아이콘 파일의 경로 (CKII 설치 경로로부터의 상대 경로)" } ... }
그러면 우리가 만든 모드도 그렇게 아이콘을 한번 달아보죠. 모드 폴더 아래에 interface 폴더를 만들고, 거기에 아이콘 정보를 저장하기 위한 .GFX 파일을 만들어보도록 하죠. 참고로, 파일 이름은 꼭 decision_icons.gfx 라고 붙일 필요는 없습니다. 파일 이름을 같게 하면 원본 파일의 내용도 그대로 갖다 붙여야 하는 귀찮음이 있고, 그렇다고 너무 다르게 붙이면 사람이 알아보기가 힘드니, decision_icons 뒤에 _모드이름 정도로 변형해서 이름을 지으면 되지 않을까요? 그래서 저는 decision_icons_TST.gfx 라는 이름으로 저장을 하겠습니다.
저도 최근에 원본 파일들을 다시 한 번 조사하다가, Way of Life 에 관련된 이벤트 이미지 파일이 별도 파일로 작성되어 있다는 사실을 발견하고서야 꼭 파일 이름을 따르지 않아도 된다는 걸 알았습니다. 하아..
spriteTypes = { spriteType = { name = "GFX_test_decision" texturefile = "gfx\\interface\\decision_icon_form_the_hre.dds" } }
파일 경로를 입력할 때, 왜 \ 기호를 두 번씩 쓰는지는 프로그래밍을 조금이라도 해 보신 분은 그 이유를 아시겠지만, 모르시더라도 상관 없습니다. 그냥 두 번씩 써 주세요. 아이콘은 그냥 원본의 아무거나 갖다 붙여봤습니다. 이렇게 작성을 해서 모드 폴더 이하 interface 폴더 내에 저장하고 게임을 실행해 보시면 작성한 디시전 앞에 멋지게 아이콘이 붙어있을 것입니다.
■ 나만의 디시전 아이콘 만들기
그런데, 이미 존재하는 아이콘을 갖다 붙이려니 웬지 어울리지도 않고 심심할 수도 있습니다. 그렇다면 실제로 나의 모드에 사용할 아이콘을 실제로 만들어 보도록 합시다. 1회에서 설명했던 Paint.NET 을 사용할 겁니다. 그래픽 작업은 처음 해 보는 만큼, 가능한 한 자세히 설명드리겠습니다.
일단 (아직 Paint.NET을 설치하지 않으셨다면 Paint.NET 을 설치하신 후) Paint.NET 을 실행해 봅시다. 다음과 같은 (익숙한) 화면이 보일 것입니다.
아이콘 파일은 기본적으로 28x28 크기의 정사각형 모양이지만, 실제 출력되는 영역은 26x22 의 직사각형 영역이고, 나머지 영역은 투명 영역입니다. 제 경우는 26x22 영역에서 작업을 마친 후 캔버스 크기를 확장하는 방식으로 작업합니다. 우선 26x22 크기의 캔버스를 새로 만듭니다. 상단 아이콘 중 가장 앞의 아이콘을 클릭하면 됩니다.
초기 바탕색은 흰색일 텐데, 외부에서 자르거나 편집한 이미지를 붙여넣으실 경우 전체를 선택한 후 DEL 키를 눌러 싹 지워줍니다.
이미지에서 특정 영역을 선택하시려면 왼쪽 아이콘들 중 왼쪽 제일 위의 아이콘을 클릭하신 후 이미지 영역을 드래그하시면 됩니다.
항상 모든 이미지는 이와 같이 투명 상태에서 작업을 시작하는 것이 나중을 위해 좋습니다. 워낙 이미지가 작기 때문에, 이미지를 확대해서 봅시다. 하단 오른쪽 끝의 바를 움직이면 화면을 확대하거나 축소할 수 있습니다.
다음은 아이콘을 쓸 이미지를 그리거나 가져와야죠. 아이콘으로 사용할 24x20 크기의 이미지를 불러옵니다. (테두리를 그릴 영역으로 가로 세로 각 2픽셀씩을 뺐습니다. 이미지 위에 그대로 테두리를 그리실 거라면 26x22 여도 상관 없습니다.) 직접 그리실 거라면 캔버스 위에 그리시면 되고요.
일반적인 이미지의 크기를 줄이거나 잘라서 24x20 또는 26x22 의 아이콘을 만드는 방법도 있지만, 사실 이렇게 만드는 아이콘은 그다지 품질이 좋지가 않을 겁니다. 구글 같은 곳에서 이미지 검색을 해 보면 잘 만들어진 아이콘들이 많습니다. 이런 아이콘들을 잘라서 쓰시는 것이 편리합니다. 필요한 이미지 주제 뒤에 icon 이라고 쳐 보세요. 예를 들면 숲 관련 아이콘을 찾고 싶다면 forest icon 이라고 이미지 검색을 하시면 됩니다. (대체 독자의 수준을 어디까지 내려다보고 있는거니 너...)
아이콘 모음 이미지에서 적당한 크기의 이미지를 잘라서, 만들어 둔 26x22 레이어 위에 복사했습니다.
이제 다른 디시전 아이콘들처럼 테두리를 그려 봅시다. 색 팔레트에서 테두리 색깔을 선택하신 후(저는 검정을 선택했습니다), 도구 모음 제일 아래의 "네모 동그라미 세모 모양의 아이콘"을 클릭하고 상단에 출력되는 도구모음에서 모양을 "사각형"으로, 브러시 너비를 1로 설정한 후, 왼쪽 위 모서리에서 오른쪽 아래 모서리로 쭉 마우스를 끌면 네모 모양의 선이 만들어집니다. (단순한 선이므로, 앤티앨리어싱은 끄시는 게 좋아요. 채우기 선택 옆에 곡선 모양 아이콘이 있죠? 그거 누르시면 앤티앨리어싱 적용과 해제를 선택할 수 있습니다.) 아래 그림은 테두리가 그려진 상태입니다.
만약 테두리가 조금 작게 그려졌다면, 모서리와 각 변 가운데에 있는 작은 원들을 잡고 끌면 그 방향으로 늘어나거나 줄어듭니다.
앞에서 원래 아이콘의 크기는 28x28 이라는 것, 말씀 드렸죠? 이제 이 캔버스의 크기를 원래의 28x28 로 바꿔야 합니다. 간단해요. [이미지(I)] - [캔버스 크기(S)] 를 클릭하시면 이렇게 캔버스 크기를 고칠 수 있게 창이 나옵니다.
너비와 높이를 각각 28, 28 로 설정하신 후, 넓어진 캔버스의 중간에 이미지가 올 수 있도록 Anchor 는 [중간]으로 맞춰 주세요. 그리고 [확인]! 캔버스 크기가 잘 늘어났을 겁니다.
그런데, 지금 테두리 바깥쪽도 흰색으로 칠해졌네요. 이러면 나중에 저장한 후에 알파 채널이 적용되지가 않아요. 테두리 바깥의 흰색 부분은 투명 영역으로 설정해야 합니다. 우리가 테두리를 그렸기 때문에 굉장히 쉽게 이걸 지울 수 있습니다. 도구 모음의 왼쪽 위에서 네 번재 아이콘 [요술 봉] 을 테두리 바깥의 하얀 쪽에 한번 콕 찍어보세요. 그럼 테두리 바깥쪽의 흰색 영역이 깔끔하게 선택됩니다.
이 상태에서 조용히 DEL 키를 눌러주시면 선택된 바깥쪽 부분이 깔끔하게 지워집니다.
진짜로 작업이 끝났습니다. 이제 저장하는 일만 남았어요. [파일(F)]-[다른 이름으로 저장(S)] 을 선택한 후, 확장자 선택을 DirectDraw 표면 (DDS) 을 선택하십시오. 그리고 저장할 파일명을 입력하시면 아래와 같은 창이 나옵니다.
옆에 뭔가 선택하는 게 있죠? A8R8G8B8 을 선택해 줍니다. 그리고 [확인] 을 눌러주시면 저장 완료! 현재 미리 보기 화면에 테두리 바깥 부분이 투명으로 보이고 있죠? 해당 부분에 대해서 알파 채널이 잘 적용되고 있다는 의미입니다.
만들어진 아이콘을 적용하는 방법은 바로 전에 알려드린 바 있죠? 만들어진 아이콘은 모드 폴더의 gfx\interface 폴더에 저장해 두십시오.
아래는 게임상에서 해당 아이콘이 정상적으로 적용되고 있음을 보여드리기 위한 화면이예요. (아이콘 이미지와 디시전 내용이 조금 미스매치이지만.. ^^)
저는 모든 작업을 Paint.NET 으로 진행했는데요. 만약 다른 익숙하게 사용하는 이미지 에디터가 있으시다면, 그 쪽을 사용하셔서 아이콘을 편집하시고, 편집된 이미지를 Paint.NET 으로 열거나 복사해서 .DDS 파일로 저장을 하셔도 좋습니다. (Paint.NET 이 .DDS 파일로 저장하는 기능이 정말 편리하게 되어 있어서, 저장은 이걸 사용하시는 것을 추천합니다.)
(10) 마무리
이것으로 일반적인 디시전과 관련된 내용은 모두 마무리를 지었습니다. 여기서 다루지 않은 종류의 디시전 파일들은 이벤트와 관련된 디시전이 아니라, 특수한 목적으로 만들어진 디시전 파일들이므로, 그 내용들을 다루게 되면 그 곳에서 함께 다룰 것입니다.
그리고, 디시전에 관한 내용을 다루면서, 독자분들께서는 CKII 의 모딩에서 정말 중요한 위치를 차지하고 있는 기본적인 내용들 - 스코프, 조건 구문, 확률 구문, 플래그 - 을 체크하였으며, 비록 디시전에 한정해서이긴 하지만 언어 파일도 편집해 보았습니다. 그리고 마지막으로, 디시전 아이콘을 작성하고 적용하는 것까지도 할 수 있게 되었습니다.
이제 다음 회부터는 디시전만큼이나 중요한 이벤트 파일에 대해서 알아볼 것입니다. 이벤트 파일까지 알아보고 나면, 일반적인 모딩의 반 이상을 할 줄 알게 된 것이나 마찬가집니다. (성향에 따라서는 반 이상이 될 수도 있습니다.)
댓글
댓글 리스트-
작성자그러하오 작성시간 15.02.13 플래그는 매우 유용하죠 케릭이 타이틀을 얻는 디시젼 만들때 플래그 없음을 조건으로걸면 작위 획득 후 디시젼이 사라지게 하기도 쉽고 ㅎㅎ 플래그가 생기면 이벤트가 벌어지게 할수도있고요 ㅋ
-
작성자통장 작성시간 15.02.13 이 글은 추천해야된다!
-
작성자그레이후드 작성시간 15.02.13 허 플래그가 이런거였군요.. 예전 rpg 쯔꾸르 만들 때 생각나네요... 보면 그 때랑 뭔가 비슷한 명령어들이 보이는 군요 ㅋㅋ....
개인적으로 조건문 쓸 때 사용되는 명령어 설명도 정리 된거 있으면 배우기 좋을 텐데 위키에서 보면 영 해석하기 힘들어서... -
답댓글 작성자그레이후드 작성시간 15.02.13 이건 다른 이야기인데, 예전에 만들던 폐태자 모드 좀 수정 해볼 용기가 생기는군요... 예전에 적용시 이펙트로 해당 플롯을 건 당사자의 작위에 대한 클레임을 당한자에게 주는 구문 추가가 힘들어서 포기했는데 다시 시도 해봐야 겠습니다.
-
답댓글 작성자tacitus 작성자 본인 여부 작성자 작성시간 15.02.13 90년대 RPG 만들기 류의 프로그램을 사용해 본 세대들에게는 모딩을 하다 보면 그때 그 시절에 그 도구로 게임 만들던 시절 생각날 거예요. (저도 그랬으니...)