언리얼 엔진 기초

언리얼 엔진 용어

액터(Actor)

액터란 레벨에 배치할 수 있는 오브젝트를 말합니다. 액터는 이동, 회전 스케일과 같은 3D 트랜스폼을 지원하는 범용 클래스입니다. 액터는 게임플레이 코드(C++ 또는 블루프린트)를 통해 생성(스폰) 및 소멸이 가능합니다.
C++에서 AActor는 모든 액터의 베이스 클래스입니다.

인공지능(AI, Artificial intelligence)

AI는 사람의 입력이 아니라 프로그래밍된 명령 세트에 의해 제어되는 행위를 말합니다. 예를 들어 NPC (플레이어 이외의 캐릭터)는 AI로 제어됩니다.

AI컨트롤러(AIController)

AI컨트롤러는 게임 내 NPC(플레이 가능하지 않은 캐릭터)의 표상으로 폰을 빙의합니다. 기본적으로 폰과 캐릭터는 구체적인 플레이어 컨트롤러에 빙의되거나 별도의 AI컨트롤러를 만들어주지 않는 한 기본 AI컨트롤러를 갖게 됩니다.
C++에서 AAIController로 사용 할 수 있습니다.

애니메이션(Animation)

언리얼 마티네에서 만든 시퀀스, 외부 3D 모델링 및 애니메이션 프로그램에서 만든 다음 언리얼 에디터로 임포트한 시퀀스를 일컫기도 합니다.
또는 C++ 코드나 블루프린트를 통해 흐름에 따라 액터의 프로퍼티에 변화를 가하는 것을 말하기도 합니다.

애니메이션 시퀀스(Animation Sequence)

애니메이션 시퀀스(Animation Sequence), 또는 애님 시퀀스(AnimSequence)라고 불립니다.

스켈레탈 메시에 대해 언리얼 에디터로 임포트한 애니메이션 애셋을 말합니다.

에셋(Asset)

게임을 만드는 데 사용되는 요소를 말합니다.

콘텐츠 브라우저에서 임포트하거나 만들 수 있는 콘텐츠, 예를 들면 머티리얼, 스태틱 메시, 텍스처, 파티클 시스템, 블루프린트, 사운드 큐 등이 있습니다.

각 애셋은 별도의 .uasset 파일에 저장됩니다.

블루프린트(Blueprint)

블루프린트 비주얼 스크립팅 시스템(Blueprint Visual Scripting)을 줄여서 블루프린트라고 부릅니다.

언리얼 에디터 안에서 노드를 추가하고 연결하는 개념으로 게임플레이 요소를 만드는 비주얼 스크립팅 시스템입니다.

블루프린트 클래스

콘텐츠 제작자가 기존의 클래스 위에 다른 함수성을 쉽게 추가할 수 있도록 해 주는 애셋입니다.

본질적으로 새로운 클래스 또는 액터 유형을 정의하는 것으로, 나중에 이 블루프린트를 맵에 인스턴스로 배치하면 다른 액터 유형처럼 작동합니다.

캐스케이드(Cascade)

파티클 시스템 에디터로, 파티클 이미터를 추가, 변경, 제거하거나, 파티클 이미터에 모듈을 추가하거나, 모듈의 프로퍼티를 변경할 수 있습니다.

캐릭터(Character)

폰(Pawn) 액터의 서브클래스로 플레이어의 캐릭터에 쓰입니다.

콜리전 셋업, 이족 보행을 위한 입력키 바인딩, 플레이어가 제어하는 이동에 대한 부가 코드 등이 포함됩니다.

시퀀서(Sequencer)

액터, 카메라, 프로퍼티와 다른 에셋을 시간에 걸쳐 직접 조작할 수 있도록 해주는 언리얼 엔진의 시네마틱 툴 세트입니다.

클래스(Class)

언리얼 엔진 게임 제작에 사용되는 특정 액터 또는 오브젝트의 작동방식 및 프로퍼티를 정의합니다.

