최근 수정 시각 : 2024-11-03 16:43:13

베데스다 크리에이션 킷

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

1. 개요

파일:CreationKitSplash.png

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

2. 상세

엘더스크롤 3: 모로윈드의 PC판은 TES Construction Set이란 프로그램이 별도 CD로 본 게임과 함께 포장되어 있었는데 이것이 오늘날의 크리에이션 킷의 조상이라 할 수 있다. 폴아웃 시리즈에 있는 Garden of Eden Creation Kit 프로그램도 기본적으로는 Construction Set을 수정한 프로그램이다. G.E.C.K.의 경우 폴아웃 3의 발매 직후 바로 공개된 것은 아니며, 약 2달 정도의 간격을 두고 2008년 12월에 처음 공개되었다. 엘더스크롤 4: 오블리비언의 모드 툴인 컨스트럭션 셋과 거의 동일한 인터페이스와 구조를 가지고 있었기 때문에, 기존에 오블리비언 모드 제작에 익숙한 사람이라면 간단한 모드 정도는 매뉴얼도 한 번 들여다 보지 않고도 제작이 가능하였다. 이러한 구조는 엘더스크롤 5: 스카이림의 모드 툴인 크리에이션 킷에 이르기까지 계속 적용되었으며, 베데스다 게임 스튜디오가 기존 모드툴의 사용에 익숙한 모더들을 채용하는 것으로 볼 때 엘더스크롤 시리즈 폴아웃 시리즈의 차기작에 있어서도 모드 툴의 기본 구조는 바뀌지 않을 것으로 예상된다.

비단 에디팅이나 모딩뿐만 아니라 아이템의 스펙 같은 게임 내부 정보를 볼 수 있기에, 그런 정보를 뜯는 사람들에게도 유용한 도구.

2017년 10월 31일 스카이림 스페셜 에디션 전용 크리에이션 킷이 모든 유저에게 풀렸다. 2022년 이전에는 베데스다 런처를 다운받아야만 설치할 수 있었으나 마이크로소프트의 제니맥스 인수 이후 베데스다넷 서비스가 종료되면서 스팀에서 다운받아 설치할 수 있도록 바뀌었다. 폴아웃 4 전용 크리에이션 킷도 마찬가지로 스팀에서 다운받아 설치할 수 있도록 바뀌었다.

3. 설치

크리에이션 킷은 스팀에 올라와 있으니 당연히 스팀 계정과 스카이림 레전더리 에디션 또는 스카이림 스페셜 에디션은 필수다.

스카이림 레전더리 에디션 크리에이션 킷 툴은 스팀의 도구 탭에서 간단하게 다운받을 수 있다.
  • 스팀을 실행하고 로그인한다.
  • 스팀이 최신 버전인지 확인한다.
  • 게임 라이브러리에 들어간다.
  • 왼쪽 목록의 상단의 다운 메뉴에서 "도구" 탭을 선택한다.
  • "Skyrim Creation Kit"을 찾는다.
  • 우클릭한 후 "게임 설치"를 선택한다.

만약 스카이림 애니버서리 에디션 버전을 다운받았다면 Skyrim Special Edition: Creation Kit이라는 별도 버전이 있으니 헷갈리면 안된다. 스페셜 에디션용 크리에이션 킷 툴은 이 스팀 페이지에서 다운받을 수 있다. 주의할 점이 있는데 이 툴은 애니버서리 에디션 버전만 되고 구 스페셜 에디션 버전(1.5.97 버전 이하)은 Creation Kit Downgrade Patcher을 다운받아야 한다.

폴아웃 4용 크리에이션 킷 툴은 이 스팀 페이지에서 다운받을 수 있다.

폴아웃 3 버전 G.E.C.K.는 G.E.C.K. 위키를 참고.

스타필드용 크리에이션 킷 툴은 이 스팀 페이지에서 다운받을 수 있다.

모드 오거나이저 2에서 크리에이션 킷을 실행하는 방법은 이 글 이 글을 참고.

스카이림 키코드(Key code) 페이지는 이 글 참고.

3.1. 오류 해결

참고로 Creation Kit(모드 커뮤니티에서는 CK라 부름)을 써서 모드를 제작할 때는 꼭 스카이림을 시스템이 설치된 드라이브에 같이 설치해주자. 윈도우가 C 드라이브에 설치되어 있으면 스카이림도 C에 설치해줘야 CK를 쓸 때 각종 에러들이 사라진다.

베데스다에서 만든거 아니랄까봐 크리에이션 킷 자체에도 버그나 성능 하락 현상이 있기 때문에 SSE CreationKit Fixes F4 Creation Kit Fixes 같은 모드를 깔 필요가 있다.

기본적으로 프로그램이 UTF-8을 인식하지 못하기 때문에, 한국어를 입력할 경우 깨지는 현상이 일어난다. 따라서 한국어를 사용하려면 한국어 패치를 설치해야 한다. 스페셜 에디션 버전의 경우 이 글을 참고할 것.

쓰다 보면 도대체 이런 불안정한 소프트웨어로 어떻게 게임을 만들었을까 생각이 들 정도로 문제점들이 많다. 갑자기 꺼진다거나 멈춘다거나 텍스트가 깨진다거나 하는 문제는 다반사다. 모더들도 그냥 대부분의 작업은 xEdit로 하고 크리에이션 킷은 정말 어쩔 수 없이 써야될 때[1]만 쓴다.

