1. 영단어 Prefab
조립식 건축의 부품 등을 칭한다.2. 레벨 디자인 용어
3D 모델 등의 오브젝트에 용도에 맞는 컴포넌트(스크립트)를 붙여 재사용 가능하게 정의된 에셋. 최초로 해당 개념을 정립하여 사용한 것은 GoldSrc엔진이다.
주로 Prefab이라고 통칭되나 게임 엔진별로 용어가 미묘하게 다른데, 유니티 엔진이나 크라이엔진 등을 비롯한 대다수의 경우는 원본 그대로 프리팹( 1 2)이라 부르나, 언리얼 엔진의 경우는 블루프린트[1]라는 독자적인 용어를 사용한다. 고도 엔진의 경우는 프리팹에 일대일 대응되는 개념은 없으며, 대신 씬 시스템의 개념이 일반적인 엔진에 비해 매우 확장되어 있어 이를 프리팹과 같이 사용한다.
게임 개발에서 프리팹의 중요한 특징은 동기화이다. 가령 3D 게임에서 마을 레벨 디자인에서 100개의 가로등을 배치했다고 가정하자.
이 때 사양의 문제로 인해 가로등의 불빛을 다이나믹 라이트가 아닌 블룸 등의 눈속임으로 교체해야 하거나, 게임 진행의 어려움 때문에 가로등의 충돌 판정을 일괄적으로 수정해야 할 일이 생길 경우, 가로등이 일반적인 게임 오브젝트(혹은 액터)였다면 100개의 가로등을 일일이 하나하나 수정해야 한다. 하지만 가로등이 프리팹으로 재사용 가능하게 구성되어 있다면, 원본이 되는 가로등 프리팹을 수정하기만 하면 마을에 배치된 수많은 가로등 인스턴스 역시 그 영향을 받게 된다.
같은 맥락으로 프리팹은 레벨 디자인 뿐만 아니라 오브젝트 설계에도 사용된다. 가령 해골 장식을 달고 다니는 여러 종류의 캐릭터를 만들었는데 심의 문제로 인해 해골 장식을 삭제해야 한다고 해 보자. 이 경우 프리팹을 사용하였다면 모든 캐릭터를 일일이 수정해야 할 필요 없이, 캐릭터 프리팹 안에 들어있는 해골 프리팹의 원본을 다른 조형의 메시를 참조하도록 수정해주기만 하면 자연스럽게 모든 캐릭터 프리팹 역시 그 영향을 받게 된다. 이러한 성질 때문에 프리팹은 모듈화된 오브젝트나 레벨 디자인에 필수적으로 사용된다.
해머(에디터)의 프리팹 팩토리
파일:prefab`factory_~_.png
GoldSrc 엔진에서의 프리팹은 현재의 프리팹 개념과 크게 다르지 않으나, 레벨 디자인 용도에 더 집중되어 있는 형태였다. 프리팹 팩토리로 제작된 프리팹을 전부 나열하는 DB인 프리팹 팩토리가 해머 에디터에 존재하였던 것이 그 흔적.
게임 개발 지식이 부족한 모더들의 경우 프리팹의 용도를 아래와 같은 식으로 오해하는 경우가 많다. 대체로 GoldSrc 엔진의 해머 에디터를 사용하는 모더들을 중심으로 하여 확대 재생산된 오개념이다.
-
3D 모델링 툴을 거치지 않고 엔진 내의 에셋들을 재조합하여 새로운 모델을 만들어내는 도구로 오해하는 경우.
성능을 고려하지 않는 프로토타입에서조차 굉장히 지양되는 일이다. 이런 식으로 잘못 사용하면 드로우콜이 조합한 에셋의 수에 비례하여 폭증하므로 CPU 성능 관리 면에서 상상할 수 없을 정도의 재앙이 벌어진다. -
스크립트가 추가되는 경우 반드시 프리팹으로 만들어야 하며, 그렇지 않은 경우는 프롭이라고 생각하는 경우.
프리팹만이 가지는 특징은 동기화와 재사용성이며, 스크립트(컴포넌트)의 추가 자체는 프리팹이 아닌 게임오브젝트(액터)에도 얼마든지 가능하다. 또한 프롭은 명확히 정의된 레벨 디자인 용어가 아니며 단순히 소품의 동의어로[2], 보통 스킨드/스켈레탈 메시나 터레인 등의 예외를 제외한 일반적인 3D 메시로 만들어진 오브젝트를 통틀어 일컫는다.
[1]
정확히는 블루프린트 기능의 Class의 일부로 대체되었다. 객체 지향 프로그래밍에서 클래스와 인스턴스의 관계를 생각하면 쉽다. 본래 언리얼 엔진에서도 Prefab이라 명칭하며 프리팹 개념 그대로 사용하였으나 언리얼 엔진 4부터 구조를 변경하였다.
[2]
소스 엔진에서 3D 메시를 가진 엔티티를 프롭이라고 지칭한 탓에 하프라이프 모더들을 중심으로 하여 프롭을 레벨 디자인 용어라고 착각하는 경향이 있으나, 소스 엔진을 제외한 그 어떠한 상용 엔진에서도 프롭을 명확하게 정의하고 있지 않으며 오직 소품의 동의어로만 사용한다.