Game Engine

MOON·2022년 7월 8일
0
post-thumbnail

게임엔진이란?

게임엔진은 종합적인 컴퓨터 소프트웨어 시스팀을 보다 손쉽게 개발할 수 있도록 도와주는 개발 툴이다

게임 엔진을 사용하면 개발 기간이 훨씬 단축된다.

게임의 개발비는 개발 기간에 비례하므로 개발기간을 단축할 수 있는 게임 엔진은 게임 개발의 필수적인 요소라고 할 수 있음.

게임 엔진은 게임 개발사에서 직접 개발 할 수 있고, 상용화 되어 있는 엔진을 구매할 수 있다.

게임엔진의 구성요소는 3D 그래픽을 위한 렌더링 시스템, 공간상의 충돌 감지 , 현실적인 물리 효과를 위한 물리 시스템, 정해진 절차를 지시하기 위한 스크립트 에디터, 게임의 가상공간을 만들기 위한 맵 에디터, 각종 개발 도구를 말함


게임엔진의 주된 역할

게임 제작을 위해서 필요한 핵심적인 성능을 발휘해 주도록 모아진 라이브러리의 모음 : 이 라이브러리는 게임에서 처리할 수 있는 모든 일을 처리하도록 해주는 API의 모음

게임 세계의 데이터를 관리하고 그 데이터를 화면에 렌더링 하는 일

복잡하고 방대한 게임 콘텐츠의 상호작용과 특수 효과들은 실시간으로 구현하기 위한 기술들이 게임 엔진으로 모아지게 됨

라이브러리 이외에도 개발을 지원하기 위한 여러 가지 툴과 스크립트 등을 내장


게임 엔진 요구 사항

게임 엔진의 기능

렌더링, 가시성 관리
실세계 시뮬레이션, 캐릭터 지원

게임 엔진의 구성

렌더링, 물리, 인공지능, 사운드, 맵 에디터, 씬 그래프 에디터와 같은 툴



게임 엔진의 특징

게임의 각 요소들이 효율적으로 연동하기 위해서는 방대한 게임 구성 요소들과 라이브러리들의 연계 작업이 중요

각 엔진은 각 엔진 특유의 인터페이스를 갖고 설계 됨 : 게임 엔진은 툴 프로그래머나 게임 프로그래머가 실제적인 작업을 할 수 있도록 하는 기반을 다지는 단계이므로 게임의 쟝르별 특징에 부합되도록 엔진 자체를 설계하거나 범용 엔진으로부터 커스터마이징(customization)하는 작업을 수반하게 됨.

국내 외를 포괄해서 대부분의 게임 업체가 자체적으로 보유하고 있는 게임 엔진은 자사에서 제작한 게임의 쟝르별 특성에 맞추어진 엔진이고, 판매되는 상용 엔진은 쟝르별 특징을 아우르는 범용성과 확장성을 보장하도록 설계되어 있음.


게임 엔진 기본적 구성요소

Renderer - 장면을 렌더링 하는 기술,Direct3D, OpenGL, Glide, Soft Rendering
Streaming terrain - 실외 배경(Outdoor System)으로써 주로 지형을 표현함.
Portal Rendering - 실내 배경(indoor system)으로써 BSP와 PVS가 주로 사용됨
3D Mesh Rendering - 캐릭터나 기하 객체의 표현
Character Animation - 캐릭터의 움직임을 표현함.
Collision System - 객체의 실시간 충돌을 검사함
Physics Engine - 물리학적인 제어 시스템으로 충돌 후 반응을 제어함
Inverse Kinematics - 주로 캐릭터의 걸음(warking)을 제어하는데 많이 사용됨
Sound System - 캐릭터들의 움직임에 반응하는 사운드 시스템을 구현함
Particle System - 안개, 구름, 답배, 불꽃등을 표현함
Path Finding / Waypoint generator - NPC와 캐릭터의 움직임 제어를 위해서 사용되는 인공지능적인 기법으로써 주로 A* 알고리즘을 많이 씀
Scripting System - 전반적인 게임의 인공지능을 제어하기 위해서 사용함


렌더링 엔진

렌더링 : 3차원상의 물체에 대한 기하학적 정보를 이용하여, 이를 2차원 스크린상의 이미지로 변환하는 것

3D툴로 만들어진 3D 객체를 파일에서 불러온다고 했을 때, 이 파일에서 불러들일 정보는 각 정점의 좌표와 텍스쳐 좌표 및 노멀(Normal), 방사(Diffuse) 값 등이 있음. 이들을 읽어 들이고 나서 화면에 뿌리는 일련의 과정, 즉 3D로 만들어진 폴리곤(Polygon)을 화면에 찍는 분야를 보통 렌더링 엔진이라고 함.

컴퓨터로 화면을 그리기 위해서는 행렬, 선형대수, 벡터, 수열, 미적분학과 같은 수학적인 지식과 개념으로 구축된 복잡한 자료구조와 대량의 연산 작업을 필요.

렌더링은 폴리곤의 가시화와 더불어 많은 특수효과와 카메라의 움직임 등 많은 연산을 지원하기 때문에 작업량이 상당히 많음. 따라서 작업량이 많은 렌더링 과정을 효과적으로 처리할 수 있는 엔진이 구축되면 화면의 품질이 우수한 게임을 만들어 낼 수가 있음.


렌더링 엔진의 필요성

사용자가 3D 그래픽 프로그래밍의 깊은 지식이 없으면, OpenGL이나 DirectX와 같은 API를 이용하는 것은 상당히 어려움.
따라서 Scene graph API 라고 불리는 High-Level API를 통해, 일반 사용자들이 비교적 쉽게 렌더링 할 수 있음.
Scene graph API는 일종의 자료구조로써 게임의 장면을 화면에 렌더링 하는 기능을 함. 사용하기 쉬운 API 함수들로 이루어짐

그 밖의 엔진

애니메이션 엔진, 물리 엔진, 인공지능 엔진 등

다른 게임 엔진 예

쿼이크 엔진, 오우거 엔진, 언리얼 엔진

profile
나만의 공간

0개의 댓글