언리얼 엔진 용어

Woogie_·2025년 1월 15일

Unreal Engine

목록 보기
2/15
post-thumbnail

언리얼 엔진 용어 간단 정리

프로젝트 (Project)

  • 언리얼 엔진 5 프로젝트는 게임의 모튼 컨텐츠를 담고 있다.

  • 프로젝트에는 Blueprints, Materials 등 하드디스크 안의 많은 폴더가 포함

  • 프로젝트 안의 폴더는 원하는 대로 이름을 변경하고 정리 가능

  • 언리얼 에디터 (Unreal Editor) 의 콘텐츠 브라우저 (Content Brower) 패널은 하드디스크의 프로젝트 폴더와 동일한 디렉터리 구조를 보여줌

  • 모든 프로젝트에는 연관된 .unproject 파일 존재

  • .unproject 파일로 프로젝트를 생성하거나, 열거나, 저장 가능

  • 프로젝트는 원하는 수만큼 생성하고 병렬 작업 가능

  • 참고

블루 프린트 (Blueprint)

  • 블루프린트 비주얼 스크립팅 (Blueprint Visual Scripting) 시스템은 노드 (Node) 기반의 인터페이스를 사용하여 언리얼 에디터 내의 게임플레이 엘리먼트를 생성하는 완전한 게임플레이 스크립팅 시스템

  • 여러 일반적인 스크립팅 언어와 마찬가지로, 블루프린트 비주얼 스크립팅도 엔진에서 오브젝트 지향 (Object-Oriented, OO) 클래스 또는 오브젝트를 정의하기 위해 사용

  • 언리얼 엔진을 사용하다 보면, 블루프린트로 정의된 오브젝트를 '블루프린트'라고 줄여 부름

  • 참고

오브젝트 (Object)

  • 오브젝트 는 언리얼 엔진에서 가장 기본적인 클래스

  • 오브젝트는 구성단위 역할을 하며, 에셋에 필수적인 기능을 많이 포함

  • 언리얼 엔진에서는 거의 모든 것이 오브젝트로부터 상속받거나 함수 기능을 사용

  • C++ 에서 UObject 는 모든 오브젝트의 베이스 클래스

  • 가비지 컬렉션, 언리얼 에디터에 변수를 노툴하기 위한 메타 데이터 (UObject) 지원, 로딩 및 저장 직렬화 등의 기능을 구현

  • 참고

클래스 (Class)

  • 클래스 는 언리얼 엔진에서 특정 액터나 오브젝트의 행동과 프로퍼티를 정의

  • 클래스는 계층적

  • 즉, 정보를 부모 클래스 (해당 클래스가 파생된 클래스)로부터 상속받고 자손 클래스에 다시 상속

  • 클래스는 C++ 코드나 블루프린트로 생성 가능

  • 참고

액터 (Actor)

  • 액터 는 카메라, 스태틱 메시, 플레이어 스타트 위치 등과 같이 레벨에 배치할 수 있는 모든 오브젝트를 가리킴

  • 액터는 이동, 회전, 스케일링 등의 3D 트랜스폼을 지원

  • 또한 C++ 또는 블루프린트 게임플레이 코드를 통해 생성(스폰) 및 소멸 가능

  • C++에서 AActor 는 모든 액터의 베이스 클래스

  • 참고

형 변환 (Cating)

  • 형변환 은 특정 클래스의 액터를 다른 클래스인 것처럼 간주하려 시도하는 작업

  • 형변환은 성공할 수도 있고 실패할 수도 있다.

  • 성공하면 형변환한 액터의 클래스 전용 기능에 액세스 가능

  • 예를 들어 플레이어 캐릭터에 다양한 방식으로 영향을 미치는 다수 타입의 볼륨이 있는 게임을 만드는 중이라고 가정

  • 이러한 볼륨 중 하나는 화염 으로, 시간이 지남에 따라 플레이어의 체력을 감소

  • 레벨에서 플레이어가 어느 볼륨에든 오버랩되면, 해당 볼륨을 화염 으로 형변환 하여 ""플레이어 체력 대미지 (damage player health)"" 기능에 엑세스를 시도할 수 있다.

    • 형변환이 성공하여 플레이어가 화염 속에 서 있게 되면, 플레이어의 체력이 감소하기 시작
    • 형변환이 실패하여 플레이어가 다른 타입의 볼륨에 서 있게 되면, 체력에 영향을 받지 않는다.
  • 형변환은 단순히 액터가 특정 클래스에 속하는지 확인하는 것이 다가 아님

  • 그 경우 바이너리 응답 (예 또는 아니오)을 반환하지만, 해당 클래스의 특정 함수 기능과 상호작용 하지는 못한다.

