베데스다 크리에이션 킷

 


[image]
1. 개요
2. 상세
3. 설치
4. 사용법
4.1. 파일 확장자 설정 (ESP, ESM, ESL)
4.2. 문자열 (String) 제한
5. 콘솔 치트 명령어
5.1. 파일 확장자 설정 (ESP, ESM, ESL)
5.2. 단독 사용 가능
5.3. 레퍼런스 ID 필요
6. Papyrus
6.1. 기존 스크립트 언어와의 차이
6.2. 예시
6.3. 파피루스 로그
7. 관련 문서


1. 개요


베데스다에서 무료로 공개하는 스카이림/폴아웃4모딩툴. 이전에 사용하던 Construction Set이라는 프로그램을 발전시킨 것이다. 엘더스크롤 시리즈로 수많은 모드를 뽑아낸 베데스다의 모드 툴답게 강력하고 편리한 기능으로 구성돼있어 프로그래밍이나 모델링에 기초적인 지식만 있으면 당장 공식 튜토리얼만 읽고도 어느 정도 제작이 가능하다.[1]

2. 상세


폴아웃 시리즈에 있는 Garden of Eden Creation Kit 프로그램도 기본적으로는 Construction Set을 수정한 프로그램이다. G.E.C.K의 경우 폴아웃 3의 발매 직후 바로 공개된 것은 아니며, 약 2달 정도의 간격을 두고 2008년 12월에 처음 공개되었다. 엘더스크롤 4: 오블리비언의 모드 툴인 컨스트럭션 셋과 거의 동일한 인터페이스와 구조를 가지고 있었기 때문에, 기존에 오블리비언 모드 제작에 익숙한 사람이라면 간단한 모드 정도는 매뉴얼도 한 번 들여다 보지 않고도 제작이 가능하였다. 이러한 구조는 엘더스크롤 5: 스카이림의 모드 툴인 크리에이션 킷에 이르기까지 계속 적용되었으며, 베데스다 게임 스튜디오가 기존 모드툴의 사용에 익숙한 모더들을 채용하는 것으로 볼 때 엘더스크롤 시리즈폴아웃 시리즈의 차기작에 있어서도 모드 툴의 기본 구조는 바뀌지 않을 것으로 예상된다.
비단 에디팅뿐만 아니라 아이템의 스펙 같은 게임 내부 정보를 볼 수 있기에, 그런 정보를 뜯는 사람들에게도 유용한 도구.
2017년 10월 31일 스카이림 스페셜 에디션 전용 크리에이션 킷이 모든 유저에게 풀렸다. 스팀에서 받아서 그냥 실행시키던 것과는 달리 베데스다 런처를 이용해서 받을 수 있는데 런처는 이곳에 들어가서 오른쪽 상단에 있는 Launcher 버튼을 누르면 받을 수 있다. 베데스다 런처를 받은 후, 베데스다 계정으로 접속하면[2] 왼쪽에 2가지의 크리에이션 킷이 보이는데 청회색의 크리에이션 킷이 스페셜 에디션 용이고 초록색은 클릭하면 알겠지만 폴아웃 4 전용이다.[3] 바탕화면에 바로가기가 생성되지는 않지만 스카이림 스페셜 에디션 설치 폴더로 들어가면 실행 파일이 있다.

3. 설치


스카이림 레전더리 에디션 CK툴은 스팀의 도구 탭에서 간단하게 다운받을 수 있다. 스팀
당연히 스팀 계정과 스카이림은 필수다. 스카이림
  • 스팀을 실행하고 로그인한다.
  • 스팀이 최신 버전인지 확인한다.
  • 게임 라이브러리에 들어간다.
  • "도구" 탭을 클릭한다.
  • "Skyrim Creation Kit"을 찾는다.
  • 우클릭한 후 "게임 설치"를 선택한다.
만약 스카이림 스페셜 에디션 버전이나 폴아웃 4의 모드를 만들려 한다면, 새 버전의 크리에이션 킷이 필요하다.
  • 베데스다 공식 웹사이트에 들어간다.#
  • 새 계정을 만든다. (스카이림 스페셜 에디션을 하면서 인게임 모드 라이브러리를 통해 모드를 다운로드 받은 경험이 있다면 이미 계정을 하나 만들었을 것이다.)
  • 화면 상단 우측에 베데스다 런처 다운로드 아이콘이 보일 것이다. 클릭한 뒤 다운로드한다.
  • 컴퓨터에 베데스다 런처를 설치한다.
  • 베데스다 런처를 실행한다. 베데스다 계정에 로그인할지 묻는 창이 뜰것이다.
  • 화면 왼쪽 수직 막대에 크리에이션 킷 로고가 보일 것이다.
  • 클릭해서 크리에이션 킷을 설치한다. 보통 스카이림 스페셜 에디션이 설치된 폴더에 설치될 것이다.
