Serio

Victoria 시나리오 해석 1 : 시나리오 파일

취미/게임
아무래도 파라독스 게임의 장점을 꼽으라면 나올만 한 것이 자유로운 에디트죠.
물론 서유럽 문자등이 깨지지 않도록 적당한 텍스트 편집기는 구해야 하겠습니다만 -_-a

어쨌거나 국가 파일의 내용만 읽을 수 있으면 에딧은 그다지 어려운 일이 아닌고로 본 글에서는 이에 대한 해석을 시작해보겠습니다. 강의 준비물(?)은 모드나 에딧을 하지 않은 원본 빅토리아만 있으면 충분합니다.

scenarios폴더를 열어보시면 6개의 폴더와 4개의 시나리오 파일이 보입니다.
빅토리아 내에는 다음의 기본적인 시나리오가 있습니다.

1836년 그랜드 켐페인Grand Campaign (빅토리아 여왕 즉위 전해)
1861년 분열된 국가A House Divided (미국 내전)
1881년 해가 지지 않는 나라A Place in the Sun
1914년 모든 전쟁을 끝낼 전쟁The War to End of All War (제 1차 세계대전)

각 시나리오는 1836.eug파일 등으로 보이는데, 다만 이걸 열어보아도 각국의 외교상황 등의 기본적인 정보만 있고 디테일한 부분은 보이지 않을겁니다. 왜냐면 저건 굳이 말하자면 인덱스 파일이고, 세세한 내용은 각각 다른 폴더에서 불러오는 방식을 취하기 때문입니다.

각 폴더에 그 시나리오 파일들이 정리되어 있습니다.
GC폴더에는 그랜드 켐페인(1836년)의 파일들이, 1861폴더, 1881폴더, 1914폴더는 해당 시나리오의 파일들이 각각 들어있죠.

일단 여기서는 1836.eug파일을 텍스트편집기로 열어보죠.

맨 윗줄에 name = "GC_NAME"라는 부분이 있을겁니다. 이건 시나리오명을 불러오라는 의미인데, 이 텍스트는 시나리오 파일들이 아닌 컨피그config에서 가져옵니다. 당연히 시나리오 폴더 내에는 없지요(..)

이를 확인하고 싶으시다면 scenarios 폴더에서 상위 폴더로 이동하셔서 config폴더로 들어가신 뒤, scenario_text.csv파일을 열어보시면 됩니다. csv파일은 원래 표로 작성된지라 엑셀이나 전용 에디터로 열어야 보기 편하지만 이에 대해서는 나중에 다루기로 하고, 우선은 텍스트 편집기로 한번 열어봅시다. 이후로도 일단 .csv파일이 보이면 표라고 인식해주세요.

맨 윗줄에 주석으로 ## Language;ENG;FRA;GER;SPA;ITA;;;;;; 걸려있고 그 아래에

GC_NAME;Grand Campaign (1836);Grande campagne (1836);Gro? Kampagne (1836);La Gran Campa? (1836);La grande campagna (1836);;;;;;x

이런 부분이 있습니다. 주석문을 보셔서 이미 짐작이 가시겠지만 시나리오명이 여러개가 나오는 이유는 언어별로 시나리오명이 다르기 때문이지요. 물음표로 나오는건 서유럽문자가 깨진겁니다 -_-a

자 이제 다시 원래의 시나리오 해설로 돌아옵시다. 1836.eug를 다시 전면에 띄우시면 name = "GC_NAME"밑에 헤더가 보입니다.