클래스는 계층구조식으로 되어있어, 부모 클래스를 상속받은 클래스는 그 정보를 자손에게 물려줄 수 있습니다.

C++과 블루프린트에서 생성할 수 있습니다.

콜리전(Collision)

물리 시뮬레이션 도중 사물이 겹치는 것을 방지하여 오브젝트에 입체성을 부여하기 위한 프로그래밍적인 방법입니다. 콜리전 메시라고도 합니다.

지오메트리의 단순화된 버전으로, 보통 메시를 둘러싼 투명 외피 내지 골격의 형태로 존재합니다.
단순화시키는 이유는 퍼포먼스 때문인데, 폴리곤 수가 많은 복잡한 오브젝트도 대략의 형태를 나타내는 간단한 윤곽으로 콜리전을 계산하여 처리속도를 빠르게 하기 위함입니다.

오브젝트에 물리 계산을 통한 시뮬레이션을 적용하기 위해서는 콜리전 표면이 필수입니다.

컴포넌트(Component)

액터에 추가시킬 수 있는 함수성 조각으로, 독립적으로 존재할 수는 없고, 액터에 포함시켜 사용해야 합니다.

콘텐츠 브라우저(Content Browser)

언리얼 에디터 안에서 콘텐츠 애셋을 만들고, 임포트하고, 정리하고, 확인하고, 변경할 떄 주로 사용되는 영역입니다.

콘텐츠 폴더를 관리할 수 있고, 애셋 이름변경, 이동, 복사, 레퍼런스 확인 등의 기타 기능이 제공됩니다.

프로젝트 내 모든 애셋에 대한 검색 및 상호작용이 가능합니다.

컨트롤러 (Controller)

폰 또는 캐릭터처럼 폰에서 파생된 클래스를 빙의(possess)하여 그 동작을 제어할 수 있는, 눈에 보이지 않는 액터입니다.

플레이어 컨트롤러는 사람이 조종하는 폰에 사용되는 반면 AI 컨트롤러는 조종하는 폰에 대한 인공지능을 구현하는 데 사용됩니다. 컨트롤러는 Possess 함수로 폰의 제어권을 획득하고, Unpossess 함수로 해제합니다.

데이터 핀(Data pin)

노드에서 데이터를 받거나 출력하는 데 사용됩니다. 데이터 핀에는 유형이 정해져 있어서 같은 유형의 변수, 또는 다른 노드에 있는 같은 유형의 데이터 핀에 와이어를 연결할 수 있습니다.

실행핀과 마찬가지로 데이터 핀 역시 어느 것에도 연결되지 않은 경우 윤곽선으로, 연결되면 실선으로 표시됩니다.

디테일 패널(Details panel)

레벨 에디터에 있는 여러가지 요소에 대한 프로퍼티 관련 정보가 표시되는 패널입니다.

이벤트(Event)

블루프린트에서 이벤트는 비주얼 스크립팅의 입구, 다른 말로 처음 실행되는 노드입니다.

게임 내에서 어떠한 사건에 의해 발동됩니다.
예를 들어 플레이어가 볼륨에 들어서 오버랩 이벤트를 발동시키거면, 그 이벤트를 사용해서 블루프린트를 통해 문을 연다거나 라이트를 켠다거나 하는 동작을 할 수 있는 것입니다.

이벤트 그래프(EventGraph)

이벤트와 펑션 콜을 사용해서 블루프린트와 연계된 게임플레이 이벤트에 반응한 어떤 동작을 수행하는 노드 그래프가 들어 있습니다.
이는 모든 블루프린트 인스턴스에 공통이 되는 기능을 추가하는데 사용되며, 여기서 상호작용되는 부분과 동적으로 반응되는 부분이 구성됩니다.

실행 핀(Execution pins)

노드를 서로 연결하여 실행 흐름을 만드는데 사용됩니다.

