Machineboy空

게임 콘텐츠의 제작 원리 2-6. 게임 엔진 본문

Game/게임 수학

게임 콘텐츠의 제작 원리 2-6. 게임 엔진

안녕도라 2025. 11. 27. 15:21

1. Local Space & World Space

Local Space

원점(0,0,1)을 중심으로 각 점의 상대적인 위치를 지정한다. 

 

World Space

하지만 게임은 하나의 물체가 아닌 하나의 공간에 여러 물체를 배치하고, 주인공이 움직이면서 공간을 탐험해야 한다. 이를 위해서 각 물체를 구분할 수 있는 개별 공간이 필요하다.

 

게임 공간

world space 바탕으로 local space가 선형 변환되어 이동, 회전, 크기에 대한 값을 가지고 배치되어 있다.

 

하나의 물체가 로컬 공간을 가진다면, 그게 월드 공간 위에 펼쳐진다 느낌?

 

월드 공간에 배치된 로컬 공간은 모든 물체의 고유한 위치를 식별해주는 고유한 값(크기, 회전, 위치의 세가지가 사용

)되며, 이는 앞서 언급한 세 가지의 아핀 변환을 의미한다.


트랜스폼 행렬

 

세 가지 아핀 변환을 크기(S), 회전(R), 이동(T)라고 했을 때, 변환을 순서대로 적용한 결과는 다음의 경우의 수

  • S · R · T 
  • · T · R
  • T · S · R
  • T · R · S
  • R · T · S
  • R · S · T

이동변환 (T)를 중간에 적용하게 된다면 최종 결과로 나타난 위치는 사용자 입장에서 식별하기 어려워진다. 따라서 이동 변환은 가장 마지막에 적용하는 것이 편리하다.

 

그래서 우리가 고려해야 할 변환은 아래 두 가지로 나뉘게 된다.

* 행렬은 오른쪽에서부터 왼쪽으로 진행

  • · S · R
  • · R · S

따라서 다음과 같은 형태로 변환 순서가 결정되며 이를 모델링 행렬이라고 한다

 

M = TRS (크기 → 회전  → 이동)

 


트랜스폼의 관리

 

트랜스폼 변환에 관련있는 세 가지 데이터

  • 크기(Vector2)
  • 회전(각)
  • 이동(Vector2)

실제 작업자가 공간에 물체를 배치할 때에는 위의 데이터를 지정하는 방식으로 사용하고, 게임 엔진들도 트랜스폼을 지정하도록 UI를 제공한다.


2. 게임 렌더링의 진행 과정

게임이 원활하게 동작하기 위해서는 게임의 월드 공간에 배치된 다수의 물체를 효율적이고 체계적으로 관리할 체계가 필요하다. 

 

  • Scene : 개발 단계에서 스테이지를 관리하기 위한 객체
  • Transform: Scene에 속한 각 물체는 월드 공간 기준으로 어디에 배치되어 있는지 
  • Game Object : 트랜스폼을 물체 단위로 관리

 

 

매 프레임마다 씬에 속한 게임 오브젝트의 최종 트랜스폼 정보가 확정되어야 로컬 공간에 있는 메시 정보로부터 점을 변환해 최종 삼각형이 그려진다. 

 

따라서 게임의 진행은 게임 오브젝트의 최종 트랜스폼을 확정하는 단계와 최종 트랜스폼으로부터 행렬을 생성한 후, 메시의 정점을 곱해 변환하는 작업의 두 단계로 나누어진다. 

  • 게임 로직: 게임 오브젝트의 트랜스폼을 확정하는 작업. 실제 렌더링 관련 작업은 발생하지 않음
  • 렌더링 로직: 로컬 공간을 기준으로 저장된 메시의 정점 정보를 월드 공간 기준으로 재배치하고 각 삼각형을 그리는 작업. 메시의 삼각형 위치를 확정하고 렌더링 관련된 작업을 진행함


3. 게임 리소스의 관리

게임에는 씬 뿐만 아니라 게임에 사용되는 데이터를 관리하기 위한 체계적이고 효율적인 관리시스템이 필요하다.

게임에 사용되는 데이터를 게임 리소스(Resource)혹은 게임 에셋(Asset)라고 한다.

 

게임 리소스는 씬과 별개로 구성되어야 하는데, 게임 오브젝트마다 동일한 메시 정보는 중복해서 사용되는 일이 많기 때문이다. 예를 들어 100개의 동일한 몬스터가 스테이지의 곳곳에 배치된다면 몬스터에 대한 메시 정보를 100개로 복제해 관리하기 보다 하나의 몬스터 메시를 100개의 게임 오브젝트가 공유해서 사용하는 편이 보다 효율적이기 떄문이다.

 

따라서 게임 리소스마다 고유의 키를 부여하고, 게임 오브젝트는 부여된 키를 가지고 접근하는 형태로 관리되는 것이 일반적이다. 이러한 게임 에셋의 정보를 저장한 저장소를 리소스 리파지토리라고 한다.