■ 강연정보
■ [들어가며] 엔진 아키텍쳐를 알 수 있는 기회
아키텍처란 소프트웨어의 주요 특징들을 결정짓는 설계 구조다. 소프트웨어 개발에 미치는 영향도 매우 커서 소프트웨어 개발에 있어서 가장 중요한 부분이라고 할 수 있다.
하지만 게임 엔진 아키텍처 분야는 세계적으로도 정리가 잘 안된 분야입. 그렇다보니 뚜렷한 기준이 있기 보다 당시의 가장 뛰어난 엔진을 표준으로 삼고 있다. 표준이 없다보니 다른 회사의 엔진의 사례를 통해 배울 수 밖에 없는 분야다.
그래서 현재 많이 사용하고 가장 뛰어나다는 평가를 받는 <언리얼 엔진>을 포함한 여러 엔진의 사례를 통한 엔진의 아키텍처에 관련된 강연이었다.
※ 디스이즈게임은 연세디지털게임교육원 학생기자단과 국제콘텐츠개발자콘퍼런스(이하 ICON 2009) 참관기를 제작합니다. 관람객의 입장에서 보고 들은 상세한 내용과 강연에 기대했던 점, 소감 등을 블로그 글쓰기 형식으로 정리했습니다. 참관기의 내용과 의견은 디스이즈게임의 편집방향과 다를 수 있음을 밝혀 둡니다. /디스이즈게임 취재팀 |
■ 아키텍쳐의 분류
아키텍쳐는 먼저 컨텐츠 제작 파이프라인과 게임 개체와 로직의 표현 두 가지고 나뉘고 두가지는 또 각각 인터체인지블 데이터베이스와 데이터 디스크립션&프레전테이션, 프로퍼티 센트릭과 오브젝트 센트릭 총 4가지로 나눴다.
■ 컨텐츠 제작 파이프 라인
차세대를 결정 짓는 것은 컨텐츠라는 게 김태진 매니저의 설명이다. 결국 차세대 컨텐츠를 얼마나 원할하게 생산하느냐가 핵심이라고 할 수 있다.
Interchangeable Database
게임의 모든 데이터를 데이터베이스안에 저장한후 다시 꺼내 쓰는 방식으로 수정이 용이하다는 장점이 있습니다.
Data Description & Presentation
객체를 기술 하는 형태로 Schematized Data를 기술 하고 기본적인 데이터 정의 언어로서의 기능을 가진 언어를 만드는 것이다.
■ 게임 개체와 로직의 표현
일반 솔루션 소프트웨어가 지향하는 것은 비즈니스 로직을 최대한 자유롭고 다양하게 표현하는 것이다. 게임 엔진 소프트웨어가 지향하는 것은 게임 로직을 최대한 자유롭고 다양하게 표현하는 것이라 할 수 있다. 즉 게임 개체(Game Entity)를 최대한 편하게 기술 하는 것이다.
데이터 중심
데이터 드리븐이란 데이터로만 작성되는 프로그램을 의미한다. 즉 게임에 존재하는 모든 것을 데이터화 한다는 것이다.
코드를 데이터로 만들 경우 쉽게 프로그램을 작성하고 실행시간에 바꿀 수 있다는 장점이 있다. 하지만 개발 난이도가 너무 높고, 컴파일러 레벨의 소프트웨어를 개발 해야 한다는 문제점이 있다.
그래서 새로운 형식의 언어를 만드는 수준의 개발이 필요하기 때문에 대부분의 회사는 사용하고 있지 않다. 사용하고 있는 엔진은 <언리얼 엔진>을 들 수 있다.
오브젝트 중심
오브젝트를 중심으로 하지만 상속을 피하는 방법으로 메시지를 사용하는 방법을 말했다. 언리얼 엔진의 경우 모든 클래스는 U오브젝트를 상속한다. 그렇다보니 클래스는 U오브젝트 하나 밖에 존재하지 않는 형식이 된다.
엔진소개
에픽게임즈의 <언리얼 엔진>과 라돈랩의 <네뷸라 디바이스>의 아키텍처에 대하여 소개했다.
<언리얼 엔진>의 스크립트 언어의 문법 수준이 자바와 거의 동일할 정도로 높은 수준이고 스크립트 레벨에서 구현되는 로직과 게임 컨텐츠는 일반적인 스크립트 언어보다 훨씬 방대한 순수한 게임용 언어다. 데이터 편집과 네트워크를 통한 복제가 용이하고 객체 중심의 데이터 드리븐과 컴포넌트 방식의 완전한 구현체라고 할 수 있다.
C++을 직접사용 하기 때문에 성능이 매우 빠르지만 C++의 문법적 확장을 해야 하므로, 매크로와 템플릿에 의존적이다. 네이티브 레벨에서의 코드 작업은 복잡함으로 해당 레벨에서의 작업을 위해서는 높은 수준의 프로그래머가 필요하다.
<네불라 디바이스>는 상속 중심의 데이터 드리븐과 컴포넌트 방식의 구현체로 실제 구현은 C++만으로도 가능하다. 그러나 객체지향 방식의 프로그래밍을 할 수가 없어서 모듈러 방식으로 프로그래밍을 해야 한다. 그래서 데이터 편집이 힙들다는 게 그의 설명이다.
■ 미래의 아키텍쳐는?
앞으로의 아키텍쳐는 마이크로포프트 사의 <닷넷 프레임워크>같은 컴포넌트 기반 프레임워크 형태로 발전될 가능성이 높아 보이고 동시에 여러명이 편집을 하는 협업프로그래밍 역시 영항을 줄 것이라고 예측했다.
또한 멀티코어에 대한 더욱 적극적인 대응으로 새로운 게임 스크립트언어 등이 도래 할 수 있다고 덧붙였다.
물론 미래의 아키텍쳐라고 하지만 이미 구현된 기술이 대부분이다. 하지만 아직까지는 개발과정이라 3~4년 이상은 지나야 어떤 가치를 지니고 있을지 평가할 수 있을 것으로 내다봤다.
■ 주요 질의 응답
청강자: 실시간 동시 레벨에디트를 해야 할 상황이 MMORPG에서 많이 발생하는가?
강연자: 아직까지 버그등 문제가 많고 기능이 구현은 되어있지만 게임은 아직 개발중이기 때문에 크게 확인이 불가능 하다. 동시에 레벨을 제작하는 것 보다는 아티스트팀과 디자인팀 PD등이 함께 게임에 참여하여 협업하기에 좋을 것이라고 생각한다.
청강자: 언리얼 스크립트가 헤더와 스크립트를 자동으로 생성한다고 하는데 스크립트 컴파일 만으로 에디터에서 사용가능 하다는 것은 무슨 의미인가?
강연자: 스크립트만으로 돌아가는 것과 바인딩되는 2가지경우가 존재하고 일반적으로는 스크립트 만으로도 가능하다.
■ [마무리하며] 새로운 방식으로 엔진을 이해한 강연
항상 게임엔진 하면 생각한 것은 얼마나 좋은 그래픽을 보여주며 얼마나 게임을 잘 구현하느냐 하는 게임을 만드는 툴이라는 생각만 가지고 있었는데 엔진을 개발하기 위해서는 어떠한 방식이 사용되는지 또 새로운 프로그래밍에 대한 지식을 얻을 수 있어서 좋았다.
하지만 강의자체가 워낙 양은 방대한데 시간이 모자라다 보니 이해하기 어려운 부분도 금방넘어가는 경우가 있어서 아쉬웠다. 단순히 언급만 한다던가 아니면 그냥 넘어가는 경우가 몇몇부분 있어 아쉬웠다.