입력 실행 핀이 활성화 되면, 노드가 실행됩니다.
실행이 완료되면, 출력 실행 핀을 활성화시켜 실행 흐름을 이어갑니다.

펑션 콜 노드에는 항상 입력 실행 핀과 출력 실행 핀이 단 하나씩만 있는데, 함수는 입구와 출구가 하나만 있기 때문입니다.
다른 노드 유형은 여러 개의 입력/출력 실행 핀을 가질 수 있어, 활성화되는 핀에 따라 각기 다른 동작이 수행되도록 할 수 있습니다.

프레임워크(Framework)

프레임워크 시스템은 언리얼 엔진 내 게임플레이의 토대를 이룹니다.
게임플레이 프레임워크는 크게 게임타입, 플레이어, 인터페이스의 세 부분으로 나뉩니다. 이들 각각은 게임플레이의 특정 부분을 담당하며, 그 각각은 각기 다른 부분을 정의하고 그 협동 방식을 정의하는 시스템이나 클래스 하나 이상으로 구성됩니다.

게임모드(GameMode)

게임모드 클래스는 플레이중인 게임의 규칙 설정을 담당합니다.
규칙에는 플레이어의 게임 참가 방식, 게임 일시정지 가능 여부, 레벨 전환, 승리 조건과 같은 게임 전용 작동방식이 포함될 수 있습니다.

프로젝트 세팅에서 기본 게임모드 설정이 가능하지만, 레벨 단위로 덮어쓸 수 있습니다. 게임모드 구현을 어떻게 하기로 했는지와 무관하게, 레벨당 항상 단 하나의 게임모드가 존재합니다.
멀티플레이어 게임에서 게임모드는 서버에서만 존재하며, 규칙은 리플리케이션을 통해 접속된 각 클라이언트에 전송됩니다.

게임스테이트(GameState)

게임의 모든 클라이언트에게 리플리케이트하고자 하는 정보가 들어있으며, 좀 더 간단히 접속된 모두에 대한 게임의 상태를 말합니다.

종종 게임 점수, 경기 시작 여부, 월드의 플레이어 수에 따라 스폰시킬 AI 수, 기타 게임 관련 정보가 포함됩니다.

멀티플레이어 게임의 경우, 각 플레이어의 머신마다 게임스테이트 인스턴스가 하나 있으며, 서버의 인스턴스가 오소리티가 됩니다.

그래프(Graph)

특정 노드 그래프의 시각적 표현을 나타내며, 그래프에 포함된 모든 노드는 물론 그 사이의 연결 관계를 표시합니다.
노드의 추가 제거, 노드 배치, 노드간의 링크 생성 등을 위한 편집 기능이 제공됩니다.

레벨(Level)

레벨은 게임플레이에 사용자 정의된 영역입니다. 주로 레벨 안에 액터를 배치하고 트랜스폼을 적용한 뒤 프로퍼티를 편집하는 것으로, 레벨을 생성하고 확인하며 변경합니다.

언리얼 에디터에서 각 레벨은 별도의 .umap 파일로 저장되기에, 가끔은 맵이라 일컬어지기도 합니다.

머티리얼(Material)

메시에 적용하여 씬의 시각적인 모습을 조절하는 데 사용되는 애셋입니다. 머티리얼에 대한 하이 레벨 설명으로는, 오브젝트에 칠하는 “페인트”로 이해하는 것이 가장 쉬울 수 있습니다. 하지만 오해의 소지가 있는 비유입니다. 머티리얼이 실제 오브젝트의 표면이 무엇으로 만들어 진 것처럼 보이는가, 즉 말 그대로 물체의 재질을 정의하는 것이기 때문입니다. 그 색깔, 광택, 투과도 등을 정의할 수 있는 것입니다.

모빌리티(Mobillity)

스태틱 메시와 라이트 액터에 있는 프로퍼티입니다. 디테일 패널에서 설정할 수 있는 모빌리티 프로퍼티는, 액터가 게임플레이 도중 이동 가능한지를 결정합니다.

