게임 소프트웨어 구현의 핵심인 게임엔진이란 무엇인가

1. 게임 소프트웨어 구현의 핵심인 게임엔진이란 무엇인가

 게임 엔진이란 게임의 하부에서 처리할 수 있는 그래픽과 음악, 효과음의 출력, 입력장치의 입력을 받는 등의 일을 처리하는 API의 모음을 말합니다. 게임 엔진은 게임 프로그래머가 실제적인 작업을 할 수 있도록 하는 전초 단계가 되며, 게임의 장르적 특성에 부합되도록 제작되거나 모든 장르에 부합할 수 있을 정도의 확장성을 갖출 수 있게 합니다. 게임엔진은 게임 업체가 자체적으로 보유하고 있기도 하고 상용 엔진을 사용할 수도 있는데, 자사 게임 엔진은 제작하는 게임의 특성에 맞춘 엔진으로 제작되고 상용 엔진들은 범용성과 확장성을 가지게 됩니다.

 이 문서에서는 게임엔진의 주요 기능과 게임 엔진의 유형 및 종류에 관해 기술되어 있습니다. 

2. 게임 엔진의 주요 기능

 게임 엔진의 주요 기능으로는 플랫폼 추상화와 물리엔진, 쓰레딩으로 구분됩니다. 플랫폼 추상화란 대부분의 랜더링 시스템이 Direct3D, OpenGL 기반으로 구현되어 있다는 것이며, 미들웨어와 같은 플랫폼 추상화를 제공하고 있습니다. 그래서 소스코드의 수정이 거의 없이 다양한 플랫폼에서 실행 가능하다는 장점을 가지고 있습니다. 물리 엔진의 적용으로 실제 세계의 물리 작용을 컴퓨터로 묘사하는 것이 가능하며, 하복 물리 엔진의 물리 시뮬레이션 기능을 활용하여 현실과 가까운 엑체, 직물과 같은 연체 효과 등도 구현 가능하게 해 줍니다. 게임 엔진에서 멀티코어 시스템에서의 멀티 쓰레딩을 지원하기 때문에 성능적으로도 이점을 누릴 수 있습니다. 

반응형

3. 게임 엔진의 유형 및 종류

 게임 엔진은 구현하려는 게임의 성격에 따라 다양한 종류로 분류됩니다. 3D 게임을 제작할 때 3D 객체의 값을 파일에서 불러와야 하는 상황이 생길 수 있습니다. 이 파일에서 불러들일 정보는 각 정점의 좌표와 테스트 좌표 및 노멀(Normal), 방사(Diffuse) 값 등이 있는데 렌더링 엔진에서 이들을 읽어 들이고 나서 화면에 뿌리는 일련의 과정, 즉 3D로 만들어진 폴리곤(polygon)을 화면에 찍는 작업을 수행하게 됩니다. 렌더링 엔진의 종류로는 Direct3D, OpenGL과 같은 기술이 있습니다. 객체를 움직이게 하기 위해서는 애니메이션 엔진이 사용됩니다. 애니메이션 엔진에서 메시 출력, 골격체, 역기구학의 기술이 적용되어 3D 객체의 움직임을 정교하게 구현할 수 있게 도와줍니다. 게임의 캐릭터나 물체들을 좀 더 자연스럽게 움직이게 해주는 엔진으로는 물리 엔진이 있습니다. 포물선 운동, 충돌 시 물체 움직임 등의 값들을 적용시켜 좀 더 현실과 가까운 게임 환경을 만들 수 있도록 해주는 엔진입니다. 게임의 품질이 점점 높아지면서 인공지능 엔진도 등장하게 됩니다. 사용자가 조작하지 않는 NPC(Non-Player Character) 컨트롤에 적용될 수 있는 엔진입니다. 부가적으로 스크립트 에디터, 맵 에디터, 개발 편의성을 제공하는 기타 게임 개발 도구들도 다양하게 상용화되어 게임 제작에 도움을 주고 있습니다. 

 현재 게임 개발을 위해 사용되고 있는 대표적인 게임엔진으로는 케이크(Quake), 언리얼(Unreal), 리스텍(Lithech), 유니티(Unity) 엔진 등을 들 수 있습니다. 케이크는 이든 소프트웨어의 게임엔진으로, OpenGL 엔진을 이용한 렌더링 분야에서 독보적인 엔진으로 자리 집고 있습니다. 하지만 다른 엔진에 비해 사용하기가 어려워 언리얼 엔진에 비해 시용 빈도가 낮다는 특징이 있습니다. 언리얼은 퀘이크의 대항마로 등장한 게임 엔진이며 뛰어난 광현 효과가 사용되는 엔진입니다. 투영 그림자를 사용해 더 리얼한 애니메이션을 가능하게 해 주며 다양한 API(Direct 3D, OpenGL, 클라이더)를 지원하고 많은 플랫폼을 지원하는 게임엔진입니다. 사용하기 편리한 툴과 인터페이스를 제공하여 개발자가 좀 더 편안하게 게임을 개발할 수 있는 환경을 지원합니다. 리스텍 게임 엔진은 Direct3D에서 최적화된 성능을 보여줍니다. 후발주자이지만 스릴 넘치는 게임 등에 많이 사용되고 있는 추세입니다. PS2와 X-Box 용 API를 지원하고 있으며 2.2부터는 주피터라는 이름을 사용하고 있습니다. 마지막으로 유니티 엔진은 3D 게임 및 3D 애니메이션 제작에 많이 사용되는데 도입 비용이 저렴하다는 특징이 있습니다. 리눅스, 맥, 윈도우 뿐 아니라 안드로이드, iOS 등 모바일 플랫폼을 지원하는 게임엔진입니다.