컴포넌트 (Component)

  • 컴포넌트 는 액터에 추가할 수 있는 기능 조각

  • 액터에 컴포넌트를 추가하면, 액터는 해당 컴포넌트가 제공하는 기능 사용 가능

  • 예시

    • 스포트 라이트 컴포넌트는 액터가 스포트 라이터 처럼 빛을 내게 한다.
    • 로테이팅 무브먼트 컴포넌트는 액터가 회전하게 한다.
    • 오디오 컴포넌트는 액터가 사운드를 재생하게 한다.
  • 컴포넌트는 액터에 추가되어야 하며, 단독으로는 존재할 수 없다.

  • 참고

폰 (Pawn)

  • 은 액터의 서브클래스이며, 인게임 아바타 또는 페르소나(게임 안의 캐릭터 등)의 역할

  • 폰은 플레이어 또는 게임 AI 로 제어되는 NPC(논플레이어 캐릭터) 등이 있다.

  • 인간이나 AI 플레이어가 폰을 제어하면, 그 폰은 빙의된(Prossessed) 상태로 간주

  • 반대로 인간이나 AI 플레이어가 제어하지 않는 폰은 빙의 해제된(Unprossessed) 것으로 여겨진다.

  • 참고

캐릭터 (Character)

  • 캐릭터 는 플레이어 캐릭터로 사용하기 위한 폰 액터의 서브클래스

  • 캐럭터 클래스에는 콜리전 설정, 바이페드 (Biped) 움직임을 위한 입력 바인딩, 플레이어가 제어하는 움직음을 위한 추가 코드 등이 포함

  • 참고

플레이어 컨트롤러

  • 플레이어 컨트롤러 는 플레이어의 입력을 게임 안의 상호작용으로 변환

  • 모든 게임에는 최소 하나의 플레이어 컨트롤러가 있다.

  • 게임 안에서 플레이어를 나타내는 폰이나 캐릭터에 빙의할 때가 많다.

  • 플레이어 컨트롤러는 또한 멀티플레이어 게임의 주요한 네트워크 상호작용 지점

  • 멀티 플레이어 게임의 플레이 동안에는 서버가 각 플레이어에게 네트워크 함수 호출을 할 수 있어야 하기 때문에 게임 안의 모든 플레이어에 대해 하나의 플레이어 컨트롤러 인스턴스를 지닌다.

  • 각 클라이언트는 자신의 플레이어에 해당하는 플레이어 컨트롤러만을 가지고, 서버와 통신하는 용도로만 사용 가능

  • 연관된 C++ 클래스는 PlayerController

  • 참고

AI 컨트롤러 (AI Controller)

  • 플레이어 컨트롤러가 게임 안에 플레이어를 나타내는 폰을 소유하듯이, AI 컨트롤러도 게임 안에 NPC를 나타내는 폰을 소유

  • 폰과 캐릭터는 특정 플레이어 컨트롤러가 빙의했거나 스스로 AI 컨트롤러를 생성하지 말라는 명령을 받지 않았다면 기본적으로 베이스 AI 컨트롤러에 빙의

  • 연관된 C++ 클래스는 AIController

  • 참고