header = {
이건 말 그대로 시나리오 내용의 시작을 의미합니다. 깊게 생각하실 거 없습니다 -_-

이 밑에는 선택가능 국가를 설정하는 부분이 나옵니다.

    selectable = {
GRE MON TUR SWI AUS KRA RUS
...

여기의 GRE, MON, TUR등은 해당 국가들의 약자입니다. 일일이 국명을 기재하다간 끝이 없지요. 보통 저 약자를 태그TAG라고 합니다. 본 글에서도 '국가 태그'라고 하면 저걸 의미하는겁니다.

저 태그들이 어떤 국가인지를 확인하고 싶으시면 다시 config폴더를 보셔야 합니다. 선택가능 국가중 맨 위에 올라온 GRE가 어디인지 찾아볼까요? 이것도 시나리오 폴더 내에는 없으니 삽질하지 말고 (..) config/world_names.csv파일을 열어봅시다.

검색(보통은 Ctrl+F를 누르면 나옵니다)에 GRE; 라고 찾아봅시다.

GRE;Greece;Gr?e;Griechenland;Grecia;Grecia;;;;;;x

이렇게 나오네요. GRE는 Greece, 그리스입니다.

헤더부분과 국가 선택부분을 넘기면

ENG = { }
..
이러한 부분이 나옵니다. 이건 빅토리아를 처음 키셔서 시나리오 선택하면 기본적으로 선택되는 국가들을 설정하는 부분입니다.

(이거 이야기죠)

해설하자면 다음과 같습니다.

ENG = { } # 대영제국
FRA = { } # 프랑스
PRU = { } # 프로이센
AUS = { } # 오스트리아
RUS = { } #러시아
SAR = { } #샤르데냐-피에몬테
SPA = { } #에스파냐
USA = { } #미합중국
HOL = { } #네덜란드
TUR = { } #오스만 투르크
CHI = { } #청나라

바꾸고 싶으시면 국가 태그를 지우시고 그 자리에 다른걸 넣으시면 됩니다.

이제 다시 좀 더 아래로 내려갑시다.

capital = { 0 0 0 0 0 0 1368 ...
province = { 0 0 0 0 0 0 0 0 ...
total = { 69 208 25 137 72 107 ...
prestige = { 69 30 46 15 25 15 ...
military = { 69 110 25 76 72 51 ...
industry = { 67 53 42 50 182 47 ...

이런 부분들이 보일텐데요, 숫자가 많아서 복잡해보이지만 별 의미는 없습니다. 이건 선택 화면에서 국가를 클릭하면 나오는 정보를 제공합니다. 간략하게 국가 정보를 표시해주는 장치이지요. 게임정보에서 불러오는게 아니기에 실제 게임 내 데이터와는 별도로 존재합니다. 굳이 말하자면 여기에 있는 정보는 리뷰라고 해야겠지요.



capital부분은 국가를 선택할 때 작은 지도의 중심에 표시할 프로빈스를 지정합니다. 0 부분은 무시하고, 가장 처음 나오는 숫자인 1368을 보죠. 아까 selectable 기억하시죠? 거기에 보면 첫머리에 GRE(그리스)가 나옵니다. 1368은 그리스를 선택했을 때 그 숫자의 프로빈스를 보이라는 것을 의미합니다. db/province.csv를 열어서 1368번 프로빈스를 찾으면 Athina, 즉 아테네입니다. 위의 선택창을 보시면 그리스의 지도가 나오는데 중심에 Athina가 위치해있지요

다른 부분도 마찬가지입니다. 프로빈스는 그냥 전체 프로빈스 넘버를 붙여넣은것이죠.

total은 해당 국가의 종합점수, prestige는 위신점수, military는 군사점수, industry는 산업점수지요. 그리고 이 숫자들은 그냥 국가의 순서대로 분배됩니다. 굳이 어렵게 생각할 필요도 없고.. 어찌 생각하면 별 필요도 없는 내용입니다. 신경끄죠 -_-a


저 숫자 덩어리를 피해(..) 아래로 넘어가면 이제 이런 부분이 나옵니다.

#Must be both in header and globaldata..
    startdate = {
        year = 1836 #1836년
        month = january #1월
        day = 0 # 1일(0일 아님 -_-..)
        }
    enddate = {
        year = 1936 # 1936년
        month = january # 1월
        day = 0 # 1일
        }
}

#는 주석입니다. header부분과 globaldata부분 둘 다에 (기재되어)있어야 한다는군요.


그리고 이 밑에

}

라고 있을텐데, 이건 아까 맨 위에 있던 header = { 를 닫아주는 역할을 합니다. 잘못하다가 괄호 하나 빼먹으면 시나리오 로딩하다가 멈춰버립니다. 괄호불일치는 에러메세지도 안 보여주기 때문에 자칫하면 어디가 문제인지도 모르고 해매는 불상사가 생길 수 있겠죠. 잊지 말고 꼭 챙겨줍시다. 제가 모드를 만들 경우엔 너무 거리가 멀어서 어떤 부분을 닫는건지 알기 힘들 때

} # header

이런 식으로 주석을 달아줍니다. 이렇게 하면 어디가 시작이고 끝인지 알기 쉽겠죠. 굳이 할 필요는 없지만 센스랄까요 -_-a


여튼 헤더 부분이 닫히고 나면

globaldata = {

이렇게 globaldata부분이 시작됩니다. 말 그대로 세계 정보지요. 이건 특정 국가나 지역 등에 포함되지 않는 국가 대 국가간의 관계 등을 설정합니다. 이를테면 전쟁 관련 정보나 동맹 관련 정보, 혹은 위성국 관계나 배상금이겠지요.

백문불여일견, 한번 봅시다.

    war = { # 전쟁설정
        id = { type = 9430 id = 1 } #전쟁 ID (겹치면 안됨)
        date = { # 개전일
            year = 1836
            month = january
            day = 1
        }
        enddate = { # 진행중인 날짜
            year = 1836
            month = january
            day = 1
        }
        attackers = { # 공격자
            id = { type = 9430 id = 2 }
            participant = { HOL } # 네덜란드
        }
        defenders = { #방어자
            id = { type = 9430 id = 3 }
            participant = { BEL } # 벨기에
        }
    } # 전쟁설정 종료

이미 짐작하셨겠지만 war = { 로 시작되는 부분은 '전쟁'을 의미합니다.
id = { type = 9430 id = 1 }는 해당 전쟁에 부여되는 ID인데 겹치지만 않으면 됩니다.
date와 enddate는 개전일과 진행중인 날짜입니다 enddate가 개전일과 같은건 정말 그 때에 전쟁이 끝나서가 아니라 그냥 그 시간에도 진행중이라는 의미입니다. 사실 enddate는 아무 의미가 없는게, 정말 전쟁이 끝나면 전쟁설정 부분 자체가 지워지기 때문에 있으나마나죠. 왜 넣은건지 -_-a

밑의 attackers와 defenders는 공격자(선전포고 한 국가)와 방어자(선전포고 당한 국가)를 의미합니다. 공격자에 participant = { HOL }라고 써있으니 네덜란드가 선전포고를 했고 방어자에 participant = { BEL }라고 써있으니 벨기에가 당한 측이겠네요. 첨언하자면 여러 국가들끼리 전쟁하는 경우엔

    attackers = {
        id = { type = 9430 id = 2 }
        participant = { ENG } # 대영제국
        participant = { FRA } # 프랑스
    }

식으로 할 게 아니라

    attackers = {
        id = { type = 9430 id = 2 }
        participant = { ENG FRA } # 대영제국, 프랑스
    }

식으로 설정해야 합니다 (방어자도 마찬가지)
전쟁 부분은 넘어가고, 그 밑에는 다시 startdate, enddate가 있네요. 위에서 설명했으니 넘깁니다.

    worldmarket = { # 세계시장
        cattle = 200 # 소 200
        fruit = 100 # 과일 100
        grain = 50 # 곡물 50
        steel = 100 # 강철 100
    }

이건 worldmarket(세계시장)에 있는 재고품을 의미합니다. 빅토리아에서는 물품을 세계시장에 수출하면 이 세계시장에서 각국으로 수입되는 구조로 경제가 돌아가지요. 국가 대 국가의 무역이 안되는 덕분에 적국에게 내 소중한 전략 물자를 대량으로 수출해버리기도 하구 (..)

여담인데, steel은 강철이고 일반 철은 iron을 씁니다.


이제 세계시장 밑에는 동맹 관련 정보가 나옵니다.

    alliance = { #동맹설정
        id = { type = 9403 id = 24 } # 아이디
        expirydate = { year = 1920 month = january day = 1 } # 만료일
        participant = { ANH PRU } # 안할트, 프로이센
        exception = "AUS" # 오스트리아를 제외
        defensive = yes # 방위동맹
    }

내용은 주석 단 바와 같습니다. 만료일자가 1920년인데, 그 전에 한쪽이 동맹을 해체하거나 군사요청에 불응하면 그 경우에도 동맹이 끝나버립니다. 뭐 이건 게임중에 이야기지만요 -_-a participant는 동맹의 구성국을 말합니다. 빅토리아에서는 기본적으로 1:1로 동맹이 성립하기 때문에 게임중 성립된 동맹은 participant가 2개 이상인 경우가 없습니다.. 만, 에디트에선 제한이 없지요.

participant = { PRU AUS ENG FRA ... } 식으로 여러개를 넣을 수도 있고 게임중에도 제대로 나옵니다.

다만 이들 중 단 한 국가라도 동맹에서 탈퇴해버리면 동맹 전체가 해체되어버린다는거 -_-~
(예를 들어서 10개국으로 동맹을 만들었는데 이 중 1개국이 동맹을 불이행하면 나머지 9개국도 얄짤없이 동맹해산된다 이거죠)

exception은 게임중에 동맹 조건에서 A국가에 선전포고(당)한 경우는 예외로 하도록 설정할 수 있는 그것을 말합니다.
defensive는 방위동맹을 말하고, 여기서 = no로 하면 공수동맹이 됩니다.

    flags = {
            # American Civil War. The initial slave states.
        flg_slave_northcarolina = 1 # 노스캐롤라니아의 노예제 플래그 ON (이하 동일)
        flg_slave_virginia = 1
        flg_slave_georgia = 1
        flg_slave_florida = 1
        flg_slave_alabama = 1
        flg_slave_mississippi = 1
        flg_slave_louisiana = 1
        flg_slave_arkansas = 1
        flg_slave_tennessee = 1
        flg_slave_sequoyah = 1
        flg_slave_kentucky = 1
        flg_slave_delaware = 1
        flg_slave_maryland = 1
        flg_slave_missouri = 1
    }

flags라는건 좀 설명하기 어려운 개념인데, 이건 이벤트 부분에서 설명할까 합니다.
아무래도 시나리오에서 다룰 주제는 아니군요 -_-

이제 이 이하는 다른 파일에 수록된 내용을 불러오는 부분입니다.

#pop = "scenarios/gc/abyssinia1.csv"
#pop = "scenarios/gc/abyssinia10.csv"
....

우선 말하자면 이 부분은 훼이크(..)입니다. #은 주석이라고 했지요? #가 앞에 붙은건 기본적으로 작동하지 않습니다.
괜히 낚이지 말고 더 아래로 내려갑시다.

pop = "scenarios/gc/ABU1836_AbuDhabi.csv"
pop = "scenarios/gc/ADE1836_Yemen.csv"
...

이게 진짜 팝을 불러오는 부분입니다. 한번 직접 내용을 열어보죠. ABU1836_AbuDhabi.csv를 읽어보겠습니다.

Province;Nationality;Religion;Workforce;Ideology;Consciousness;Militancy;Size
1881;Arabic;Sunni;soldiers;;;;2
1881;Arabic;Sunni;farmers;;;;28
1882;Arabic;Sunni;soldiers;;;;2
1882;Arabic;Sunni;farmers;;;;28
1883;Arabic;Sunni;soldiers;;;;2
1883;Arabic;Sunni;clergymen;;;;2
1883;Arabic;Sunni;aristocrats;;;;1
1883;Arabic;Sunni;farmers;;;;25

이게 파일 내용의 다입니다. 짧죠 -_-? 맨 윗 부분은 인덱스. 자체로는 아무 데이터도 아닙니다. 그 밑이 본격적인 팝정보를 말하지요.

1881;Arabic;Sunni;soldiers;;;;2
1881프로빈스(지역)에 아랍인Arabic, 수니파 종교Sunni, 군인soldiers, 2천명

다른 팝 관련 파일들도 내용은 비슷비슷합니다. 다시 시나리오 파일로 돌아오죠.

한참 계속되는 팝 로딩 정보를 지나면

# Inventions
event = "db\tech\industry_inventions.txt" # industry_inventions.txt에 수록된 이벤트 불러옴.
event = "db\tech\army_inventions.txt" # amry_inventions.txt에 수록된 이벤트 불러옴.
...

이런 부분이 있습니다. 주석으로 inventions라고 되어있는걸 봐서 발명 관련 정보겠네요. 각 파일의 명칭은 그 파일의 정보를 의미합니다. 이를테면 industry_inventions.txt는 산업부문 발명에 관한 정보겠지요. event로 로드한다는데에서 이미 몇몇 분들은 아셨겠지만 이것은 게임 내에서 볼 수 있는 이벤트event의 형식입니다. 이건 이벤트 관련한 글에서 다루도록 하고 여기서는 넘깁시다 (..)

이제부터는 본격적인 국가 정보를 로드합니다.

include = "scenarios/gc/travancore.inc" #트라방코르의 정보를 불러옴
include = "scenarios/gc/modena.inc" # 모데나의 정보를 불러옴
include = "scenarios/gc/bavaria.inc" # 바이에른의 정보를 불러옴
include = "scenarios/gc/england.inc" # 영국의 정보를 불러옴
..

각 국의 정보는 시나리오 해석 2에서 다룰 예정입니다. 트라방코르는 인도 토후국이고 모데나는 이탈리아의 소국, 바이에른은 독일 남부의 왕국이고.. 영국은 말 안해도 다들 아시겠죠 -_-a

국가파일들의 로드에 관한 부분도 지나고 파일의 끝에 이르면

include = "db\events.txt"
event = "db\events\LiberalRevolution.txt"

이 두줄이 있습니다.

event = "db\events\LiberalRevolution.txt"은 게임중에 나오는 자유혁명 이벤트입니다. 실제 역사에선 1848년에 주로 일어났지요.
나폴레옹 패배 이후 현성된 반동적인 빈 체제에 대항하는 혁명의 물결이 유럽을 뒤덮었는데, 워낙 글로벌한 내용이다보니 아예 따로 파일을 만들어서 불러오는 모양입니다.

events.txt파일은 한번 열어보시면 아시겠지만 로드할 이벤트 파일의 목록입니다. 한번 읽어보면 다음과 같습니다.

# Random Events
event = "db\events\randomevents.txt"
event = "db\events\economic_events.txt"
event = "db\events\political_events.txt"
event = "db\events\campaign_events.txt"
event = "db\events\Expansion_Random_Events.txt"

어이쿠.. 이미 위에서 해설했지만 event 로 불러오는건 이벤트 정보라고 했지요. 저건 랜덤 이벤트들을 불러오는겁니다.
요컨데 시나리오 파일에서 events.txt를 불러오고 이 events.txt파일에서 다시 각 이벤트 파일을 불러오는 셈이지요.

이거로 시나리오 파일에 대한 설명은 마쳤습니다. 직접 제작하실 때도 이런 형식대로만 하시면 별다른 문제는 없을 겁니다.