여러 점들이 모여 하나의 물체를 형성하는데 하나의 물체를 그리기 위해서는 원점 을 중심으로 각점의 상대적인 위치를 지정해야 함
이렇게 물체를 그리는데 사용하는 공간을 로컬 공간 (Local Space) 라고 함
그런데 게임은 하나의 물체가 아닌 하나의 공간에 여러 물체를 배치하고 주인공이 움직이면서 공간을 탐험해야 함
이를 위해서는 각 물체를 구분할 수 있는 개별 공간이 별도로 필요
그래서 게임 스테이지를 구성하는데 사용되는 별도의 공간을 월드 공간 (World Space) 라고 함
게임 스테이지는 월드 공간의 바탕 위에서 로컬 공간이 선형 변환 되어 그 위에 덧 씌워진 상태로 구성되는 구조를 가짐




언리얼 엔진에서의 트랜스폼 설정
게임이 원활하게 동작하기 위해서는 게임의 월드 공간에 배치된 다수의 물체를 효율적이고 체계적으로 관리할 체계가 필요
스테이지를 관리하기 위한 객체를 개발 단계에서는 씬 (Scene) 이라고 하며 씬에 속한 각 물체는 월드 공간을 기준으로 어디에 배치되어 있는지를 알려주는 트랜스폼 정보가 지정
이러한 트랜스폼 정보는 물체 단위로 관리되기 때문에 물체를 관리할 단위가 필요한데 이를 게임 오브젝트 (Game Object) 혹은 액터 (Actor) 라고 함
이러한 구조를 그림으로 나타내면 다음과 같음

씬과 게임 오브젝트의 구조
매 프레임마다 씬에 속한 게임 오브젝트의 최종 트랜스폼 정보가 확정되어야 로컬 공간에 있는 메시 정보로부터 점을 변환해 최종 삼각형이 그려짐
따라서 게임의 진행은 게임 오브젝트의 최종 트랜스폼을 확정하는 단계와 최종 트랜스폼으로부터 행렬을 생성한 후 메시의 정점을 곱해 변환하는 작업의 두 단계로 나누어 짐
이를 각각 게임 로직과 렌더링 로직으로 구분 하면

게임에는 씬 뿐만 아니라 게임에 사용되는 데이터를 관리하기 위한 체계적이고 효율적인 시스템이 필요
게임에 사용되는 데이터를 게임 리소스(Game Resource) 혹은 게임 애셋(Game Asset)이라고 함
게임 리소스는 씬과 별개로 구성되어야 하는데 게임 오브젝트마다 동일한 메시 정보는 중복해서 사용되는 일이 많기 때문
예를 들어 100개의 동일한 몬스터가 스테이지의 곳곳에 배치된다면 몬스터에 대한 메시 정보를 100개로 복제해 관리하기보다 하나의 몬스터 메시를 100개의 게임 오브젝트가 공유해서 사용하는 편이 보다 효율적이기 때문
따라서 게임 리소스마다 고유의 키를 부여하고 게임 오브젝트는 부여된 키를 가지고 접근하는 형태로 관리되는 것이 일반적
이러한 게임 애셋의 정보를 저장한 저장소를 리소스 리파지토리 라고 함

