Game Designer Friendly Game Engine

Sun-Myung Hwang, Jeong-Seop Kim
2016 Asia-pacific Journal of Multimedia services convergent with Art Humanities and Sociology  
요 약 최근에는 많은 게임 플레이어들이 더 좋은 그래픽을 보기 위해 그래픽 카드를 업그레이드 하는 추 세이기 때문에 DirectX11 지원 그래픽 카드를 대부분 장착하고 있다. 따라서 DirectX11을 이용해서 개 발해도 대부 분의 사용자들이 무리 없이 게임을 즐길 수 있을 것이다. 또한 DirectX11의 새롭게 추가 된 기능으로 더 사 실적인 느낌의 게임을 만들 수 있을 것이다. 3D게임 성능 및 멀티미디어 성능을 높이는 DirectX11은 게임 엔진 개발에 필수 유틸리티이다. DirectX11은 새로운 셰이더와 기존에 불편 한 점을 몇 가지 해소하고 더 좋은 성능을 보여준다. 또한 최근 컴퓨터 부품의 가격 저하로 인해 많 은 사용자가 DirectX11을 지원하는 그래픽 카드를 사용하고 있다. 그러므로 DirectX11을 이용해 게임 을 개발하여도 많은 유저가 플레이 가능할 것으로 판단된다. 본 논문에서는 렌더링 성능 개선 등 다 양한 기능 요구사항을 유연하게 대처하는 게임
more » ... 요구사항을 유연하게 대처하는 게임 엔진을 직접 개발한다. 개발한 엔진은 라이센스 문제 가 없으며, 상용엔진보다 다양한 라이브러리를 사용할수 있다. 핵심어 : 그래픽카드, 다이렉트X11, 3D게임 엔진, 유틸리티, 게임 엔진 기능 Abstract Recently, Many gamers upgrading their graphic card for greater gaming experience, so DirectX 11's coverage is fine to use. Also we can make more realistic game with DirectX 11's new functions. DirectX 11 is released in 2009. But many games are developed with old version of DirectX. DirectX 11 has new shaders, fixed some uncomfortable things, and has incresed performance. Recently, personal computer parts are getting cheaper, so many user have graphic card that support DirectX 11. In this paper, we invent a game engine with DirectX 11 that resolved the problems and make it easy to make a game engine. Commercial engines are made for general purpose. Self-made engine is perfectly fit with the game. Unlike commercial engine, self-made engine is license-free and we can handle the source code. It allows us many things; attach new technology before commercial engines doing that, Free to implement experimental features, and able to use variety of libraries. 105 메인 화면은 하나 뿐 이므로 싱글톤(Singleton)으로 구현한다. 'GraphicsDevice'클래스에서는 그 래픽 디바이스 초기화 작업과 렌더링 전 후 작업 및 렌더링 설정을 위한 몇 가지 함수를 포함하고 있다. 그래픽 디바이스 역시 하나만 사용 할 수 있으므로, 싱글톤으로 구현한다.[5,6,7] 'IScene'클래스는 씬 인터페이스로, 깊이 렌더링을 위한 함수와 일반 렌더링을 위한 함수 그리고 카메라와 빛을 얻어오는 함수와 씬 내의 상태를 업데이트 하는 함수로 구성되어 있다. 'SceneManager'클래스는 'IScene'인터페이스를 관리한다. 'Mesh'클래스는 꼭짓점 버퍼와 정보와 각 꼭짓점의 순서를 지정하는 인덱스 버퍼를 저장하고 가져오는 역할을 한다. 'Renderable'클래스는 인터페이스로 사용자가 메쉬 정보를 가지고 있는 클래스를 렌더링 하고 싶을 때 해당 클래스에서 상속 받아 사용하는 클래스이다. 4. 엔진의 각 기능별 클래스 다이어그램 4.1 엔진의 구성 엔진을 구성하는 각 기능을 클래스로 나타내면 [그림 5]와 같다. 'MainWindow'클래스는 윈도우 를 생성하며 동시에 그래픽 디바이스를 초기화 하는 클래스이다. 메인 화면은 하나 뿐 이므로 싱 글톤(Singleton)으로 구현한다. 'GraphicsDevice'클래스에서는 그래픽 디바이스 초기화 작업과 렌더 링 전 후 작업 및 렌더링 설정을 위한 몇 가지 함수를 포함하고 있다. 그래픽 디바이스 역시 하나 만 사용 할 수 있으므로, 싱글톤으로 구현한다. 'IScene'클래스는 씬 인터페이스로, 깊이 렌더링을 위한 함수와 일반 렌더링을 위한 함수 그리고 카메라와 빛을 얻어오는 함수와 씬 내의 상태를 업데이트 하는 함수로 구성되어 있다. 하나의 완 성된 씬을 만들기 위해서는 반드시 이 인터페이스를 상속받은 클래스에서 씬을 구현해야 한다. Game Designer Friendly Game Engine Copyright ⓒ 2016 HSST 106 [그림 5] 클래스 다이어그램 [Fig. 5] Class Diagram 'SceneManager'클래스는 'IScene'인터페이스를 관리한다. 따라서 'SceneManager'클래스는 씬을 설정할 수 있는 함수와 씬을 렌더링 하는 함수, 그리고 현재 씬 상태 업데이트 함수를 호출해주는 함수로 구성되어 있다. 또한 현재 씬이 변경될 경우, 'SceneManager'클래스에서 가지고 있는 현재 'IScene'인터페이스의 레퍼런스(Reference)가 소멸되어야 하므로 'IScene'클래스와 'SceneManager'는 의존 관계를 갖는다. 'Mesh'클래스는 꼭짓점 버퍼와 정보와 각 꼭짓점의 순서를 지정하는 인덱스 버퍼를 저장하고 가 져오는 역할을 한다. 'Renderable'클래스는 인터페이스로 사용자가 메쉬 정보를 가지고 있는 클래스를 렌더링 하고
doi:10.14257/ajmahs.2016.03.35 fatcat:odlga4wudbatldkfkwtotzpfza