공부 중인 내용
오개념 지적 대환영

1. 객체, 또는 오브젝트란 게임 제작에 사용되는 데이터를 말한다. 게임 내에서 확인할 수 있는 사물들은 가령 공간 정보, 레코드 정보 등의 여러 데이터를 포함하고 있으며, 3D 렌더링 파이프라인 과정을 거쳐서 이를 모니터에 시각적으로 구현하게 된다. (이 글은 컴퓨터 그래픽스를 다루는 것이 아니므로 이에 대한 자세한 설명은 생략하겠다)

2. Skyrim.esm의 모든 객체들은 1차적으로 기본 객체base object 상태로 저장되어 있다. 이는 CK툴의 Object Window에서 확인할 수 있는 객체들을 말한다. 만약 이것들 중 아무거나 하나를 어느 한 셀에 불러오게 된다면, 불러와지는 것은 객체 자기 자신이 아니라 그것의 참조reference이다.

3. 참조reference 또는 객체의 참조object reference는 이름에서도 알 수 있듯이 객체에 대한 일종의 바로가기이다. 바탕화면으로 MO2의 바로가기를 만들면 원본 프로그램의 내용에는 아무런 변경도 일어나지 않고 단지 그것의 주소만을 불러오게 되듯이, 셀에서도 객체를 불러오면 무언가가 새롭게 복제되는 것이 아니라 단지 (객체를 지시하는) 참조만이 만들어진다. 이렇게 참조를 만들면 용량을 절약할 수 있다는 장점도 있지만, 무엇보다도 기본 객체의 속성properties에는 아무런 영향도 끼치지 않을 수 있으므로 다양한 방면으로 활용할 수 있다. 가령 렌더 뷰에 메쉬를 하나 불러와서 크기를 임의로 조정한다면, 실제로 편집되는 것은 기본 객체가 아닌 참조의 속성이며, 기본 객체와 관련된 부분은 아무것도 변하지 않는다. 이런 식으로 원본 데이터(가령 마스터 파일)에 조작을 가하지 않고도 무궁무진한 양의 모드를 만들어 낼 수 있다.

4. 플레이어가 게임 내에서 어떤 객체를 사용한다는 것은 해당 객체와 상호작용하는 것이다. 가령 E키를 눌러 문을 사용하면, 해당 문이 플레이어 객체와 상호작용하게 되는 것이다. 이렇게 두 개의 오브젝트가 상호작용하는 것을 활성화activation라고 하고, 활성화가 일어날 때 여러 가지 일들이 이루어진다:

(1) 기초 행동Native Behavior 수행 - 거의 모든 객체들은 활성화되었을 때 자신의 기초 행동을 수행한다. 문이라면 열리거나 닫히게 되고, 보관함은 자신의 내용물을 보여주게 되며, NPC라면 대화하거나 혹은 소매를 들춰볼 수 있게 된다.

(2) 스크립트 이벤트 - 미리 입력된 스크립트가 있다면 활성화가 일어날 경우 해당된 객체는 곧바로 Papyrus 스크립트에 알림을 보내게 된다. 그러면 그 스크립트는 그것에 대해 새로운 방식으로 대응하도록 명령을 내리게 된다.

+ 부모-자식 관계 활성화 - 두 개의 오브젝트를 서로 링크linked reference라는 기능으로 연결시키면 둘은 서로 상호작용할 수 있고, 이 때 관계된 두 객체들이 부모와 자식 관계로 연결되어 이들이 함께 활성화될 수 있다: 만약 부모 객체가 활성화되면, 하위의 모든 자녀 객체들도 동일한 활성화 신호를 전달받게 된다.


스카이림 던전에서 흔히 볼 수 있는 레버-철창문을 예로 들어보자. 레버를 E키를 눌러 활성화시키면 

(1)레버는 자신의 기초 행동(스르륵 당겨지는 애니메이션)을 수행한다.

(2)레버는 파피루스 스크립트에 자신이 활성화되었음을 알리고 대응 방침을 회신받는다. (레버의 경우 NorPullBar01SCRIPT, TrapLever / 철창문의 경우 default2StateActivator)

(3)레버와 철창문이 링크linked되어 있다면 부모와 자식 관계가 활성화되고(흰색 선-레버-이 부모, 파란 선-철창문-이 자녀), 레버는 활성화되는 동시에 자녀인 철창문에게도 활성화 신호를 전하게 된다. 두 객체 모두가 동일한 타이밍에 기초 행동을 수행하여, 레버를 당기니 문이 열리는 것처럼 보이게 된다.

5. 링크된 대상이 AI Actor인 경우 AI는 단순히 부모-자식 관계로 묶이는 대신 보다 구체적인 행동절차를 수행할 수 있다. 이를 기본 마스터 패키지Default Master Package라고 부르며, 그 내용은 새로운 분량을 할애하여 설명해야 할 만큼 상당히 복잡하므로 생략하겠다. 간단히 말하자면 한 액터가 던전의 여러 구역을 순차적으로 정찰하는 것은 링크된 액터가 입력된 기본 마스터 패키지(걷기, 대기)를 실행하기 때문에 가능한 것이다. (이 때 해당 액터는 IdleMarker라는 여러 개의 마커들과 링크되어 있고, 설치된 네비메쉬를 따라 움직이게 된다)

즉 Linked Refs는 스타크래프트에서 우클릭하는 행위를 말하고(연결시키는 것), Default Master Package는 그 우클릭의 내용(지정된 좌표로 걸어가는 것)이라고 이해하면 편리하다.