스카이림 루트 폴더[2] 내부에 있는 SkyrimEditor.ini를 열어서 bEnableAudioCache=1에서 =0으로 바꿔주면 그나마 조금 해결된다.

런처가 실행되고 화면이 까맣게 변해 보이지 않을 땐 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) 파일을 잠시 다른 곳에 옮겨두고 실행해보자.

스크립트 등을 수정할 때 저장이 안되는 일이 있는데 이를 막기 위해 관리자 권한으로 실행해야 한다.

0000065432, flowchartx 관련 오류는 이 글을 참고.

기타 오류들은 다음 글을 참고. #


파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 문서의 r66에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문단의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r66 ( 이전 역사)
문서의 r ( 이전 역사)

4. 사용법

creationkit.com 사이트에 기본적인 튜토리얼이 있다. 페이지 언어가 영어 등으로 나온다면 페이지 하단의 Language 선택란에서 한국어를 선택해보자. 아쉽게도 한국어 번역이 없는 페이지가 더 많다. 어느 한국 유저가 한때 크리에이션 킷 강좌 블로그에 번역을 올려 두었으나 아쉽게도 2022년 기준으로 블로그가 사라져 볼 수 없게 되었다. 그나마 남아있는 일부 번역글은 다음과 같다.


베데스다 공식 레벨 디자인 가이드 목차
스카이림에서 사용되는 객체(object)에 대한 개략적 설명
베데스다 공식 레벨 디자인 가이드 (0): 개요와 인터페이스
베데스다 공식 레벨 디자인 가이드 (1): 방 생성 기초 1/2
베데스다 공식 레벨 디자인 가이드 (2): 방 생성 기초 2/2
베데스다 공식 레벨 디자인 가이드 (3): 기물 배치(Cluttering)
베데스다 공식 레벨 디자인 가이드 (4): 네비메쉬(Navmesh)
베데스다 공식 레벨 디자인 가이드 (5): 기본 인카운터(Encounters)와 순찰 동선(Patrol) 만들기
베데스다 공식 레벨 디자인 가이드 (4): 네비메쉬(Navmesh)


베데스다 공식 스크립트 가이드 튜토리얼
베데스다 공식 스크립트 가이드 1편
베데스다 공식 스크립트 가이드 2편
베데스다 공식 스크립트 가이드 3편
베데스다 공식 스크립트 가이드 4편


번역시 주의사항이 몇가지 있다. 대표적인 예중 하나로 ID 유형 중에 종족(RACE) 내용을 한국어로 번역할 때는 맨 앞에 한 칸을 비워둬야 한다. 그렇지 않으면 CTD가 발생한다고 한다. 그리고 앞처럼 치명적인 문제는 아니지만 연금술 포션(ALCH), 갑옷(ARMO), 마법 부여 효과(ENCH), 광원(LIGH), 마법(SPEL), 무기(WEAP) 등 각종 명칭을 번역할 시 맨 뒤에 빈 칸이 들어가면 아이템 앞에 한 칸이 들어가서 나오니 되도록이면 지워주는게 좋다. 용언(WOOP)도 번역하면 ㅁㅁㅁ 같이 깨질 수 있으니 번역하지 않는게 좋다. 각 ID 유형에 대한 설명은 다음 글을 참고하자.

이하 내용은 관련 플러그인 파일이나 세이브 파일을 만들 때 알아둬야 할 내용들이다.

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

xEdit | Plugins w/ ESL & .esl (General DIY) (GamerPoets 제작)
ESL, ESP, ESPFE에 대한 정보
Persistent와 Temporary, ESM에 대하여
Starfield Creation Kit is now available - New plugin types

자세한 기술적인 내용은 위의 링크 글들을 참고. 스카이림의 게임 엔진인 Creation Engine은 게임브리오 엔진을 개조한 엔진이다. Creation Engine은 다른 베데스다 게임 스튜디오 게임들과 같은 파일 확장자를 사용하는데 그것이 바로 esp이다. 이후 esm 확장자가 추가되었으며, 폴아웃 4때 크리에이션 클럽이 나오면서 로드 제한을 벗어난 esl 확장자가 추가되었다. 스타필드 때에 esh 확장자가 추가되었으나 내부 플래그로만 설정 가능하고 표기상 확장자는 esm으로 통일되었다.

.esm[3] 확장자 파일 확장자는 마스터 파일(Master File)로 많은 데이터들을 담고 있다. 예를 들어 Skyrim.esm 파일은 바닐라[4] 스카이림의 데이터들을 담고 있는 마스터 파일이다. 전체적으로 esp 파일보다 더 많은 권한을 부여받은 것으로 알려져 있는데, 대표적으로 참조 항목(reference) 제한에서 좀더 여유롭다는 장점이 있다. 스카이림의 경우 일시적 참조 항목 개수 제한이 있고 그 개수가 1048576개로 알려져 있는데, esm 파일은 이 개수 제한의 영향을 덜 받는다고 한다. # 때문에 xEdit를 이용해 헤더 플래그 값을 수정해서 esp 파일을 esm화 시켜 이 제한을 벗어나게 만들기도 한다. 이를 ESM화된 ESP (ESMfied ESP) 파일이라고 하며, 이렇게 헤더 플래그 값을 수정한 esp 파일은 모드 배열에서 esm 사이에 위치시킬 수 있다. 대표적으로 스카이림 한국어 패치 중 엘더 7 카페 버전이 이렇게 ESM화된 ESP 파일이기 때문에 update.esm 파일과 dawnguard.esm 사이에 놓을 수 있는 것이다.