라이트 액터의 경우 모빌리티 프로퍼티는 빛과 그림자의 유형을 결정합니다. 가능한 모빌리티 프로퍼티는 스태틱, 스테이셔너리(라이트 액터 전용), 무버블 총 세 가지입니다.

월드 아웃라이너에서 보면 액터의 모빌리티 세팅을 왼쪽의 작은 색점으로 알 수 있습니다. 주황은 무버블, 노랑은 스테이셔너리, 없으면 스태틱을 나타냅니다.

무버블 세팅된 액터는 유동성이 높은 만큼 퍼포먼스 비용도 높고, 스태틱 세팅된 액터는 유동성이 낮으나 퍼포먼스 비용도 낮습니다.

노드(Node)

노드란 비주얼 스크립팅 노드 블록 하나로, 보통 여러가지 데이터 및 실행 와이어가 연결되는 모양으로 표시됩니다.

오브젝트(Object)

언리얼 엔진의 기본 구성 요소를 오브젝트라 하며, 언리얼 엔진의 모든 것이 오브젝트를 상속합니다.

C++에서 UObject는 모든 오브젝트의 베이스 클래스이며, 가비지 컬렉션, 언리얼 에디터로의 변수 노출을 위한 UProperty 메타데이터 지원, 로드&저장을 위한 시리얼라이제이션 등의 기능을 구현합니다.

패널(Panel)

레벨에 대한 정보가 들어있는 UI부속으로, 끌어서 이동이나 도킹은 물론 독립된 창으로 떼어낼 수도 있습니다. 예로는 디테일 패널이나 콘텐츠 브라우저가 있습니다.

폰(Pawn)

폰이랑 액터의 서브클래스로, 게임 내 아바타 역할을 하며 캐릭터를 예로 들 수 있습니다. 폰은 플레이어 또는 플레이 불가능한 캐릭터(NPC) 형태로 게임의 AI 제어를 받을 수 있습니다.

핀(Pin)

비주얼 스크립팅 노드의 일부입니다. 핀은 다른 노드에 와이어를 통해 연결됩니다.
실행 핀은 반드시 실행을 위한 노드에 걸어줘야 합니다. 데이터 핀은 유형에 따라 색이 입혀져 있으며, 다른 노드와 데이터를 입력/출력하는 데 사용됩니다.

PIE(Play In Editor)

언리얼 에디터 창에서 레벨의 지정된 위치부터 바로 플레이하며 테스트해 볼 수 있는 모드입니다.
이 모드에서는 현재 레벨을 게임 내에서 플레이했을 때 보이는 모습을 그대로 플레이하면서, 게임플레이 기능은 물론 플레이어 컨트롤이나 플레이어의 동작으로 발동되는 레벨 이벤트를 테스트해 볼 수 있습니다.

플레이어 컨트롤러(PlayerController)

플레이어 컨트롤러는 플레이어 입력을 받아 게임 내 상호작용으로 변환하는 데 사용되는 베이스 클래스이며, 모든 게임에는 최소 하나의 플레이어 컨트롤러가 있습니다.

플레이어 컨트롤러는 종종 게임 내 플레이어의 표상으로 폰 또는 캐릭터를 빙의합니다.

멀티플레이어의 게임의 경우 PlayerController가 주요 네트워크 상호작용 지점이 되기도 합니다.
멀티플레이 도중 서버는 멀티플레이어 게임 내 모든 플레이어에 대해 하나의 플레이어 컨트롤러 인스턴스를 갖는데, 이는 각 플레이어로의 네트워크 함수 호출이 가능해야 하기 때문이며, 각 클라이언트는 자기 플레이어에 해당하는 플레이어 컨트롤러만 갖으며, 이를 통해서만 서버와 통신할 수 있습니다.

플레이어 스테이트(PlayerState)