설치가 끝나면 CK툴을 둘러보기 위해 여기로 돌아오면 된다. CK툴을 처음 설치했을 경우 툴은 완전히 비어 있다.
폴아웃 3 버전 G.E.C.K는 다음을 참고하라.
G.E.C.K 위키
기본적으로 프로그램이 UTF-8 을 인식하지 못하기 때문에, 한국어를 입력할 경우 깨지는 현상이 일어난다. 따라서 한국어를 사용하려면 한국어 패치를 설치해야 한다.
쓰다보면 도데체 이런 불안정한 소프트웨어로 어떻게 게임을 만들었을까 생각이 들정도로 문제점들이 많은데 (갑자기 꺼진다거나...), 스카이림 루트 폴더[4] 내부에 있는 SkyrimEditor.ini를 열어서 bEnableAudioCache=1에서 =0으로 바꿔주면 왠만해서는 해결된다.
참고로 Creation Kit (모드 커뮤니티에서는 CK라 부름)을 써서 모드를 제작할때는 꼭 스카이림을 시스템이 설치된 드라이브에 같이 설치해주자. 윈도우가 C 드라이브에 설치되어있으면 스카이림도 C에 설치해줘야 CK를 쓸때 각종 에러들이 사라진다.
런처가 실행되고 화면이 까맣게 보이지 않을땐 BethesdaNetLauncher 호환성을 비스타 서비스팩2로 해보자.
초기 설정 상태에서는 여러개의 esm, esp 파일을 선택하면 불러오지 못하는 오류가 뜬다. 이럴 때는 C:\\Users\\...\\Documents\\My Games\\Skyrim(또는 다른 게임명)에 들어가서 SkyrimEditor.ini (스카이림 스페셜 에디션의 경우 CreationKit.ini, 폴아웃의 경우 GECKCustom.ini) 파일을 연뒤 [General] 탭에 있는 bAllowMultipleMasterLoads= 항목과 bAllowMultipleEditors= 항목을 찾아 값을 0에서 1로 바꾸고 저장하면 된다. 없으면 값을 추가해준다. 그 다음부터는 여러개의 파일을 불러올 수 있게 된다.#
시작부터 오류창이 뜰 수 있는데 한국어 윈도우에서는 그냥 취소를 눌러주면 된다. Yes To All 묻는 경고창 뜨는게 짜증난다면 [Messages]에서 bBlockMessageBoxes= 값을 1로 바꾼다.
추가로 [Archive] 탭의SResourceArchiveList2= 항목에 Dawnguard.bsa, Hearthfires.bsa, Dragonborn.bsa를 추가해 다음과 같이 수정해준다.
SResourceArchiveList2=Skyrim - Shaders.bsa, Update.bsa, Dawnguard.bsa, Hearthfires.bsa, Dragonborn.bsa
creation kit을 실행하자마자 꺼지는(혹은 로딩이 지연되는) 오류가 있다. 혹시 ENB를 설치했다면, d3d9.dll (또는 d3d10.dll, d3d11.dll) 파일을 잠시 다른 곳에 옮겨두고 실행해보길 바란다.
스크립트 등을 수정할 때 저장이 안되는 일이 있는데 이를 막기 위해 관리자 권한으로 실행해야 한다.
기타 오류들은 다음 글을 참고하라.#


4. 사용법


creationkit.com 사이트에 기본적인 튜토리얼이 있다.
번역시 주의사항이 몇가지 있다. 대표적인 예중 하나로 ID 유형 중에 종족(RACE) 내용을 한국어로 번역할 때는 맨앞에 한칸을 비워둬야 한다. 그렇지 않으면 CTD가 발생한다고 한다. 그리고 앞처럼 치명적인 문제는 아니지만 연금술포션(ALCH), 갑옷(ARMO), 마법부여효과(ENCH), 광원(LIGH), 마법(SPEL), 무기(WEAP) 등 각종 명칭을 번역할 시 맨뒤에 빈 칸이 들어가면 아이템 앞에 한칸이 들어가서 나오니 되도록이면 지워주는게 좋다. 용언(WOOP)도 번역하면 ㅁㅁㅁ 같이 깨질 수 있으니 번역하지 않는게 좋다. 각 ID 유형에 대한 설명은 다음 글을 참고하자.
이하 내용은 관련 플러그인 파일이나 세이브 파일을 만들때 알아둬야 할 내용들이다.
해당 내용에 대해 자세히 아는 컴퓨터 전공자 분 있으시면 관련 내용을 보충, 정리해주시길 부탁드립니다.

4.1. 파일 확장자 설정 (ESP, ESM, ESL)