.esp 플러그인 파일(Plugin File)은 esm보다 작은 데이터들을 포함하고 있다. 이런 플러그인들은 마스터 파일이 포함하고 있는 데이터를 변경하거나 참조한다. 또는 아예 새로운 데이터를 담고 있을 수도 있다. 예를 들면 SexLab 많은 플러그인들이 게임이나 모더에 의해 로딩될 것이다. CK툴을 작동시킬 때는 오직 한 파일만 작동하는 파일로 인식된다. 즉, 많은 변화들이 한 개의 플러그인으로 저장된다는 것이다. 스카이림 레전더리 에디션 이하에서는 esp와 esm을 합쳐 255개만 설치할 수 있다. 이유는 해당 플러그인 확장자 파일을 설치하면 00에서 FF까지 16진수[5] 값의 플러그인 인덱스 값이 부여되는데, 이 갯수가 256개이기 때문이다. FF는 사용자 지정 영역[6]으로 하나 빠진다. 스카이림 본편과 DLC esm 파일 등을 빼면 사실상 레전더리 에디션에서 esp나 esm이 포함된 모드는 250개 이하만 설치할 수 있는 셈이다. 실제로는 한 모드가 여러 esp, esm 파일을 포함한 경우도 있고, 패치를 위해 추가 esp 파일을 설치해야 하는 경우도 있으며, 반대로 단순 텍스쳐 변경 등의 경우 esp를 요구하지 않는 경우도 있으므로 꼭 250개 모드까지 설치가 가능한 것은 아니다. 물론 메쉬 파일인 nif 파일이나 텍스처 파일인 dds 파일만으로 된 모드 같은 건 이 제한에 포함되지 않는다. 모드 배열상 기본적으로 esp 파일은 esm 파일보다 뒤에 배열되며, 헤더 플래그 값 수정 없이는 esm 파일보다 배열을 위로 올릴 수 없다.

스카이림 스페셜 에디션과 폴아웃 4에서는 .esl 레서 파일(Lesser File) 확장자가 새로 생겼다. 크리에이션 클럽을 위해 추가된 이 포맷 덕분에 모드 제한 255개에서 벗어나 249개의 esl 파일이 포함된 모드를 추가로 설치할 수 있게 되었다. 여기에 SSE Fixes 같은 모드를 깐 경우 1794개 모드를 추가로 설치할 수 있어 최대 2048개까지 모드를 설치할 수 있다고 한다. 이게 가능한 이유는 레전더리 에디션이 00에서 FF까지 16진수 레코드 값을 부여해 최대 255개까지만 esp 및 esm 파일을 설치할 수 있는 것과 달리, 스페셜 에디션의 경우에는 FE와 FF 사이에 추가 레코드를 부여해 2048개까지 모드를 설치 할 수 있도록 해두었기 때문이다. 이 때문에 스페셜 에디션의 esp의 경우 FE가 예약된 공간으로 하나 더 빠지면서 00~FD까지 최대 254개 플러그인이 설치 가능하다. xEdit를 통해 이런 esl 파일들을 열어보면 레코드 번호 값이 00~FF 같이 16진수 두자리 값으로 보이는게 아니라 'FE 000' 같이 부여되어 있는 것을 볼 수 있다.

이후 한 유저가 실험한 바에 따르면 ESL파일과 ESPFE파일을 포함해 최대 4080개까지 플러그인을 설치할 수 있다고 한다. # ESPFE파일은 실제 테스트 결과 플러그인 4080개까지 사용 가능했고, ESL파일은 29개까지 사용 가능했으며 30개부터는 사용 불가능했다고 한다. ESM파일+ESP파일+ESL파일+ESPFE파일 다 합쳐서 4334개까지 플러그인을 사용 가능하다고 한다. 그리고 모드 오거나이저의 오른쪽 목록에서 보이는 인덱스 번호가 FE:FF0에 도달하면 스카이림이 실행 불가능하고, FE:FEF까지는 스카이림 실행이 가능하다고 한다.