플레이어 스테이트는 사람 플레이어또는 플레이어를 흉내내는 봇과 같은 게임내 참여자의 상태를 나타냅니다. 게임 월드의 일부로 존재하는 플레이어가 아닌 AI의 경우 PlayerState가 없을 것입니다.

프로젝트(Project)

프로젝트란 각각의 게임을 이루는 콘텐츠와 코드 전부가 들어있는 독립적인 유닛으로, 디스크상의 디렉터리 세트와 일치합니다.

프로젝트는 종종 그 파일에 관련된 .uproject 파일을 가리키기도 하지만 프로젝트 폴더를 말하기도 합니다. .uproject는 파일을 생성하고 열고 저장하는 데 사용되는 레퍼런스 파일인 반면 Project에는 프로젝트에 관련된 모든 파일과 폴더가 들어있습니다.

프로젝트는 동시에 몇 개를 만들어 유지하면서 개발할 수 있습니다. 엔진과 에디터 둘 다 쉽게 전환이 가능하여, 주요 게임 프로젝트에 추가로 한 번에 다수의 게임 작업을 할 수 있습니다.

소켓(Socket)

게임에서는 흔히 캐릭터의 본에 오브젝트를 붙이는 경우가 많습니다. 손에 붙은 무기라던가, 머리에 붙은 모자가 그런 경우입니다.

소켓은 스켈레탈 메시 내 본에서 약간 오프셋을 준 부분을 말합니다. 그런 다음 본을 기준으로 소켓의 위치, 방향, 크기를 조절합니다.
스태틱 메시 및 스켈레탈 메시를 소켓에 붙여 미리볼 수 있습니다.

사운드 큐(Sound Cue)

외부 프로그램에서 만들어 프로젝트로 임포트된 오디오 파일에 대한 레퍼런스가 들어있는 오디오 애셋을 말합니다.

사운드 큐 에디터에서는 임포트된 오디오파일을 기반으로 출력되는 소리를 변경할 수 있습니다.

텍스처(Texture)

텍스처란 머티리얼에 사용되는 이미지를 말하며, 머티리얼이 적용되어 있는 표면에 매핑됩니다.
텍스처는 베이스 컬러 텍스처와 같이 직접 적용되는 것도 있고, 머티리얼 안에서 마스크나 기타 계산용으로 텍스처의 픽셀의 값이 사용되는 경우도 있습니다.
혹은 HUD에 그리는 등의 경우 텍스처가 직접 사용되기도 합니다.

뷰포트(Viewport)

뷰포트란 레벨 에디터에서 보이는 레벨의 시각적 표현입니다.
레벨 작업은 3D 뷰포트로, 2D 뷰포트로, 또는 그 둘을 조합해서 할 수도 있습니다.

위젯(Widget)

위젯이란 레벨 에디터에서 사용되는 시각 툴입니다.
위젯은 뷰포트에서 전형적인 시각 표현물로 표시됩니다.

와이어(Wire)

와이어는 블루프린트같은 비주얼 스크립트의 그래프 섹션에서 두 노드를 잇는 선을 말합니다.

노드의 핀에서 선을 끌어 놓는 방식으로 와이어를 연결합니다.
와이어의 연결은 한 노드의 핀을 끌어 다른 노드의 핀에 놓는 방식이 있고, 빈 공간에 놓을 때 나타나는 컨텍스트 메뉴에서 다른 노드를 선택하면 그래프에 그 노드가 추가되면서 와이어가 바로연결되기도 합니다.

핀과 마찬가지로 와이어 역시도 컬러 코딩됩니다.

월드(World)

월드에는 로드된 레벨 목록이 들어있습니다. 레벨 스트리밍 및 동적인 액터 스폰을 처리합니다.

월드와의 직접 상호작용이 필수는 아니지만, 게임 구조 내 구체적인 언급 지점을 제공하는 데는 도움이 됩니다.

참고

언리얼 엔진 용어

UE5 카테고리 내 다른 글 보러가기

댓글남기기