플레이어 스테이트 (Player State)

  • 플레이어 스테이트 게임 참여자의 스테이트를 지칭

  • 인간 플레이어 또는 플레이어를 시뮬레이션 하는 봇 등이 있다.

  • 게임 월드의 일부로 존재하는 논플레이어 AI의 경우 플레이어 스테이트가 없다.

  • 플레이어 스테이트에 포함되는 플레이어 정보의 예시

    • 이름
    • 현재 레벨
    • 체력
    • 점수
    • 깃발 뺏기 (Capture the Flag) 게임에서 현재 깃발을 들고 있는지 여부
  • 멀티 플레이어 게임의 경우 모든 컴퓨터에 모든 플레이어의 플레이어 스테이트가 존재하며, 동기화를 유지하기 위해 서버에서 클라이언트로 데이터를 *리플리케이트 가능

    • *리플리케이트 : 서버와 클라이언트 사이에서 데이터와 명령을 주고받는 프로세스
  • 이는 특정 플레이어 컨트롤러가 나타내는 플레이어의 컴퓨터에만 존재하는 플레이어 컨트롤러와는 다름

  • 연관된 C++ 클래스는 PlayerState

  • 참고

게임 모드

  • 게임 모드 는 플레이 중인 게임의 규칙을 설정

  • 규칙에는 다음이 포함될 수 있다

    • 플레이어가 게임에 참여하는 방법
    • 게임의 일시 정지 가능 여부
    • 승리 조건 등 특정 게임 전용 행동
  • 프로젝트 세팅에서 디폴트 게임 모드를 설정하고 레벨별로 오버라이드 가능

  • 어떤 방법으로 구현하든, 한 레벨에는 하나의 게임 모드만 존재 가능

  • 멀티플레이어 게임의 경우 게임 모드는 서버에만 존재하며, 연결된 각 클라이언트에 규칙이 복제 (전송)

  • 연관된 C++ 클래스는 GameMode

  • 참고

게임 스테이트 (Game State)

  • 게임 스테이트 는 게임 내의 모든 클라이언트에 복제할 정보가 들어 있는 컨테이너

  • 쉽게 말해 연결된 모든 사람에 대한 '게임 스테이트'를 뜻함

  • 게임 스테이트의 예시

    • 게임 점수에 대한 정보
    • 대결이 시작됐는지 여부
    • 월드에 있는 플레이어 수를 기준으로 스폰할 AI 캐릭터의 수
  • 멀티플레이어 게임의 경우 게임의 경우 게임 스테이트에 대한 로컬 인스턴스가 각 플레이어의 컴퓨터에 하나씩 존재

  • 로컬 게임 스테이트 인스턴스는 서버의 게임 스테이트 인스턴스에서 업데이트된 정보를 가져온다.

  • 연관된 C++ 클래스는 GameState

  • 참고

브러시 (Brush)

  • 브러시 는 큐브, 구체와 같은 3D 셰이프를 묘사하는 액터

  • 레벨에 브러시를 배치하여 레벨 지오메트리를 정의 가능

  • 이를 바이너리 스페이스 파티션 (Binary Space Partition) 또는 BSP 브러시라고 함

  • 레벨의 윤곽 작업을 빠르게 하고 싶은 경우 등에 유용

  • 참고

볼륨 (Volume)

  • 볼륨은 연결된 효과에 따라 용도가 달라지는 바운드 3D 공간
  • 예시
    • 블로킹 볼륨 (Blocking Volumes) 은 보이지 않으며 액터가 통과하지 못하게 막는다.
    • 페인 코징 볼륨 (Pain Causing Volumes) 은 오버랩되는 액터에 시간이 지남에 따라 데미지를 준다.
    • 트리거 볼륨 (Trigger Volumes) 은 액터가 들어오거나 나갈 때 이벤트를 유발하도록 프로그래밍 된다.
  • 참고

레벨 (Level)

  • 레벨 은 개발자가 정의하는 게임플레이 영역

  • 레벨에는 지오메트리, 폰, 액터 등과 같이 플레이어가 보고 상호작용할 수 있는 모든 것이 포함

  • 언리얼 엔진은 각 레벨을 별도의 .umap 파일로 저장

  • 때로는 레벨이 이라고 불림

  • 참고

월드

  • 월드는 게임을 구성하는 모든 레벨이 담겨 있는 컨테이너

  • 월드는 레벨의 스트리밍과 다이내믹 액터의 스폰(생성)을 처리

  • 참고

profile
상상을 구현하는 개발자

0개의 댓글