크리에이션 엔진은 내부 객체(오브젝트)의 ID를 Form ID라고 부르며 이는 32비트의 [[정수#int형 변수(정수형 변수)|unsigned int]]를 사용한다. (게임이 64비트 인것과 관련이 없다) 모든 내부 객체에는 020003C9 같은 16진수 8자리 숫자가 붙는데 스카이림 레전더리 에디션까지 이 구조는 다음과 같다.
ESP/ESM
0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7
Plugin Index Form ID

0x0에서 0x는 hex, 즉 hexa를 의미한다. 뜻은 6이라는 뜻으로 이 숫자가 16진수라는 걸 표시하는 관례적 표기법이다. 그냥 폼 아이디가 0~7까지 8개의 니블[7]로 구성되어 있다는 것만 알면 된다. 020003C9 라는 폼 아이디를 예로 들면, 앞의 '02' 두 니블은 플러그인 인덱스 번호고, 뒤의 여섯 니블 0003C9가 플러그앤 내부 폼 아이디다. 만약 플러그인 배열 순서(load order)를 바꿔 다른 모드를 선행으로 올린다면 이 폼 아이디는 '03'0003C9로 바뀐다. xEdit 등의 프로그램에서 xx0003C9 같이 폼 아이디가 표시되는건 이렇게 앞의 2 니블이 바뀌기 때문이다.

기존 ESP/ESM파일의 경우 MSB의 두 니블을 사용해 플러그인별 인덱스가 나뉜다. 게임 프로세스 자체가 사용하는 0x00인덱스와 다이나믹 레퍼런스가 사용하는 영역인 0xFF, esl이 사용하는 0xFE를 제외하므로 sizeof(unsigned char) - 0x3 == 0xFC 로 플러그인 갯수는 최대 252개이며, 각각의 플러그인들은 6바이트의 영역의 ID를 가진다. 다만 각 플러그인의 인덱스중 0x800 게임 프로세스 관리 영역으로 예약되어 이하의 영역은 사용할 수 없으므로 최대 0xFFFFFF - 0x800 == 0xFFF7FF로 16 755 167개의 ID를 가질 수 있다.

다만 이 방식으로는 아이템 추가 플러그인 같이 많은 Form ID를 사용하지 않는 경우 굉장한 낭비가 되다 보니 ESL의 경우 처리가 다음과 같이 다르다.
ESL
0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7
Plugin Index ESL Index Form ID

먼저 Plugin Index는 0xFE를 항상 사용한다. 그리고 3 니블을 플러그인의 Index로 사용하며 나머지 3니블을 Form ID로 사용하게 된다. 그러므로 0xFFF(4096)개의 플러그인을 사용 가능하지만 Form ID는 모드를 쓰지 않는 내부 관리용을 제외한 0xFFF-0x800만 사용하며, 따라서 최대 2048개의 레코드를 가진다.

해외 베데스다 게임 유저들은 이 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).[9]
  • 실내 셀 공간을 추가하거나 변경하거나 덮어쓰는 모드가 아니어야 한다(don't add interior CELL records).

이를 통해 보면 NPC 변경 모드나 아이템 추가 모드 정도만 espfe 파일로 변환하는게 안전할 것으로 보인다.

스타필드의 경우 xedit 모더 말에 따르면 기존 스카이림 스페셜 에디션이나 폴아웃 4와 다르게 esl 플러그인 구조가 많이 바뀌어서 xedit 구조를 많이 바꿔야 한다고 한다. # # 간단히 설명하면 미디엄 마스터와 오버레이 플래그라는 새 방식이 적용됐는데 이 방식은 플러그인 로드 오더나 플러그인 선행 마스터 순서를 마음대로 바꾸기 힘든 단점이 있다고 한다. 또한 1.7.36 버전 이후 오버레이 플래그는 문제가 있어 사용하면 안된다고 한다. #

2024년 6월 크리에이션 킷 업데이트로 밝혀진 내용은 다음 글을 참고하기 바란다. # 이 글에 따르면, 스타필드의 경우 플러그인 확장자는 esm만 사용한다. esp는 크리에이션 킷에서 임시 생성 파일로만 사용되고, esl은 사용하지 않는다고 한다. 대신 폴아웃 4때 espfe 방식처럼 플래그를 붙여 플러그인 유형을 구분한다. 플러그인 플래그 유형으로는 풀 마스터(Full Master), 미디엄 마스터(Medium Master), 스몰 마스터(Small Master) 유형이 있다고 한다. # 각 유형에 대해 설명하면 다음과 같다.
  • 풀 마스터(esm) - 이전 스카이림이나 폴아웃 4에 있던 esm 플래그 유형과 같다. 풀 마스터는 배열 순서(플러그인 인덱스) 중 00~FC까지 사용하므로 253개까지 설치 가능하다. 이 253개에는 기본 게임 및 DLC는 제외된다고 한다.
  • 미디엄 마스터(esh) - 스타필드에 새로 추가된 플러그인 플래그 유형이다. 이름의 esh 중 h는 half의 약자라고 한다. # 미디엄 마스터는 배열 순서(플러그인 인덱스) 254번째인 FD 자리를 쪼개 사용한다. 최대 256개의 미디엄 마스터 플러그인을 설치할 수 있다. 이 미디엄 마스터 하나에는 최대 65,535개의 레코드가 들어갈 수 있다고 한다. 새로운 장소, 행성 등을 추가하는 모드에 적합한 플래그다.
  • 스몰 마스터(esl) - 이전 스카이림이나 폴아웃 4에 있던 esl 플래그 유형과 같다. 이름의 esl 중 l은 lesser의 약자다. 이 플러그인은 배열 순서(플러그인 인덱스) 255번째인 FE 자리를 쪼개 사용한다. 최대 4,096개의 스몰 마스터 플러그인을 설치할 수 있다. 이 스몰 마스터 하나에는 최대 4,095개의 레코드가 들어갈 수 있다고 한다. 새로운 아이템, 함선, 무기, 소규모 인테리어 추가 모드에 적합한 플래그다.

따라서 스타필드의 경우 최대 4,605개의 모드를 설치할 수 있다. 표기상 확장자를 esm으로 통일시켰기 때문에 더이상 esp나 espfe 같은 이름은 쓰이지 않을 것으로 보인다. 다만 대신 esmfd(esh)나 esmfe(esl)같은 식의 명칭이 쓰일지는 아직 불분명하다.
ESH
0x0 0x1 0x2 0x3 0x4 0x5 0x6 0x7
Plugin Index ESH Index Form ID

참고로 esh의 내부 Form ID 구조는 위와 같을 것으로 예상된다. 미디엄 마스터 플러그인 설치 갯수를 결정하는 esh 인덱스는 16x16 = 256이고, 레코드 수는 16x16x16x16 = 65,535이기 때문이다.

2024년 10월 섀터드 스페이스를 출시하면서 폼아이디 방식이 UINT8_MAX (10진수로 255까지, 16진수로 0xFF까지)에서 UINT16_MAX (10진수로 65535까지, 16진수로 0xFFFF까지)로 변경되었다고 한다. # 폼 아이디 구조자체가 바뀌면서 게임플레이 관련 SFSE 플러그인은 모두 재컴파일 해야한다고 한다. #

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 모드에 내장되어 있는 세이브 파일 문자열 제한을 늘려주는 기능을 쓰는 것이다.[10] 스페셜 에디션의 경우는 이 자체 문자열 제한이 어떤지 정확히 알 수 없으나 리마스터인 만큼 레전더리 에디션에서 기본 시스템이 크게 바뀌진 않았을 것으로 보인다. FallrimTools에 ReStringer 기능이 있어서 문자열을 정리해준다고 하는데 정확히 얼마나 줄여주는지는 알 수 없다.

5. 콘솔 명령어

베데스다 소프트웍스의 게임들 중 게임브리오 엔진으로 만든 것들(특히 엘더스크롤 3: 모로윈드, 엘더스크롤 4: 오블리비언, 폴아웃3, 폴아웃: 뉴 베가스, 엘더스크롤 5: 스카이림)은 굉장히 버그가 많기로 유명하기에 심지어는 특정 퀘스트가 콘솔 명령어를 써야만 진행되는 경우도 있어서, 막힌 진행을 푸는 데 필요한 콘솔 명령어도 있다.

참고로 이건 개발자가 사용자에게 제공할 목적으로 넣은 치트키가 아니라 디버깅이나 개발 용도로 넣은 콘솔 명령어다. 물론 온갖 버그 해결을 포함한 다양한 목적으로 사용자들이 애용하기는 하지만, 사용자 편의성을 염두에 두고 만든 물건은 아니라는 것이다.

참고로 발매연도가 다른 만큼 아래 서술한 콘솔 명령어중 일부는 특정 게임에서만 작동하는 경우가 많다(기본적인 몇가지는 비슷할 수도 있다). 모로윈드의 콘솔 명령어는 사실 밑에 있는 콘솔 명령어들과는 구성이 다른 경우가 꽤 많고, 또 밑에 서술된 명령어들 중 일부는 최신작(이었던)뉴 베가스에서만 적용되는 명령어이다. 폴아웃 3와 오블리비언은 적용 가능한 명령어의 범위가 거의 비슷하다. 그리고 스카이림의 경우에는 콘솔 명령어가 또 다르다.

뉴 베가스와 스카이림의 경우 콘솔 명령어를 사용하고 그대로 게임을 진행하면 도전 과제가 꺼진다. 이 현상을 막기 위해서는 콘솔 명령어를 사용하기 전에 저장을 하고 게임을 껐다가 켜면 된다.

콘솔 입력을 하는 방법은 게임상에서 `(~)키[11]를 눌러 콘솔창을 띄우고, 콘솔 명령어를 입력한 뒤 엔터를 치면 된다. 콘솔창을 띄운 상태에서 화살표 상하키를 누르면 이전에 입력했던 콘솔 명령어가 나오니 여러번 반복입력할 필요 없이 간단하게 입력할 수 있다. 콘솔창을 띄운 상태에서 마우스로 캐릭터나 오브젝트를 클릭하면 콘솔창 상단에 작게 레퍼런스 아이디가 표시된다. 일부 명령어는 이 레퍼런스 아이디가 선택된 상태에서만 먹히는 경우도 있으니 주의해서 사용하자. prid 명령어로 확실하게 레퍼런스 아이디를 지정할 수도 있다.

더 자세한 콘솔 명령어는 콘솔 명령어 (UESP) 엘더스크롤 위키를 참고.

5.1. 단독 사용 가능

참고로 앞에 player.가 붙는 것들은 3인칭으로 전환한 다음 자기자신을 클릭하면 굳이 치지 않아도 된다. 반대로 player를 빼고 다른 캐릭터를 클릭한 상태에서 해당 명령어를 치면 그 캐릭터에 아이템을 주거나 스탯을 올리는 식으로 쓸 수 있다.
  • help <문장>
    help만 입력하면 화면의 모든 정보가 표시되지만 콘솔창이 좁다. 올바른 사용법은 아이템 코드를 찾거나 콘솔 명령어의 사용법을 찾아서 활용하는 것이다. 예를 들어 help tgm을 타이핑하면 tgm이 무엇하는 명령어인지 알려주고, help <아이템 코드 또는 이름>을 입력하면 해당 아이템의 정보가 출력되며, 일치하는 아이템 이름이나 코드가 없다면 그 명칭이나 코드를 포함한 모든 코드값이 출력된다. 모드로 추가된 것을 찾을 때 사용하면 좋다.
  • gbo
    NPC나 물품의 레퍼런스 아이디가 아니라 베이스 아이디를 알 수 있다.
  • 플레이어 설정
    • showracemenu
      캐릭터 생성 메뉴를 불러온다. 기본적으로 게임 도중에 캐릭터의 외형을 바꿀 때 사용하는 명령어. 단, 스킬 레벨이 기본값으로 돌아가니 주의. 찍혀있는 퍽은 유지된다.
      • showlooksmenu <NPC 레퍼런스 ID>
        줄여서 slm <레퍼런스 ID>. 폴아웃 4에서는 showracemenu 대신 이 명령어를 사용한다. showracemenu와 달리 수정할 대상의 레퍼런스 ID를 뒤에 입력해야 한다. 대부분 플레이어 캐릭터를 수정할 용도로 사용하기 때문에 레퍼런스 ID 자리에 14를 입력하는 때가 많다.
    • 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 <스테이터스> <수치>
      체력(health), 지구력(stamina), 매지카(magicka), 무게(carryweight) 등의 스테이터스나 스킬의 레벨을 <수치>만큼 올린다. 10일때 50을 올리면 60이 된다.
    • placeatme <코드> <수량>
      클릭했거나 prid로 선택한 레퍼런스 대상 옆에 NPC나 몬스터를 복사해서 소환한다. player.placeatme <코드> <수량>을 치면 NPC나 몬스터를 플레이어 옆에 복사해서 소환한다. 이 명령어를 쓰면 도플갱어마냥 NPC가 말 그대로 복제만 되며 관련 스크립트는 연결되지 않으므로 특정 Ref ID의 NPC가 필요하다면 moveto player 명령어를 써야 한다.
    • player.showrepairmenu
      장비들을 수리할 수 있게 하는 치트이지만 수리 레벨의 영향과 일정 이상의 캡을 요구[12]하는 치트이다. 간단하게 player.srm만 입력해도 된다. 스카이림같이 수리 시스템이 없는 게임의 경우 당연히 명령어가 먹히지 않는다.
    • player.getav <코드>

      • 현재 플레이어의 몇몇 코드값을 표시해준다. 정확히 표시되지 않는 수치(맨손 데미지, 명성, 악명 등)을 확인할 수 있다.
    • player.forceav <코드> <수치>
      수치만큼 코드의 데미지를 조절해준다.

      • <코드>

          맨손 <unarmeddamage>
          한손무기 <meleedamage> 또는 <onehandedpo wermod>
          양손무기 <twohandedpowermod>
          활 <marksmanmod>
          마법 <destructionpowermod>
          명성 <fame>
          악명 <infamy>
    • player.setscale <수치>
      수치만큼 캐릭터의 크기를 조절해준다. 키우면 키울수록 근접 데미지와 이동속도, 점프 높이 등이 커진다. 최대는 10이며 최소는 0.1이다.
    • player.setav speedmult <값> : 이동시의 이동속도를 설정한다. 스카이림 전용치트. 여기서 값은 %를 뜻한다. 기본속도는 100이고 2배속이면 200 이런 식.
  • 퀘스트 명령어
    • showquesttargets
      현재 진행중인 퀘스트의 ID를 보여준다. 밑의 코드를 쓰기 위해서 쓰기도 한다.
    • resetquest <퀘스트>
      퀘스트가 꼬였을 때 퀘스트를 수행하기 전으로 되돌린다.
    • getstage <퀘스트>
      해당 퀘스트ID의 단계를 보여준다.
    • setstage <퀘스트> <단계>
      퀘스트의 단계가 해당하는 단계로 변한다. 퀘스트가 꼬여서 정상적으로는 진행이 불가능할 때. 다만 한번 사용하면 이전 단계로 되돌리는 것은 불가능하며, 이미 분기 퀘스트 중 한쪽 분기를 선택한 후라면 이 명령어로 다른쪽 분기를 선택한 것처럼 꾸며도 게임상에 아무런 영향이 미쳐지지 않는다.
  • set 명령어
    • set "<퀘스트>".<변수명> to <변수값>: 퀘스트 관련 변수의 값을 바꾼다.
      라울 테하다의 퀘스트와 같이 한 번 기회를 놓치면 퀘스트가 꼬이는 것들 중 이것이 필요한 경우가 있다. 따옴표를 생략하지 말자.
    • set essential <base ID> <값> : 여기서 값에 1이면 NPC를 불사로 만들 수 있고 0으로 하면 불사속성을 제거할 수 있다. 중간의 base ID는 클릭해서 나오는 레퍼런스 ID가 아니니 주의. 일부 NPC는 스크립트로 보호되어있기에 이 콘솔을 써도 죽일 수 없다. 대표적인 예가 스카이림에서 소븐가드를 지키는 쑨.
    • set timescale to <값> : 시간이 흐르는 속도를 조절한다. 기본값은 20. 현실 시간이 20분의 1, 즉 72분이 게임 내 하루(24시간)라는 뜻이다. 시간 경과만 바꾸는 것으로 NPC 행동이 빨라지거나 느려지지는 않는다. 0으로 설정할 경우 시간이 흐르지 않으며, 1로 설정할 경우 실시간으로 게임 시간이 흘러간다. 1시간을 1일로 하고 싶다면 24, 48분을 1일로 하고 싶다면 30으로 설정하면 된다.
    • CompleteAllObjectives <퀘스트>
      • SetObjectiveCompleted

      스카이림 전용 명령어. miscellaneous 탭에 있는 퀘스트를 바로 클리어하는 것으로 바꾸는 명령어이다. 게임내에 클리어가 안되는 목표들이 몇몇 있기 때문에 쓰게 된다. 다크 브라더후드 무한 반복 퀘스트에 이걸 써주면 더이상 반복 의뢰를 받지 않게된다.
    • enableplayercontrols
      강제 움직임 명령 콘솔. 움직일 권한이 없는 이벤트에서 사용하면 움직일 수 있다. 헬겐에서 처형대에서 도망쳐야 할 상황에 굳어버리는 버그가 발생했다면 버그로 조종 권한이 생성되지 않은 것이다. 그럴 때 사용하면 해결 가능. 내전 퀘스트 회담장같이 아무데서나 사용한다면 가끔 튕긴다. 움직일 수는 있지만 은신이나 무기를 꺼내는 것이 불가능한 장소도 있는데 이 콘솔을 쓰면 은신이나 무기를 꺼내는 것도 가능하게 해준다.
  • 토글 명령어
    • tgm
      toggle god mode. 모든 행동에 자원(체력, 지구력, 총알, 화살 등)을 소모하지 않게 되고 스카이림의 경우 최대 마나량을 초과한 마법도 사용할 수 있으며, 용언의 쿨타임도 사라진다. 단 화살과 총알은 1발 이상 소유/장전되어 있어야 한다. 다만 이미 떨어진 수치(체력 등)를 회복시켜주지는 않는다.
    • tim
      toggle immortal mode. tgm과는 다르게 죽지만 않는 상태로 체력과 마나, 스태미나가 소모되지만 체력이 0이 되어도 죽지 않는다. 단 빈사상태에서 참수를 당하면 참수당한 상태로 돌아다니게 되니 주의. tgm과 같이 쓰면 이런 사태를 예방할 수 있다.
    • tcl
      toggle collision. 이름 그대로 캐릭터나 오브젝트의 충돌값을 없앤 상태로 만든다. 중력과 지형을 무시하는 상태가 되므로 주로 어딘가에 끼이게 됐을 때 사용한다. 캐릭터나 NPC가 선택되지 않은 상태, 즉 prid(Ref ID)가 지정되지 않은 상태여야만 작동한다.
    • tfow

    맵상의 안개를 모두 없애준다. 스타크래프트 치트키 Black Sheep Wall과 같은 역할.
    • tfc
      toggle freefly camera. 카메라가 자유비행 상태가 된다. 엘더스크롤 5: 스카이림의 경우 숨겨진 기능으로 수면이나 대기 상태(T키) 이용 시 tfc를 켜주고 실행하면 1시간 틱 없이 바로 해당 시간으로 이동한다.
      • sucsm <값>
        자유비행 상태 카메라의 이동속도를 조절한다. 그냥 tfc 명령어를 치면 카메라 속도가 빨라 캐릭터에 카메라를 맞추기 힘들기 때문에 sucsm 5 정도로 입력하고 카메라를 움직이면 좋다.
    • animcam
      애니메이션 카메라 모드로 전환한다. 카메라의 Z축 높이는 고정되고, 마우스 좌우이동은 카메라 360도 회전만 하고 캐릭터가 시선을 돌리지 않는다. 마우스 상하이동은 원거리 투사체 발사각만 조정한다. 시선을 돌리지 않기 때문에 좌우상하 방향키는 캐릭터가 바라보는 방향 기준으로만 움직인다.
    • tmm 0 또는 1
      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 <값>으로 하면 된다.
    • setgs fjumpheightmin <값> : 점프시의 높이를 설정한다. 기본값은 64라는듯, 일단 1000이고 100만이고 1억이고까지 설정이 가능하다. 그러나 낙하 데미지는 그대로이므로 잘못 사용하면 끔살. 그리고 뉴 베가스에서는 일정 높이 이상 점프하면 상승을 멈춰 버린다. 일종의 버그.[13] 위의 이동속도 설정처럼 게임 전체 적용인듯하나 AI는 점프를 안한다. 스카이림에서는 앞에 player.를 붙여줘야 한다. player를 붙어야한다는 점에서 알 수 있지만 스카이림부터는 전체적용이 아니다.
    • setgs iHoursToRespawnCell <값> : 일반지역의 리스폰 기간을 수정한다. 폴아웃 3, 뉴 베가스는 72시간(3일), 스카이림은 240시간(10일), 폴아웃 4는 168시간(7일).
    • setgs IHoursToRespawnCellCleared <값> : 클리어한 곳의 리스폰 기간을 수정한다(스카이림부터). 스카이림은 720시간(30일), 폴아웃 4는 480(20일.

5.2. 레퍼런스 ID 필요

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

6. Papyrus

게임브리오 엔진에서 포크후 크리에이션 엔진이라는 이름을 붙이며 도입된 스크립트 언어. 최초로 이를 사용한 게임은 엘더스크롤 5: 스카이림이며 그 이후 폴아웃 4에서도 언어 자체의 명세 그대로 적용되어 베데스다의 스크립트 언어로 계속 사용될 예정으로 보인다.

Papyrus 이전 사용되던 스크립트 언어의 경우 별 다른 이름도 없었을 뿐더러 Fragment라 하는 특정 목적의 소규모에나 어울릴 언어적 특성을 가진 반면 Papyrus는 객체 지향이 도입되고 언어 차원에서 스레딩을 지원하는 등 기존 스크립트 언어와의 유사성이 거의 없어졌다.

종래의 스크립트 언어와 같이 파스칼(프로그래밍 언어)과 매우 유사하며 Payrus에서 추가된 파트의 경우 상속에 extends 키워드를 사용하는 등 전체적인 모습은 Java 파스칼(프로그래밍 언어)의 특성이 섞인 형태를 가지고 있다.

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

  • 스크립트 파일이 독립되었다. 기존에는 플러그인 파일인 esp 파일 내부에 스크립트가 직접 저장되는 방식이라 에디터가 없으면 스크립트 수정이 어려웠던 것에 소스코드와 컴파일된 바이트 코드가 esp로부터 분리되어서 크리에이션 킷을 실행시키지 않더라도 스크립트를 외부 에디터로 직접 수정하고 컴파일하는 것이 가능해졌다.
  • short, long과 같은 자료형이 삭제되고 모두 int로 대체되었다.
    사용 가능한 데이터형은 int, String, Bool, Object, Float 이며 intfloat의 경우 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}

Import Debug

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

6.3. 파피루스 로그

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

7. 관련 문서


[1] 폼 아이디가 43인 레전더리 에디션 버전 esp 파일을 폼 아이디가 44인 스페셜 에디션 버전이 되도록 바꾼다거나 할 때. [2] Steamapps\\common\\Skyrim [3] Elder Scroll Master 의 약자인 듯. [4] 아무런 모드의 영향을 받지 않은 스카이림 그 자체를 지칭한다. [5] 0~9까지에 A~F까지 붙여서 16개 숫자를 사용한다. [6] 무기 강화 등 별도의 작업을 거친 전용 아이템을 위해 마련된 공간 [7] 4비트. 2의 4제곱은 16이므로 16진수 한자리로 표현할 수 있는 값은 곧 1니블이다. [8] 예를 들자면, 만약 당신이 설원 트롤을 변경하는 두 개의 모드를 로딩했다면 일반적으로는 더 최근에 로딩한 모드(모드 목록에서 제일 하단에 있는 모드)가 적용된다. [9] 순수 ESL(확장자가 .esl)도 ESM 플래그를 달 수 있다고 한다. # [10] Crash fixes의 ini에서 StringCount32=1로 설정하면 된다. 세이브 파일 문자열 제한 늘려주는 옵션은 저게 맞다. 메모리 패치를 SSME나 SKSE로 사용하는 경우에도 Crash fixes의 다른 옵션들은 다 끄고 저것만 활성화시켜서 같이 쓸 수 있다. [11] 숫자키 1번 왼쪽에 있는 키. 미국에서는 tilde key(~), 영어에서는 grave key( ` ) 라고 한다. [12] NPC에게 수리비를 내고 수리하는 그 메뉴를 불러오는 것인데, 대신 대상이 플레이어 자신이다. 즉, 시스템상 자기 자신에게 수리비를 지불하는 것. 물론 결국 자기 주머니에 있던 돈을 자기 주머니에 도로 집어넣는 셈이니 실질적으로 플레이어의 보유 금액은 줄지 않는다. [13] 정확히는 체공하는 시간이 일정 시간(약 1.5초?)가 넘으면 그냥 그 위치에서 공중에 턱 하고 멈춰 버린다. [14] 특이사항으로, 스카이림에서 이 코드에 죽은 NPC의 레퍼런스 ID를 입력하게 되면 최근에 죽인 NPC들의 시신이 쌓여있는 십자 모양의 알록달록한 공간으로 이동하게 된다. 가끔가다 죽지도 않은 NPC가 갇혀있기도 하며, 살아있었을(?) 때와 똑같은 대화를 나눌 수도(...) 있다. [15] 그럴 때엔 setessential 명령어로 불사 속성을 제거하고 죽이는게 가능하지만, 불사 속성을 부여해 준 것은 다 이유가 있는 것이다. [16] Ref ID가 FF로 시작하는 것. [17] xx는 허스파이어 로드 순서. 보통 03, es7 한국어 번역 패치를 쓰고 있을 경우 05다. 참고로 BYOH는 Build Your Own Home의 약자다. [18] 특정 아이템을 가지는 NPC(폴아웃 3에서 GNR 앞에 팻 맨을 들고 죽은 시체 등)는 부활하면 루팅 전의 아이템을 보유한다(즉, 미니 뉴크 등이 돌아온다!). [19] 저게 어떤 상황이냐면, 한 유저가 여캐의 외모가 맘에 안들어서 남캐로 바꿔야겠다고 하자, 다른 유저가 댓글로 해당 키를 알려줘서 생긴 참사다.