프로그래밍 공부
작성일
2024. 1. 8. 15:08
작성자
WDmil
728x90

언리얼 계층구조를 크게 살펴보자.

 

월드, 레벨, 오브젝트, 컴포넌트

 

이렇게 4개로 계층구조를 크게 나눌 수 있다.

 

  • 월드 : 게임 전체 환경을 나타내며, 모든 게임컨텐츠의 기초이다. 월드는 여러개의 레벨로 구성된다.
  • 레벨 : 월드내에서의 개별환경을 나타낸다. 각 레벨은 독립적인 게임환경을 제공하고, 여러개의 오브젝트로 구성된다.
  • 오브젝트 : 오브젝트는 레벨 내의 개별요소를 나타낸다. 이것들은 게임캐릭터, 아이템, 배경 등 다양한 형태를 가진다. 언리얼에서는 엑터라고 표현한다. 이러한 엑터들은 컴포넌트들로 구성된다.
  • 컴포넌트 : 오브젝트의 부분기능, 특성을 나타내는 모듈화된 요소를 나타낸다. 오브젝트의 함수라고 이해하면 편하다.

월드

 

게임 내의 월드 자체를 의미하는데, 우리가 생각하는 게임 스테이지는 월드가 아니라 레벨 이라고 구분지어 사용한다.

 

그렇다면, 월드 자체는 어떤걸 의미하는가?

 

게임 자체의 생성방식을 따지고 들어가면 쉽게 이해할 수 있다.

 

우리는 C++에서 동적생성, 정적생성 을 알고 가야한다.

컴파일러가 데이터를 생성할 때. 일정 공간을 할당하지 않고 생성할것 이다. 라고 지정해놓는 포인터를 넣는것과.

아예 공간을 처음부터 할당해서 그 저장공간에 데이터를 생성하는 방식을 이야기 하는데,

 

동적으로 생성하는과정은. 데이터 공간을 할당하고 데이터를 생성하는 과정을 지나쳐야 하기 때문에, 생성마다 시간을 많이 사용한다.

 

정적은, 미리 다 생성해놓고 변화가 없을것 이다 라고 정의해놓기 때문에, 더 빠르게 생성하고 정확하다.

 

언리얼의 월드 상에서도 이러한 동적, 정적 생성을 지원한다.

 

이러한 방식 차이로.

WebConnection = 정적생성(static) 이라고 이해하면된다.

WebConnectionNew = 동적생성(Dynamic) 이라고 이해하면 된다.

 

ABGameInstance에서 Connection, ConnectionNew와 부모자식간의 상속관계를 따른다.


레벨

 

레벨 은 우리가 일반적으로 게임 새상. 이라고 이해하면 되는 부분이다.

위에서 설명했듯, 동일하게 부모-자식관계가 확장된 구조를 가진다.

 

한개의 스테이지를 의미하는데, 이러한 스테이지도, 월드처럼 동적, 정적 생성을 지원한다.

 

우리가 월드를 만들고. 이 월드 에서 동작하는 기본스테이지가 존재해야 플레이가 가능할것 이 아닌가?

 

그럼으로 기본으로 지정되는 최소 한개의 래밸이 필요하고, 그 이후에 삭제 추가가 자유로운 레벨이 존재하는데

 

이를 각각 다음과 같이 칭한다.

  • 퍼시스턴트 레벨(Persistent Level) : 월드상에 최소한 있어야하는 한개의 레벨. 무조건 있어야 한다.
    우리가 앉아있는 바닥이 한개라도 존재해야 아래 위가 구분되듯, 기준점을 세워놓는다 라고 이해하면 된다.
  • 스트리밍 레벨(Streaming Level) : 레벨을 실시간으로 추가하고, 월드에 무관하게 추가 삭제가 자유롭다.

이러한 레벨은 위에서 말했듯, 단위오브젝트인 엑터(Actor)의 묶음으로 구성되어 있다.


오브젝트(엑터)[Actor]

 

언리얼에서 생성되는 기본항목으로, 하나의 객체를 의미한다.

 

각 객체는 어떠한 방식으로든 캐릭터, 구조물 등 다양한 형태를 띌 수 있으며. 이러한 객체는 레벨 에 상속되어 레벨이 생성되고 소멸되는 주기를 같이 따라가게 된다.

 

우리가 C++에서 사용한 Class객체를 생각하면된다.


컴포넌트

 

언리얼에서 엑터가 가지는 행동방식 부터 어떠한 의미, 특성 등을 가진다.

 

이것이 어떤분류인지 또는 어떻게 행동하는지, 어떤 델타타임마다 어떻게 움직이게 되는지를 이야기한다.

 

쉽게 이해하자면, 엑터 가 사람이라면, 컴포넌트는, 사람, 팔이 두개달린, 걸을때 다리를 교차로 내딛는, 등을 생각하면 된다.

 

 

728x90