[UNSEEN] 테스트 대비 5. 게임 엔진의 동작 원리

Doorbals·2023년 2월 16일
0

UNSEEN

목록 보기
5/10

1. 게임 엔진의 정의

비디오 게임 같은 실시간 그래픽 표시 기능을 갖춘 상호 작용 응용 프로그램을 구현하는 핵심 소프트웨어 구성 요소를 말한다. 컴퓨터 게임 개발에 바탕이 되는 기술을 제공하여 개발 과정을 단축 시키고, 게임을 다양한 플랫폼에서 실행할 수 있도록 해준다. 또한 게임 엔진은 하나의 게임에 종속되지 않고 여러 종류의 게임에 재사용될 수 있도록 개발된다.

게임 엔진이 제공하는 주요 기능은 2차원 그래픽이나 3차원 그래픽을 출력하기 위한 렌더링 엔진, 물리 엔진, 충돌 검출과 충돌 반응, 사운드 출력, 스크립트 작성, 애니메이션, 인공지능, 네트워크, 스트리밍, 메모리 관리, 쓰레딩, 씬 그래프 등이 있다.


2. 게임 엔진 구성 요소

  • Renderer : 화면상에 그래픽을 출력하는 기술
  • Streaming Terrain : 실외 배경으로써 주로 지형을 표현
  • Portal Rendering : 실내 배경으로써 BSP와 PVS가 주로 사용됨.
  • 3D Mesh Rendering : 캐릭터나 기하 객체의 표현
  • Character Animation : 캐릭터의 움직임 표현
  • Collision System : 객체의 실시간 충돌 검사
  • Physics Engine : 물리학적인 제어 시스템으로 충돌 후 반응을 제어
  • Sound System : 장면 내에 삽입되는 사운드 시스템을 구현
  • Particle System : 안개, 구름, 불꽃 등 입자를 표현
  • Path Finding / Waypoint Generator : Npc와 캐릭터의 움직임 제어를 위해 사용되는 인공지능적인 기법으로, 주로 A* 알고리즘을 사용
  • Scripting System : 전반적인 게임의 인공지능을 제어하기 위해 사용


3. 게임 엔진의 루프

모든 게임 엔진은 게임 루프를 통해 프레임 기반 동작이 수행된다. 게임이 시작되고 종료되기 전까지는 게임 루프가 무한히 반복되면서 프레임이 진행된다. 즉, 게임 루프를 한 번 실행하면 한 프레임이 지난 것이다.


게임 루프 안에는 입력 처리, 상태 갱신, 충돌 검사, 물리 효과, 사운드 재생, 렌더링 등 여러 동작들이 정의되어있고, 게임 루프가 반복될 때마다 해당 동작들이 실행된다.

Start -> Initialize(게임 환경 초기화) 까지는 1회 실행되고, 이후 Update와 Display(== Render)가 매 프레임마다 반복적으로 실행된다. 그러다 게임이 종료되는 순간 루프가 종료되는 것이다.


4. 게임 엔진의 스크립팅 시스템

일반적으로 게임은 스크립트를 통해서 플레이어 입력에 반응하고, 게임 플레이 이벤트를 작동시킨다. 또한 스크립트를 사용하여 그래픽 효과를 생성하고, 오브젝트의 물리 동작을 제어하며 각종 게임 진행을 구현한다.

게임 엔진에는 기본적으로 제공하는 컴포넌트들이 존재하지만, 사용자가 직접 기능을 구현해야하는 경우가 더 많은데, 이때 스크립트를 사용하여 사용자 정의 컴포넌트를 만드는 것이다.

각각의 게임 엔진들은 본인만의 스크립팅 시스템을 가지는데, 이 스크립팅 시스템이 존재함으로써 게임 개발이 더욱 쉬워진다. 기본 프로그래밍 언어들이 제공하지 않는 시간, 스테이트, 프로퍼티, 네트워킹 등과 같은 주요 개념을 지원함으로써 개발 코드가 간소화 된다. 만약 게임 내의 이벤트 구현을 전부 C++과 같은 프로그래밍 언어로 하게 되면 코드가 매우 복잡해지게 된다.

profile
게임 클라이언트 개발자 지망생의 TIL

0개의 댓글