스카이림의 게임 엔진인 Creation Engine은 게임브리오 엔진을 개조한 엔진이다. Creation Engine은 다른 베데스다 게임 스튜디오 게임들과 같은 파일 확장자를 사용하는게 그것이 바로 esp이다. 이후 esm 확장자가 추가되었으며, 크리에이션 클럽이 나오면서 로드 제한을 벗어난 esl 확장자가 추가되었다.
'''.esp''' 플러그인 파일(Plugin File)은 esm이나 esl보다 작은 데이터들을 포함하고 있다. 이런 플러그인들은 마스터 파일이 포함하고 있는 데이터를 변경하거나 참조한다. 또는 아예 새로운 데이터를 담고 있을 수도 있다. 많은 플러그인들이 게임이나 모더에 의해 로딩될 것이다. CK툴을 작동시킬 때는 오직 한 파일만 작동하는 파일로 인식된다. 즉, 많은 변화들이 한 개의 플러그인으로 저장된다는 것이다. 스카이림 레전더리 에디션 이하에서는 esp와 esm을 합쳐 254개만 설치할 수 있다. 이유는 해당 플러그인 확장자 파일을 설치하면 00에서 FF까지 16진수 값의 레코드 값이 부여되는데, 이 갯수가 254개이기 때문이다. 스카이림 본편과 DLC esm 파일 등을 빼면 사실상 레전더리 에디션에서 esp나 esm이 포함된 모드는 250개 이하만 설치 할 수 있는 셈이다.[5] 모드 배열상 기본적으로 esp 파일은 esm 파일보다 뒤에 배열되며, 헤더 플래그 값 수정 없이는 esm 파일보다 배열을 위로 올릴 수 없다.
'''.esm'''[6] 확장자 파일 확장자는 마스터 파일(Master File)로 많은 데이터들을 담고 있다. 예를 들어 Skyrim.esm 파일은 바닐라[7] 스카이림의 데이터들을 담고 있는 마스터 파일이다. 전체적으로 esp 파일보다 더 많은 권한을 부여받은 것으로 알려져 있는데, 대표적으로 참조 항목(reference) 제한에서 좀더 여유롭다는 장점이 있다. 스카이림의 경우 일시적 참조 항목 개수 제한이 있고 그 개수가 1048576개로 알려져 있는데, esm 파일은 이 개수 제한의 영향을 덜 받는다고 한다.# 때문에 xEdit를 이용해 헤더 플래그 값을 수정해서 esp 파일을 esm화 시켜 이 제한을 벗어나게 만들기도 한다. 이를 ESM화된 ESP (ESMfied ESP) 파일이라고 하며, 이렇게 헤더 플래그 값을 수정한 esp 파일은 모드 배열에서 esm 사이에 위치시킬 수 있다. 대표적으로 스카이림 한국어 패치 중 엘더 7 카페 버전이 이렇게 ESM화된 ESP 파일이기 때문에 update.esm 파일과 dawnguard.esm 사이에 놓을 수 있는 것이다.
스카이림 스페셜 에디션과 폴아웃 4에서는 '''.esl''' 레서 파일(Lesser File) 확장자가 새로 생겼다. 크리에이션 클럽을 위해 추가된 이 포맷 덕분에 모드 제한 254개에서 벗어나 249개의 esl 파일이 포함된 모드를 추가로 설치할 수 있게 되었다. 여기에 SSE fixes 같은 모드를 깐 경우 1794개 모드를 추가로 설치할 수 있어 최대 '''2048'''개까지 모드를 설치할 수 있다고 한다. 이게 가능한 이유는 레전더리 에디션이 00에서 FF까지 16진수 레코드 값을 부여해 최대 254개까지만 esp 및 esm 파일을 설치할 수 있는 것과 달리, 스페셜 에디션의 경우에는 FE와 FF 사이에 추가 레코드를 부여해 2048개까지 모드를 설치 할 수 있도록 해두었기 때문이다. 최신 xEdit를 통해 이런 esl 파일들을 열어보면 레코드 번호 값이 00~FF 같이 16진수 두자리 값으로 보이는게 아니라 'FE 000' 같이 부여되어 있는 것을 볼 수 있다.
당연히 해외 베데스다 게임 유저들은 이 esl 확장자를 뜯어보고 나서 esp 파일의 헤더 플래그 값을 수정해 esl화 시키는 방법을 알아냈는데, 이를 ESL화된 ESP (ESLfied ESP), 또는 'ESPFE' 파일이라고 부른다. espfe 파일이라 부르는 이유는 앞서 말한 것처럼 xEdit로 열어보면 'FE 000' 같이 레코드 값이 부여되어 있기 때문에 붙은 이름이다. 이 espfe 파일은 겉으로 보이는 확장자는 esp 그대로이나 기존 esp처럼 250여개 설치 제한에 걸리지 않으며, 이론상 최대 2048개까지 설치할 수도 있다. 또한 원래 베데스다 스튜디오가 정해놓은 확장자 배열 순서는 esm > esl > esp 순서로, esl 파일은 esp 파일보다 배열을 밑에 둘 수 없는데 반해,[8] 이 espfe 파일은 esl 사이에 놓을 수도 있다. espfe 파일을 만드는 방법은 위 영상의 7분 25초 부분부터 참고하기 바란다.
다만 이 espfe 파일을 만들 시 주의할 점이 있다. 현재까지 알려진 바로는 다음의 주의사항을 지켜야 한다고 한다.
데이터가 작아야 한다.(small plugins)
수정하는 부분이 적어야 한다.(simple edits)
업데이트가 자주 되지 않아야 한다.(unlikely to be updated)
관련 추가 패치가 없어야 한다.(not patched)
마스터 파일이 아니어야 한다.(not masters)
실내 셀 공간을 추가하거나 변경하거나 덮어쓰는 모드가 아니어야 한다.(don't add interior CELL records)
이를 통해 보면 NPC 변경 모드나 아이템 추가 모드 정도만 espfe 파일로 변환하는게 안전할 것으로 보인다.

4.2. 문자열 (String) 제한


관련 정보 원문
간혹 대형 모드를 여러개 설치했는데 게임이 켜지지 않는 문제가 발생할 수 있는데, 원인은 스카이림 자체적으로 불러올 수 있는 총 문자열 개수 제한이 있기 때문이다. 여기서 말하는 문자열은 xTranslator 등으로 번역하는 영어나 한국어 스트링 뿐 아니라 프로그램 상의 각종 변수(variable)나 스크립트 변수가 지정된 모든 문자열을 말하는 것이다.
핵심만 요약하면, '''스카이림 레전더리 에디션의 경우 이 문자열 총합이 65,535개가 넘어가면 팅긴다.''' 이유는 베데스다 스튜디오가 문자열을 세는데 16비트 정수(integer)를 쓰도록 만들었기 때문.
좀 더 자세히 원 정보 출저를 쓴 사람의 말에 따르면 Vanilla Skyrim + Dawnguard + Hearthfires + Dragonborn + Unofficial Legendary Patch + SkyUI + Live Another Life 모드를 설치한 상태에서 세이브 파일에 기록된 문자열 개수는 28,619개였다고 한다. 이미 거의 문자열 제한의 절반 정도를 소모하고 있는 셈이다. 여기에 문자열 개수가 많은 interesting NPCs (3DNPC)를 설치하자 32,090개로 문자열 개수가 늘어났고, 모드를 해제한 뒤 스크립트를 제거하고 저장한 파일을 봤더니 문자열 개수가 29,471개였다고 한다. 이 말이 사실이라면 모드를 설치할 수록 문자열 제한에 근접하게 되고, 모드를 지우더라도 세이브 파일에는 어느 정도 그 문자열 흔적이 남는 것으로 보인다.
특정 모드가 얼마나 문자열이 많은지 정확히 확인하는 방법에 대해선 원 정보 출처를 쓴 사람이 적지 않았지만, 크게 다음과 같은 모드 설치시 주의하라고 적었다.
  • 스크립트 많은 모드. 스크립트가 많다는건 지정해야할 각종 속성도 늘어난다는 걸 의미한다.
  • 대사량이 많은 모드(Interesting NPCs 같은 모드) 또한 문자열 개수 증가에 큰 영향을 끼친다.
  • 대형 퀘스트 모드도 퀘스트 단계가 많을 경우 문자열이 많이 필요하다.
  • Mod Configuration Menu (MCM) 기능이 포함된 모드. 슬라이더, 토글 버튼 등 관련 기능을 구현하려면 당연히 어쨌든 수많은 변수 선언이 필요하다.
  • 애니메이션 모드. 특히 '그 사이트'의 그 모드의 경우 각 애니메이션 하나마다 문자열이 엄청나게 추가된다고 한다.
이 문자열 개수가 문제가 되는건, 만약 세이브 파일의 문자열 개수가 초과되면, Save Game Script Cleaner로 이 세이브 파일을 정리하려 해도 Save Game Script Cleaner가 열리지 않거나 오작동하기 쉽기 때문이라고 한다. 말 그대로 그 세이브 파일은 완전히 버리게 될 수 있다는 것이다. 내 세이브 파일 안에 총 문자열 개수가 얼마나 되는지 보려면 TESV ESS Files Editor(TESVESSE)나 FallrimTools로 String이 몇개나 되는지 보면 된다.
스카이림 레전더리 에디션에서 이 문자열 제한을 해결하는 방법은 크게 두가지다. 문자열을 많이 추가하는 대형 모드를 포기하거나, 스페셜 에디션으로 넘어가거나, Crash fixes 모드에 내장되어 있는 세이브 파일 문자열 제한을 늘려주는 기능을 쓰는 것이다.[9] 스페셜 에디션의 경우는 이 자체 문자열 제한이 어떤지 정확히 알 수 없으나 리마스터인 만큼 레전더리 에디션에서 기본 시스템이 크게 바뀌진 않았을 것으로 보인다. FallrimTools에 ReStringer 기능이 있어서 문자열을 정리해준다고 하는데 정확히 얼마나 줄여주는지는 알 수 없다.

5. 콘솔 치트 명령어


베데스다 소프트웍스의 게임들 중 게임브리오 엔진으로 만든 것들(특히 엘더스크롤 3: 모로윈드, 엘더스크롤 4: 오블리비언, 폴아웃3, 폴아웃: 뉴 베가스, 엘더스크롤 5: 스카이림)은 굉장히 버그가 많기로 유명하기에 심지어는 특정 퀘스트가 '''치트키를 써야만 진행되는''' 경우도 있어서, '''막힌 진행을 푸는 데 필요한''' 치트키만 등재한다.[10] 참고로 이건 개발자가 의도로 넣은 치트키라기보단 디버깅이나 모드 제작에 쓰이는 콘솔 명령어다.
참고로 발매연도가 다른 만큼 아래 서술한 콘솔 명령어중 일부는 특정 게임에서만 작동하는 경우가 많다. 기본적인 몇 몇가지는 비슷할 지 몰라도. 모로윈드의 콘솔 명령어는 사실 밑에 있는 콘솔 명령어들과는 구성이 다른 경우가 꽤 많고, 또 밑에 서술된 명령어들 중 일부는 최신작(이었던)뉴 베가스에서만 적용 되는 명령어이다. 폴아웃3와 오블리비언은 적용 가능한 명령어의 범위가 거의 비슷하다. 그리고 스카이림의 경우에는 콘솔명령어가 또 다르다.
뉴 베가스와 스카이림의 경우 '''치트키를 사용하고 그대로 게임을 진행하면 도전 과제가 꺼진다.''' 이 현상을 막기 위해서는 치트키를 사용한 뒤 저장을 하고 게임을 껐다가 켜야만 한다.
콘솔 입력을 하는 방법은 게임상에서 `(~)키[11]를 눌러 콘솔창을 띄우고, 콘솔 명령어를 입력한뒤 엔터를 치면 된다. 콘솔창을 띄운 상태에서 화살표 상하키를 누르면 이전에 입력했던 콘솔 명령어가 나오니 여러번 반복입력할 필요 없이 간단하게 입력할 수 있다. 콘솔창을 띄운 상태에서 마우스로 캐릭터나 오브젝트를 클릭하면 콘솔창 상단에 작게 레퍼런스 아이디가 표시된다. 일부 명령어는 이 레퍼런스 아이디가 선택된 상태에서만 먹히는 경우도 있으니 주의해서 사용하자. prid 명령어로 확실하게 레퍼런스 아이디를 지정할 수도 있다.
자세한 콘솔 명령어는 다음 링크글을 참고하길 바란다.

5.1. 파일 확장자 설정 (ESP, ESM, ESL)



5.2. 단독 사용 가능


참고로 앞에 player.가 붙는것들은 3인칭으로 전환한다음 자기자신을 클릭하면 굳이 치지않아도 된다. 반대로 player를 빼고 다른 캐릭터를 클릭한 상태에서 해당 명령어를 치면 그 캐릭터에 아이템을 주거나 스텟을 올리는 식으로 쓸 수 있다.
  • help <문장>
help만 입력하면 화면의 모든 정보가 표시되지만 콘솔창이 좁다... 올바른 사용법은 아이탬코드를 찾거나 콘솔명령어의 사용법을 찾을수 있다. 예를들어 help tgm을 타이핑하면 tgm이 무엇하는 명령어인지 알려주며, help <아이템코드 또는 이름>을 입력하면 해당 아이템의 정보가 출력되며, 일치하는 아이템 이름이나 코드가 없다면 그 명칭이나 코드를 포함한 모든 코드값이 출력된다. 모드로 추가된 것을 찾을 때 사용하면 좋다.
  • gbo
npc나 물품의 레퍼런스 아이디가 아니라 베이스 아이디를 알 수 있다.
  • 플레이어 설정
    • showracemenu
캐릭터생성 메뉴를 불러온다. 기본적으로 게임 도중에 캐릭터의 외형을 바꿀 때 사용하는 명령어. 단, 스킬레벨이 기본값으로 돌아가니 주의. 찍혀있는 퍽은 유지된다.
  • showinventory
인벤토리에 있는 아이템들의 ID를 보여준다. 축약 명령어는 inv 이다. player.showinventory 를 치면 플레이어 캐릭터의 인벤토리를 보여준다.
  • additem <아이템> <수량> / removeitem <아이템> <수량>
각각 아이템을 플레이어의 인벤토리에 넣는 것과 빼가는 것이다. player.additem <아이템> <수량>, player.removeitem <아이템> <수량> 을 치면 플레이어 캐릭터에 아이템이 추가되거나 제거된다. 퀘스트 아이템과 관련해서 꼬였을 때 유용하다. 베데스다의 게임은 종류불문하고 아이탬코드에 f가 화폐로 통용된다.
  • player.advlevel
묻지도 따지지도 않고 바로 레벨업 설정된 레벨 캡을 초과하는 것도 가능하다. 그러나 퍽이나 스킬 등은 제대로 얻지 못할 수 있고 이런저런 오류가 생길 수 있다.
  • player.setrace <종족명>
종족 변경. 외모는 바뀌지 않고 몸통만 바뀐다. player를 치지 않고 NPC를 찍고 치면 NPC에게도 사용 가능.
  • SetPlayerRace <종족명>
위와는 달리 아무런 변화가 없이 종족을 바꿀 수 있다. 레드가드로 시작해서 콘솔로 노드로 바꾼다면 노드로 취급받을 수 있다.
  • player.setlevel <값>
경험치 진행도나 스킬, 이미 올린 능력치 등의 다른 수치에는 영향을 미치지 않고, 레벨만을 입력한 값으로 만든다. 현재 레벨보다 낮은 값을 입력해서 레벨을 내리는 것도 가능하며, 그렇게 레벨 스케일링을 낮추는 것도 가능. 폴아웃4 에서는 player.advlevel은 아무 반응도 없지만 이 치트를 쓰면 player.advlevel처럼 경험치를 받으면서 입력한 수치만큼 레벨업 한다.
  • player.modav <스테이터스> <수치>
체력(heath), 지구력(stamina), 무게(carryweight)등의 스테이터스나 스킬의 레벨을 <수치>만큼 올린다. 10일때 50을 올리면 60이 된다.
  • placeatme <코드> <수량>
클릭했거나 prid로 선택한 레퍼런스 대상옆에 NPC나 몬스터를 복사해서 소환한다. player.placeatme <코드> <수량>을 치면 NPC나 몬스터를 플레이어 옆에 복사해서 소환한다. 이 명령어를 쓰면 도플갱어마냥 npc가 복제되므로 되도록이면 moveto player 명령어를 쓰기 바란다.
  • player.showrepairmenu
장비들을 수리할 수 있게하는 치트이지만 수리 레벨의 영향과 일정 이상의 캡을 요구하는 치트이다. 간단하게 player.srm만 입력해도 된다. 스카이림같이 수리 시스템이 없는 게임의 경우 당연히 명령어가 먹히지 않는다.
  • player.getav <코드>
현재 플레이어의 몇몇 코드값을 표시해준다. 정확히 표시되지 않는 수치 (맨손 데미지, 명성, 악명 등) 을 확인할 수 있다.
  • player.forceav <코드> <수치>
수치만큼 코드의 데미지를 조절해준다.
<코드>
맨손
한손무기 또는
양손무기

마법
명성
악명


  • player.setscale <수치>
수치만큼 캐릭터의 크기를 조절해준다. 키우면 키울수록 근접 데미지와 이동속도, 점프 높이 등이 커진다. 최대는 10이며 최소는 0.1이다.
  • 퀘스트 명령어
    • showquesttargets
현재 진행중인 퀘스트의 ID를 보여준다 밑의 코드를 쓰기위해서 쓰기도한다.
  • resetquest <퀘스트>
퀘스트가 꼬였을 때 퀘스트를 수행하기 전으로 되돌린다.
  • getstage <퀘스트>
해당 퀘스트ID의 단계를 보여준다.
  • setstage <퀘스트> <단계>
퀘스트의 단계가 해당하는 단계로 변한다. 퀘스트가 꼬여서 정상적으로는 진행이 불가능할 때. 다만 한번 사용하면 이전 단계로 되돌리는 것은 불가능하며, 이미 분기 퀘스트 중 한쪽 분기를 선택한 후라면 이 명령어로 다른쪽 분기를 선택한 것 처럼 꾸며도 게임상에 아무런 영향이 미쳐지지 않는다.
  • set "<퀘스트>".<변수명> to <변수값>: 퀘스트 관련 변수의 값을 바꾼다.
라울 테하다의 퀘스트와 같이 한 번 기회를 놓치면 퀘스트가 꼬이는 것들 중 이것이 필요한 경우가 있다. 따옴표를 생략하지 말자.
  • CompleteAllObjectives <퀘스트>
SetObjectiveCompleted
스카이림전용명령어. miscellaneous 탭에있는 퀘스트를 바로 클리어하는것으로 바꾸는 명령어이다. 게임내에 클리어가 안되는 오브젝티브들이 몇몇있기때문에 쓰게된다.
  • enableplayercontrols
강제 움직임 명령 콘솔. 움직일 권한이 없는 이벤트에서 사용하면 움직일 수 있다. 헬겐에서 처형대에서 도망쳐야 할 상황에 굳어버리는 버그가 발생했다면 버그로 조종 권한이 생성되지 않은 것이다. 그럴 때 사용하면 해결 가능. 내전 퀘스트 회담장같이 아무데서나 사용한다면 가끔 튕긴다.
  • 토글 명령어
    • tgm
toggle god mode. 모든 행동에 자원(체력, 지구력, 총알, 화살등)을 소모하지 않게되고 스카이림의 경우 최대마나량을 초과한 마법도 사용할 수 있으며, 용언의 쿨타임도 사라진다. 단 화살과 총알은 1발 이상 소유/장전 되어있어야한다.
  • tim
toggle immortal mode. tgm과는 다르게 죽지만 않는 상태로 체력과 마나, 스테미나가 소모되지만 체력이 0이 되어도 죽지않는다. 단 빈사상태에서 참수를 당하면 고어물을 보게되니 주의.
  • tcl
toggle collision. 이름 그대로 캐릭터나 오브젝트의 충돌값을 없앤 상태로 만든다. 중력과 지형을 무시하는 상태가 되므로 주로 어딘가에 끼이게 됐을때 사용한다.
  • tfow
맵상의 안개를 모두 없애준다. 스타크래프트 치트키Black Sheep Wall과 같은 역할.
  • tfc
toggle freefly camera. 카메라가 자유비행상태가 된다.
  • sucsm <값>
자유비행상태 카메라의 이동속도를 조절한다. 그냥 tfc 명령어를 치면 카메라 속도가 빨라 캐릭터에 카메라를 맞추기 힘들기 때문에 sucsm 5 정도로 입력하고 카메라를 움직이면 좋다.
  • tmm 0or1
toggle map markers. 1을 입력하면 지도의 모든 맵마커가 활성화 되며, 0을 입력하면 모든 맵마커가 사라진다.
  • tdetect
toggle detect. AI들이 플레이어를 인지하지 못한다. 멀쩡히 눈앞에서 NPC를 때리거나 소매치기를 해도 플레이어를 인식 못한다.
  • tai
toggle AI. 인공지능을 꺼버린다. 걷는 NPC에게 사용하면 계속 목적지까지 걷다가 멈춘다.
  • tcai
toggle combat AI. 전투 인공지능을 꺼버린다. 다시 입력하면 전투를 다시 시작한다. 간단히 말해서 이걸 치면 NPC들이 싸움을 못하는 바보가 된다. 자기는 비폭력주의인데 동료가 폭력주의라서 다른 NPC를 때려서 평화롭게 수행하려는 퀘스트를 망쳐버릴 때, 또는 동료나 다른 중립 NPC들끼리 싸움이 벌어졌을 때 써주면 좋다.
  • resetAI : 해당 NPC의 ai를 초기화한다. 실수로 싸움이 났을때 써주면 상황이 종료된다.
  • 게임 설정
setgs는 Set game setting의 약자이다. setgs로 입력하는 명령어들은 GetGS 으로 입력하면 현제값을 보여준다.
  • fov <각도>
field of view. 카메라 시야각을 조절한다. 시야각이 다소 답답한 스카이림에서는 조정이 필요할지도?
  • setgs fmoverunmult <값> : Set game setting. 달릴때의 이동속도를 설정한다. 바로 적용되는것이 아니라 무기를 빼들거나/집어넣거나 다시 불러오면 적용된다. 모든 캐릭터들이 적용되기 때문에 3배 더 빠른 데스클로를 볼 수도 있다. 플레이어만 적용하고 싶다면 player.forceav speedmult <값>으로 하면 된다.
    • player.setav speedmult <값> : 이동시의 이동속도를 설정한다. 스카이림 전용치트. 여기서 값은 %를 뜻한다. 기본속도는 100이고 2배속이면 200 이런식.
  • setgs fjumpheightmin <값> : 점프시의 높이를 설정한다. 기본값은 64라는듯, 일단 1000이고 100만이고 1억이고 까지 설정이가능하다. 그러나 낙하 데미지는 그대로므로 잘못 사용하면 끔살... 그리고 뉴 베가스에서는 일정 높이 이상 점프하면 상승을 멈춰 버린다. 일종의 버그.[12] 위의 이동속도 설정처럼 게임 전체 적용인듯하나 AI는 점프를 안한다. 스카이림에서는 앞에 player.를 붙여줘야 한다. player를 붙어야한다는 점에서 알수있지만 스카이림부터는 전체적용이 아니다.
  • setgs iHoursToRespawnCell <값> : 일반지역의 리스폰기간을 수정한다. (폴아웃 3, 뉴베가스는 72시간(3일) 스카이림은 240시간(10일) 폴아웃 4는 168시간(7일)
  • setgs IHoursToRespawnCellCleared <값> : 클리어한곳의 리스폰기간을 수정한다.(스카이림 부터) (스카이림은 720시간(30일) 폴아웃 4는 480(20일)
  • setessential <값> : 여기서 값에 1이면 NPC를 불사로 만들수 있고 0으로 하면 불사속성을 제거할수있다. 중간의 base ID는 클릭해서 나오는 레퍼런스 ID가 아니니 주의. 하드코어같은것도 아닌데 동료에게 불사속성이 걸려있지않아 자꾸 쓰러질때 써주면 좋다.

5.3. 레퍼런스 ID 필요


  • prid <대상>
레퍼런스 ID가 필요한 명령어에 대해 레퍼런스 ID를 지정한다. 사실 가시범위 내에 있으면 이 삽질 안하고 그냥 마우스로 클릭하면 된다.
  • player.moveto <레퍼런스 ID>
해당 대상으로 플레이어를 이동시킨다. 모드떡칠로 인해 특정건물에 들어갔다 나오면 튕기는 버그가 생긴경우 모드를 지우지 않고 해결하고 싶다면 다른 지역에 있는 인물에게 이동하면 결과적으로 튕기지 않고 건물밖에 나갈 수 있게 된다.[13]
  • moveto player
위의 명령어와는 반대로 대상을 플레이어에게 이동시킨다.
  • kill, killall
다른말이 필요한가? 선택한 NPC를 죽인다. 경험치는 받지 못하고, 죽이지 못하는 NPC는 죽일수 없다.[14] 루팅은 가능하다. 밑의 resurrect와 병용하면 무한 루팅 가능.(……) 물론 팩션에 영향도 가지 않는다. 하지만 특정 중요 NPC의 경우, kill을 사용하더라도 변화가 올수 있다. 이건 주로 해당 NPC의 죽음 자체가 원래 팩션에 영향을 끼치게 되어 있어서 그런 것.
  • disable, enable
kill과 다르게, 해당 NPC 또는 오브젝트를 게임상에서 보이지 않게 만든다. 다시말해 시체도 남기지 않고 없애버린다. 이는, 특정 NPC가 버그를 통해 움직이지 않을때 enable과 함께 병용하여 버그를 해결할수 있다. 예를 들면 Still in the dark 퀘스트에서 엘더 맥나미라가 커맨드룸에 돌아가지 않고 제자리에 서있을때, 콘솔창을 열고 disable을 입력해서 삭제한 뒤, enable을 입력해서 다시 살려내면 정상 진행된다. 만일 잘못해서 다른 오브젝트를 선택하거나 콘솔창을 꺼버렸다면? 해당 게임의 위키에서 해당 NPC의 레퍼런스 값을 알아내서 enable 뒤에다 붙여서 입력하면 그만. 다만 엄밀히 말하면 완전히 없애버리는게 아니라 그냥 그 NPC나 오브젝트를 화면상에서 보이지 않게 만드는 것일 뿐이기 때문에 시스템 과부하는 계속 걸린다고 한다.
  • markfordelete
게임상에서 삭제시킨다.하지만 disabl과는달리 완전히삭제되니 주의바람.
  • addtofaction <팩션 ID> <팩션 랭크> : 축약형 명령어는 addfac. NPC가 특정 팩션에 포함되게 만든다. 예를 들어 addtofaction 0005C84D 1 을 입력하면 해당 NPC를 동료로 삼을 수 있다. addtofaction 00019809 1 을 입력하면 그 NPC가 결혼가능 팩션에 들어있는 것으로 설정되어 결혼을 할 수 있게 된다. 다만 고유의 목소리 파일을 가지고 있는 NPC나 종족에는 적용되지 않는다. addtofaction xx004290 1 을 입력하면 해당 아이 NPC를 입양할 수 있다.[15] addtofaction 0005A1A4 1 을 입력하면 플레이어와 우호 관계가 된다. 벨레쏘어 버그의 경우 addtofaction 51596 1 과 addtofaction 51599 1 두개의 팩션을 입력해주어야 한다.
  • setav <능력치> <수치>
해당 NPC의 능력치를 조정가능. 여담으로 NPC능력치중 Aggression(공격성)이란 항목이 있는데 이걸 NPC상대로 100으로 지정해주면 막 날뛰다가 주변 사람들이 해당 대상을 알아서 살해한다. 플레이어는 해당 없음.
  • setrelationshiprank <레퍼런스 아이디> <수치>(0=지인(일반적인상대), 1=친구, 2=절친한친구, 3=동맹, 4=연인(결혼가능) -3=적)
스카이림에서는 수치적으로 조정되던 NPC의 호감 체계가 간단한 단계만 따지도록 바뀌었기 때문에 생긴 콘솔 명령어. 1, 2, 4가 에보니 블레이드로 썰면 인식되는 상대이다.
  • resurrect: 대상을 초기화하고 부활시킴. 보유하고 있던 아이템의 종류와 수량이 바뀌니 주의해야 한다.[16]
  • resurrect 1: 대상이 초기화하지 않고 부활시킴. 보유하고 있던 아이템의 종류와 수량은 유지된다. 머리나 팔다리가 날아간 캐릭터에게 이걸 쓰면 잘려나간 사지는 회복되지 않은 상태로 부활되므로 그야말로 고어 영화가 된다.
  • lock: 자물쇠나 컴퓨터 등을 다시 잠근다.
  • unlock: 대상이 잠겨 있으면 딴다. 게임 내에서 자물쇠 따기나 과학 요구 수치를 설정해둔건 다 개발자들이 생각이 있어서 해둔거니까(……) 아무데나 쓰지 말고 게임 하다가 가는 길이 갑자기 버그로 잠겼다거나 할 때나 쓰자.
  • unlockword : 해당 용언 아이디를 입력하면 그 용언을 배운다.
  • setownership: 대상의 소유권을 자신에게로 넘김.
분명 자기가 정당하게 얻은 물건인데 훔친 물건 취급을 받는 어이없는 상황에서 사용. 꼭 물건이 아니라 문이나 물등 붉게 이름이 나오면 뭐든지 가능.침대는 안된다.
  • openactorcontainer 1 : 선택한 NPC의 인벤토리를 이용할 수 있다. 쉽게 말해 해당 엔피씨에게 물건을 줄 수도 있고 빼앗아 올 수도 있는데, 이 경우 어떤 패널티도 없다. 개인 캐비넷에 물건을 보관하고 꺼내오는 것과 같은 취급. 폐품업자나 카라벤에게 장구류를 쥐어주고 싶은데 소매치기 방법이 귀찮다면 써 봄직하다.(스카이림에서는 적용이 안된다.)
  • removemusic <배경음악아이디> : 음악을 일시적으로 꺼버린다. removemusic MUScombatcivilwar, removemusic musdungeon 같은 식으로 입력하면 된다. 보통 배경음악이 무한 반복되는 버그에서 해당 음악 아이디를 찾은뒤 입력하는 식으로 사용한다.
  • sexchange : 다소 변태(?)적인 콘솔키로 앞에 player.을 붙이면 플레이어 자신이, npc를 클릭하고 입력하면 해당 엔피씨의 성별이 바뀌는 커맨드다. 근데 말그대로 성별만 바뀐다. 즉 수염같은 외모 부분은 그대로 남아있는 수준. #[17]
    • setscale : 대상의 크기를 바꾼다. 최대는 10이고 최소는 0.1

6. Papyrus


게임브리오엔진에서 포크후 크리에이션 엔진이라는 이름을 붙이며 도입된 스크립트 언어. 최초로 이를 사용한 게임은 엘더스크롤 5: 스카이림이며 그 이후 폴아웃 4에서도 언어 자체의 명세 그대로 적용되어 베데스다의 스크립트 언어로 계속 사용될 예정으로 보인다.
Papyrus 이전 사용되던 스크립트 언어의 경우 별 다른 이름도 없었을 뿐더러 Fragment 라 하는 특정 목적의 소규모에나 어울릴 언어적 특성을 가진 반면 Papyrus는 객체 지향이 도입되고 언어 차원에서 스레딩을 지원하는 등 기존 스크립트 언어와의 유사성이 거의 없어졌다.
상속에
extends
키워드를 사용하는 등 전체적인 모습은 Java와 유사하다.

6.1. 기존 스크립트 언어와의 차이


  • 스크립트 파일이 독립되었다. 기존에는 플러그인 파일인 esp 파일 내부에 스크립트가 직접 저장되는 방식이라 에디터가 없으면 스크립트 수정이 어려웠던 것에 소스코드와 컴파일된 바이트코드가 esp로 부터 분리되어서 크리에이션 킷을 실행시키지 않더라도 스크립트를 외부 에디터로 직접 수정하고 컴파일하는 것이 가능해 졌다.
  • short
    ,
    long
    과 같은 자료형이 삭제되고 모두
    int
    로 대체되었다.
사용 가능한 데이터형은
int
,
String
,
Bool
,
Object
,
Float
이며
int
float
의 경우
0
이면
false
, 그 외는
true
이고 Zero-Length의
String
이나 선언만 되고 할당되지 않은
object
(null) 는
flase
그 외는 모두
true
로 취급되어
if(myObject)
와 같은 idiom을 사용하는 것이 가능하다.
  • 한 스크립트 내에 다수의 함수를 지정할 수 있다.
기존 스크립트의 경우 게임 내에서 제공되는 빌트인 함수 이외에 사용자가 별도로 함수를 만드는 것이 불가능 하였고 OBSE를 통해서만 가능했다. 그 마저도 한 스크립트 파일 내에 한 함수만 생성이 가능한 방식이라 제약이 많았으나 대부분의 프로그래밍 언어들 처럼 여러 함수들을 선언하는 것이 가능하다.
  • import
    키워드를 통해 외부 스크립트의 인터페이스에 접근이 가능하다. 이를 통해 다른 프로그래밍 언어들 처럼 전체 소스코드를 공개할 필요 없이 Function Prototype 만을 제공하는 것이 가능하다.
  • 변수에 대입연산자
    =
    가 추가되었다. Papyrus의
    foo=123;
    는 기존 스크립트 언어에서는
    set foo to 123
    과 같은 식이였다.
  • 객체지향이 도입되었다. 기존 스크립트 언어에서 NPC나 플레이어의 상위 객체인
    Actor
    의 경우 기존에는 언어 자체의 빌트인 키워드 처럼 사용되었지만 Papyrus 에서는 이 또한 객체이며 이를 사용하기 위해
    import
    를 사용하고 코드 내에 해당 객체를 지정하고 사용하여야 한다.
  • new
    키워드. 객체 지향과 함께 객체를 할당하는데 있어 다음과 같이 할당하는 것이 가능하다.
    MyObjectRef[] MyObject = new MyObjectRef[10];

6.2. 예시


Scriptname HelloWorld
{Call HelloWorld to Print a message}

; Print "Hello World" message box.
Function HelloWorld()
  Debug.MessageBox("Hello World!");
EndFunction

6.3. 파피루스 로그


파피루스 로그 에러메시지 번역 및 해설

7. 관련 문서



[1] 단.. 몇몇 dll이 요구된다.[2] 스카이림 스페셜 에디션 게임 내부의 모드 페이지를 쓸때 입력하는 계정과 동일하다. 여러모로 있는게 편하니 그냥 편하게 하나 만들자.[3] 받는건 런처에서 스카이림 스페셜 에디션 크리에이션 킷 버튼을 누르고 오른쪽 하단의 Install 버튼을 누르면 된다.[4] Steamapps\\common\\Skyrim[5] 실제로는 한 모드가 여러 esp, esm 파일을 포함한 경우도 있고, 패치를 위해 추가 esp 파일을 설치해야 하는 경우도 있기 때문에 200여개가 사실상 모드 설치 개수의 한계다. 물론 메쉬 파일인 nif 파일이나 텍스처 파일인 dds 파일만으로 된 모드 같은 건 이 제한에 포함되지 않는다.[6] Elder Scroll Master 의 약자인 듯.[7] 아무런 모드의 영향을 받지 않은 스카이림 그 자체를 지칭한다.[8] 예를 들자면, 만약 당신이 설원 트롤을 변경하는 두 개의 모드를 로딩했다면 일반적으로는 더 최근에 로딩한 모드(모드 목록에서 제일 하단에 있는 모드)가 적용된다.[9] Crash fixes의 ini에서 StringCount32=1로 설정하면 된다. 이전에는 메모리 할당 기능인 UseOSAllocators=1이라고 작성되어 있었는데 세이브 파일 문자열 제한 늘려주는 옵션은 저게 맞다. 메모리 패치를 SSME나 SKSE로 사용하는 경우에도 Crash fixes의 다른 옵션들은 다 끄고 저것만 활성화시켜서 같이 쓸 수 있다.[10] 하드코어 치터(……)라면 이것보다 더 자세히 설명되어 있는 위키를 참고해보자.[11] 숫자키 1번 옆에 있는 키. 미국에서는 tilde key (~), 영어에서는 grave key ( ` ) 라고 한다.[12] 정확히는 체공하는 시간이 일정 시간(약 1.5초?)가 넘으면 그냥 그 위치에서 공중에 턱 하고 멈춰 버린다.[13] 특이사항으로, 스카이림에서 이 코드에 죽은 NPC의 레퍼런스 ID를 입력하게 되면 최근에 죽인 NPC들의 시신이 쌓여있는 십자 모양의 알록달록한 공간으로 이동하게 된다. 가끔가다 죽지도 않은 NPC가 갇혀있기도 하며, 살아있었을(?) 때와 똑같은 대화를 나눌 수도(...) 있다.[14] 그럴때엔 setessential 명령어로 불사 속성을 제거하고 죽이는게 가능하지만, 불사 속성을 부여해 준 것은 다 이유가 있는 것이다.[15] xx는 허스파이어 로드 순서. 보통 03, es7 한국어 번역 패치를 쓰고 있을 경우 05다.[16] 특정 아이템을 가지는 NPC(폴아웃 3에서 GNR 앞에 팻 맨을 들고 죽은 시체등)는 부활하면 루팅 전의 아이템을 보유한다(즉, 미니 뉴크 등이 돌아온다!)[17] 저게 어떤 상황이냐면, 한 유저가 여캐의 외모가 맘에 안들어서 남캐로 바꿔야겠다고 하자, 다른 유저가 댓글로 해당 키를 알려줘서 생긴 참사다.