보통 게임 스튜디오는 크게 엔지니어, 아티스트, 기획자, 프로듀서, 기타 관리 지원(마케팅, 법률, 기술지원, 인사 관리 등) 다섯 부서로 구성된다.
엔지니어는 게임을 만드는 데 쓰이는 소프트웨어와 제작 도구를 디자인하고 구현한다.
기획자(게임 디자이너)는 사용자가 게임에서 얻을 수 있는 경험, 즉 게임플레이를 설계한다.
스튜디오마다 역할이 다르다.
어떤 회사에서는 일정 관리와 인력 관리를, 어떤 경우에는 상급 기획 업무를 맡는다.
다른 부서와의 매개자 역할을 맡기도 한다.
작은 스튜디오의 경우는 프로듀서가 없는 경우도 있다.
게임 생산에 직접적으로 참여하는 사람들을 지원하는 부서(스태프)
경영 관리, 마케팅, 관리, IT 기술 지원(개발 하드웨어 소프트웨어를 구매, 관리)
게임을 판매, 제조, 배포
이 책에서는 한정된 사용자들로 이뤄진 2차원 또는 3차원 가상 세계를 지칭하는 게임의 개념에만 집중한다.
이 책의 주된 관심사는 FPS, 3인칭 액션, 레이싱, 파이팅 게임 등을 만드는 게임 엔진이다.
대부분 2차원 또는 3차원 게임은 컴퓨터 과학적인 용어로 '덜 엄격한 실시간 상호적 행위자 기반 컴퓨터 시뮬레이션(soft-real-time interactive agent-based computer simulations'이라고 부를 수 있다.
비디오 게임은 컴퓨터가 다룰 수 있게 실세상을 수학적으로 모델화한다.
모델화 할때는 근사화와 단순화가 필요하다. 이를 잘 활용하면 실세상의 세세함을 잃지 않으면서도 큰 재미를 주는 게임을 만들 수 있다.
모든 비디오 겜은 시간적인 시뮬레이션이다. 가상 세계는 고정된 것이 아니라 시간이 지나거나 이야기가 진행됨에 따라 동적으로 변한다. 또한 예측 불가능한 사용자의 동작에 대비되어 있어야 한다. (Interactive 한 시간적 시뮬레이션)
모든 실시간 기반 시스템은 시간 제약(deadline)이라는 핵심 개념이 들어있다.
최소 초당 24번 업데이트를 해야 한다.
대부분 초당 30 또는 60번 화면을 그리는데, NTSC 모니터의 재생 빈도의 배수이기 때문.
물리 엔진이 초당 120번 업데이트 해야한다, 오디오 시스템이 초당 60번 버퍼를 채워야 한다 등
덜 엄격한 실시간 시스템이란 뜻은 시간 제약을 지키지 못해도 치명적인 결과가 발생하지는 않는다는 뜻. (반대의 예는 자율주행 자동차나 미사일 추적 요격 시스템등이 있을 것이다)
수학적 모델은 분석적(analytic) 모델과 수치적(numerical) 모델로 나뉜다.
수치적 시뮬레이션은 보통 반복적 계산을 통해 각 이산(discrete)시간 단계의 시스템 상태를 찾게 구현한다. 컴퓨터 게임이 바로 이 방식으로 동작한다.
'게임 엔진'이라는 말은 1990년대 인기를 끌었던 이드 소프트웨어의 '둠(Doom)'등의 1인칭 시점 슈터(FPS) 게임에서 유래했다.
둠은 핵심 소프트웨어(3D 그래픽 엔진, 충돌 검출 시스템, 오디오 등)와 사용자가 보는 게임 요소(그래픽 자원, 게임 월드, 게임플레이 규칙 등)이 뚜렷하게 구분되도록 설계되었다.
이를통해 모드(mod) 커뮤니티 등의 발달하게 되었고 퀘이크3 아레나와 언리얼처럼 처음부터 재사용이나 모드 제작을 염두에 두고 설계된 게임이 등장했다. 처음부터 핵심 엔진 요소를 개발하는 경우보다 경제적이다.
어디까지가 게임 엔진이고 어디서부터 게임인지 딱 잘라 말하기는 쉽지 않다.
어떤 게임 소프트웨어가 게임 엔진인지 아닌지를 구분할 때는 그 소프트웨어가 데이터 주도적으로 설계됐는지를 보는 것이 일반적이다.
게임 규칙이나 게임 객체를 그리는 부분이 하드 코딩돼 있다면 그 소프트웨어를 다른 게임을 만드는 데 사용하기는 매우 어렵다.
따라서 게임 엔진이라는 용어는 핵심적인 변화 없이도 다른 게임을 만들 수 있는 확장 가능한 소프트웨어를 가리키는 데만 쓰는 게 옳다.
모든 게임을 만들 수 있는 게임엔진은 존재하지 않는다.
대체로 게임 엔진의 범용성이 커질수록 최적화는 떨어진다고 말할 수 있다. (trade off)
보통 게임 엔진은 특정한 장르의 게임을 위해 만들어진다. 그럼에도 공통된 요소가 많은 것도 사실이다.(키보드 마우스 조이스틱 입력 처리, 3D 메시를 그리는 부분, HUD, 텍스트 렌더링, 오디오 등)
예를들어 언리얼을 이용해 FPS가 아닌 전혀 다른 장르의 게임을 만들어 성공한 사례가 많다.
퀘이크, 언리얼 토너먼트, 하프 라이프, 배틀필드, 데스티니, 타이탄폴, 오버워치 등의 게임에 의해 확립되었다.
현대 FPS는 넓은 실외 환경이나 한정된 공간을 가리지 않고ㅗ 온갖 다양한 가상 세계를 배경으로 한다.
1인칭 시점을 사용하는 게임은 보통 기술적으로 가장 만들기 힘든 게임 중 하나다. (3인칭 시점 슈터 액션, 플랫포머, MMO만이 여기에 견줄만 하다). 1인칭 시점 게임에서 특히 많은 기술적인 혁신이 일어나는 것이 이 때문이다.
FPS가 중요시하는 기술:
FPS에 쓰이는 렌더링 기술
플랫포머란 여러 발판 사이를 뛰어다니는 일이 주된 게임플레이인 3인칭 시점 게임.
슈퍼마리오64, 크래시 밴디 쿳, 레이맨 2, 소니 더 헤지훅 등...
기술적으로는 저스트 코즈 2, 기어즈 오브 워, 언차티드 등을 한데 묶어 생각할 수 있다.
FPS와 다르게 캐릭터 전신을 그려야 한다.
플랫포머에서 가장 중요한 기술:
격투 게임은 보통 플레이어 2명이 링같이 제한된 장소에서 각자 사람 형태의 캐릭터를 조정해 서로를 공격하는 게임.
소울 칼리버, 철권 등...
격투 게임에서 중요한 기술:
레이싱 게임은 주로 자동차를 비롯한 탈것을 몰고 길을 달리는 게임.
시뮬레이션을 강조한 레이싱게임, 아케이드 레이싱 게임 등 여러 하위 장르가 있음.
레이싱 게임에서 중요한 기술:
전략 게임의 기원은 듄2 라고 할 수 있다. 워크래프트, 커맨드 앤 컨커, 에이지 오브 엠파이어, 스타크래프트 등의 이에 속한다.
전략 게임에서는 먼 곳을 보기 위해 카메라의 각도를 마음대로 바꿀 수 없게 하는 것이 보통이기 때문에 전략 게임 렌더링 엔진에는 여러 최적화의 여지가 있다.
현대식 전략 게임은 원근 투영(perspective projection)과 진짜 3D 월드를 사용하기도 하지만, 유닛과 빌딩의 정렬을 위해 여전히 그리드 기반 시스템을 사용하는 경우도 있다.
전략 게임에서 즐겨 사용하는 기술:
대표적 MMO 에는 에버퀘스트, 월드 오브 워크래프트, 스타워즈 갤럭시 등이 있다.
이 장르의 핵심은 동시에 수천명에서 수만 명의 게이머들이 넓으면서 지속적인 가상 세계에서 게임을 한다는 것이다.
지속적인 가상 세계란 가상 세계의 상태가 일반적인 게임보다 길게 유지된다는 뜻이다.
MMO의 핵심에는 막강한 성능을 가진 게임 서버들이 있다. 게임서버는 게임 월드의 상태를 책임지고 유지하며, 게임 로그인과 로그아웃을 담당하고, 게이머 간 문자 또는 음성 대화를 매개한다.
그래픽 측면에서 MMO는 여타의 게임들보다는 다소 떨어진다고 볼 수 있는데, 이는 엄청나게 큰 게임 월드와 한꺼번에 처리해야 할 게이머 수 때문이라고 할 수 있다.
요즘의 게임 디자인 추세는 플레이어 제작 콘텐츠 수용이다. 미디어 몰큘의 리틀빅플래닛.
가장 우명한 것으로는 마인크래프트가 있다.
AR, AR, MR 은 3D 워ㅗㄹ드에 청자를 몰입시키는 것이 목적이다.
VR은 몰입적 멀티미디어 또는 컴퓨터ㅗ 시뮬레이션 현실.
실제 존재하는 현실의 장소나 가상의 세계에 사용자의 존재를 시뮬레이션 하는 것.
컴퓨터 그래픽만으로만 가상 세계를 만들어 낸다.
AR과 MR은 명확히 구분하기 힘든 경우가 많고 혼용해 사용하는 경우도 흔하다.
사용자에게 컴퓨터 그래픽으로 보강한 현실 세계를 제공한다는 공통점이 있다.
게임 업계는 이 기술들을 어떻게 적용할지 실험 중이다. 기존의 3D 게임을 VR로 이식한 경우도 있는데 그다지 혁신적이지는 않았다.
VR/AR/MR 기술 없이는 불가능한 게임 경험을 제공할 새로운 게임 장르가 형성되고 있는 중인 것 같긴 하다.
잡 시뮬레이터, 베케이션 시뮬레이터 등
기존의 1인칭 슈터 엔진과기술적으로 유사하고 유니티나 언리얼 같이 FPS 제작용 엔진들이 VR를 자체적으로 지원하기도 한다. 그러나 VR게임은 FPS 게임과 중요한 차이가 있다.
포켓몬 고 등의 게임은 사용자의 폰과 태블릿의 움직임에 반응한다.
FPS의 효시는 보통 캐슬 울펜슈타인 3D 라고 본다.
이드 소프트웨어는 후에 둠, 퀘이크, 퀘이크 2, 퀘이크 3를 만들었다.
여기에 사용된 엔진들은 구조가 매우 비슷하기 때문에 앞으로 퀘이크 계열 엔진이라고 부르기로 한다.
이 기술들은 다른 게임이나 다른 게임 엔진을 만드는 데 활용되었다.
벨브 사의 소스엔진도 먼 근원은 퀘이크에 있다고 할 수 있다.
퀘이크와 퀘이크2 의 소스코드는 공개돼 있고, C로 짜여 있긴 하지만 구조적으로 상당히 완성도 있고 깔끔하게 만들어져 있어, 공부하는데 도움이 될 수 있다.
오픈소스 엔진 중 오거(OGRE) 3D 엔진은 구조가 잘 짜여 있으면서 배우기 쉽고 쓰기 쉬운 3D 렌더링 엔진이다.
게임 엔진은 크게 제작 도구(툴)와 런타임 구성 요소로 나뉜다.
게임 엔진도 계층적으로 구성된다. 상위 계층은 하위 계층에 의존하지만 그 반대는 아니다. 하위 계층이 상위 계층에 의존할 때 순환 의존(circular dependency)라고 한다. 선형 의존은 시스템 간 불필요한 결합을 생기게 하고 테스트를 어렵게 만들며 재상을 저해하기 때문에 어떤 소프트웨어라도 피해야한다.
컴퓨터나 콘솔 시스템을 의미.
윈도우, 리눅스, 맥, 아이폰/아이패드, 안드로이드, 플레이스테이션, XBOX, 닌텐도 등...
운영체제나 하드웨어 제조사에서 제공하는 로우레벨 구성 요소.
하드웨어를 관리하고 운영체제나 다른 상위 계층 소프트웨어에서 불필요한 하드웨어 욧인들을 신경 쓰지 않게 하는 역할.
운영체제는 게임과 같은 애플리케이션들을 조율하는 일을 한다.
초창기의 콘솔에서 운영체제는 게임 실행 프로그램에 같이 컴파일되는 단순한 라이브러리 계층에 불과했다. 이런 시스템에서는 게임이 실행되면 하드웨어를 완전 독점하다.
그러나 최신 콘솔 시스템에서는 운영체제가 게임 실행을 정지시키거나 특정 자원을 다시 가져갈 수 있다.
대부분의 게임 엔진은 다양한 서드파티 소프트웨어 개발 도구(SDK)와 미들웨어를 적극 이용한다.
SDK가 제공하는 함수 또는 클래스 형태의 인터페이스를 애플리케이션 프로그래밍 인터페이스(API)라고 한다.
DirectX, OpenGL, Havok, PhysX, Boost++, STL, Kynapse, Euphoria 등등...
외부라이브러리 예시
게임 렌더링 엔진은 다음과 같은 하드웨어 인터페이스 라이브러리 위에 동작. (예전것도 있다)
충돌 감지와 강체 역학(게임에서는 보통 그냥 물리 라고 부른다) 기능을 제공하는 SDK
캐릭터 애니메이션과 물리 사이의 경계가 점점 모호해지고 있다. 맥스와 마야 같은 도구로 애니메이션을 만든 다음 런타임에 물리를 이용해 보강하는 방식을 많이 쓰는데, 대표적으로 하복 애니메이션이 있다. 최근 Natural Motion이라는 회사가 내놓은 제품들은 게임과 여타 디지털 미디어에서 캐릭터 애니메이션을 취급하는 방식을 근본적으로 바꾸려고 시도한다.
엔드르핀은 마야 플러그인으로, 캐릭터를 생체 역학적으로 시뮬레이션한 결과를 마치 사람이 직접 애니메이션처럼 내보낼 수 있는 툴이다. 무게 중심, 무게 분포, 중력과 다른 힘의 작용하에 실제 사람이 균형을 잡고 움직이는 방식 등에 대한 생체 역학적 연구를 바탕으로 한다.
유포리아는 엔도르핀의 실시간 버전으로 예측 불가능한 힘의 작용하에서도 물리적으로나 생체 역학적으로 정확한 캐릭터 움직임을 만들어내는 것을 목표로 한다.
대부분 게임 엔진은 적어도 1개 이상의 하드웨어 플랫폼에서 동작해야 한다.
따라서 대부분의 게임 엔진은 플랫폼 독립적 계층을 둔다.
이 계층은 하드웨어, 드라이버, 운영체제, 기타 서드파티 소프트웨어 위에서 동작하는데, 플랫폼에 상관없이 게임 프로그래머가 제어할 수 있는 함수들로 특정한 인터페이스 함수들을 wrap해서 엔진이 하부 플랫폼의 세부적인 내용까지 몰라도 동작할 수 있게 한다.
게임 엔진을 비롯해 규모가 큰 모든 C++ 소프트웨어는 적재적소에 쓸 수 있는 소프트웨어 유틸리티들이 필요하다. 이 책에서는 이런 것들을 코어 시스템이라고 부르기로 했다.
(모듈 스타트업과 셧다운, 어서션, 유닛 테스트, 메모리 할당, 수학 라이브러리, 문자열과 해시 문자열 ID, 디버그 프린트와 로그 등...)
자원 관리자(resource manager)는 게임 엔진의 모든 자원과 여타 엔진 데이터에 접근하는 데 일관된 인터페이스를 제공하며 형태는 다르더라도 모든 게임 엔진에는 자원 관리자가 있다. 언리얼의 패키지와 오거의 ResourceManager 클래스가 이런 형태다.
렌더링 엔진은 게임 엔진에서 제일 복잡하고 광범위한 부분 중 하나다. 렌더링 엔진의 설계 방식은 굉장히 다양하다. 표준적 설계 방식이 있는 것은 아니지만, 앞으로 살펴볼 내용처럼 렌더링 엔진은 3D 그래픽 하드웨어이 특성에서 기인한 몇 가지 근본적인 디자인 철학을 공유한다.
렌더링 엔진에서 가장 기초적인 부분이다. geometric primitive를 가능한 빠르게 그리면서 다양한 방식을 지우너하는 데 중점을 두며, 화면의 가시성 등 좀 더 추상적인 문제에는 관여하지 않는다.
그래픽 하드웨어를 찾아내고 초기화한 후 렌더 표면(후면 버퍼, 스텐실 버퍼 등)을 설정하는 것과 같은 간단한 일을 하는 데도 상당히 긴 코드를 짜야 한다. 이런 부분을 이 책에서는 그래픽 디바이스 인터페이스라고 부르기로 한다.
로우레벨 렌더러와 나머지 부분들은 메시, 선 리스트, 점 리스트, 입자, 지형 조각, 문자열 등 상위 계층에서 전달하는 기하학적 기본 단위(렌더 패킷이라고도 한다)를 처리하고 가능한 빨리 그리기 위해 협업해야 한다.
로우레벨 렌더러는 전달된 기하학적 단위들이 실제 보이든 그렇지 않든 상관하지 않고 무조건 그린다. 시야 결정(visibility determination)을 통해 보이는 부분과 그렇지 않은 부분을 가려내 그릴 기하학적 기본 단위 수를 줄이는 일은 보통 더 상위 계층에서 담당한다.
로우레벨 렌더러는 사용된 공간 분할 방식이나 장면 그래프 종류에 전혀 영향을 받지 않는 것이 가장 이상적이다. 이 경우 같은 기본 단위 인터페이스를 사용하면서도 보일 가능성이 있는 집합(PVS)을 반단하는 시스템은 각 개발 팀이 원하는 것을 사용할 수 있는 이점이 있다.
오늘날 게임 엔진은 여러가지 시각 효과를 사용하는데
풀 스크린 후처리 효과의 예를 들어보면
일반적으로 이펙트 시스템을 따로 둬 입자, 데칼, 그 외의 시각 효과를 전담하는 경우가 많다.
입자와 데칼은 렌더링 엔진 안의 구분된 시스템으로 분리돼 직접 로우레벨 렌더러에 입력을 주는 경우가 많고, 이와 대조적으로 조명 매핑, 환경 매핑, 그림자는 렌더링 엔진 안에서 처리된다. 풀 스크린 후처리 효과는 렌더러에 포함해 구현할 수도 있고, 아니면 렌더러의 결과물을 갖고 따로 동작을 하는 별개의 시스템으로 만들 수도 있다.
대부분의 게임은 3D 그래픽 외에 그 위에 덧씌워지는 2D 그래픽을 사용한다.
텍스처를 입힌 사각형(또는 삼각형 2개)을 직교 투영해 그리기도하고, 아니면 진짜 3D 빌보드에 그린 후 항상 카메라를 향하게 구현하기도 한다.
풀 모션 비디오 시스템과 인게임 시네마틱 시스템도 이 계층과 관련이 있다.
실시간 시스템의 특성 때문에 게임은 최적화를 위해 프로파일링을 해야 하는 경우가 종종 있다. 또 대부분의 경우 메모리가 부족하기 때문에 메모리 분석 툴도 함께 사용해야 한다.
디버그 정보 그리기, 게임 메뉴 또는 콘솔, 게임 플레이 기록 및 정확한 재현을 위한 시스템 등을 모두 포괄하는 계층.
시중의 훌륭한 범용 디버깅 툴
대부분의 게임 엔진은 자체적으로 프로파일링과 디버깅 툴을 구현한다.
충돌 체크는 모든 게임에서 중요하다. 제대로 된 충돌 체크 없이는 게임 월드에서 어떤 일도 제대로 해내기 힘들다. 이보다 한발 더 나가 매우 사실적이거나 사실에 근사한 역학 시뮬레이션을 구현하는 게임도 있다. 보통 물리 시스템, 정확히는 강체 역학이다.
보통 충돌과 물리는 밀접한 연관이 있다.
오늘날에는 직접 충돌 및 물리 엔진을 만드는 개발사는 거의 없고 대개 외부 SDK를 사용한다.
생명체나 그 유사한 형태로 움직이는 물체가 나오는 게임이라면 반드시 애니메이션 시스템이 있어야 한다.
게임에서 사용하는 가장 기본적인 다섯가지 애니메이션 방식
뼈대 애니메이션은 애니메이터가 비교적 단순한 본은 움직여 캐릭터 메시를 움직이는 방식, 뼈대 애니메이션이야 말로 오늘날 가장 널리 쓰이는 애니메이션 방식.
모든 게임에는 사용자 입력을 받는 HID가 있는데,
어떤 떄는 플레이어에게 출력을 보내는 경우도 있기 때문에 I/O라고부르기도 함(포스 피드백, 진동, 위모트 소리 등)
퀘이크 엔진의 오디오 시스템은 무척 단순,
언리얼 엔진 4는 어느정도 괜찮은 오디오 렌더링 엔진을 갖추고 있지만 기능이 제약적,
DirectX 플랙폼용으로는 XAudio2가 있음.
EA가 개발한 비공개 고급 오디오 엔진이 있는데 이름이 SoundR!OT이다.
소니 인터렉티브 엔터테인먼트가 너티 독 등 퍼스트파티 개발사들과 갭라한 Scream도 있다.
개발을 시작할 때 부터 멀티 플레이어 기능을 미리 고려하는 편이 좋다.
완성된 멀티플레이어 게임을 싱글플레이어 게임으로 바꾸는 것은 의외로 간단하다.
게임 내에서 하는 행동, 게임 규칙, 플레이어 캐릭터의 능력, 플레이어의 목표 등.
따로 추상적인 스크립트 언어를 사용하는 경우도 있음.
게임 객체 모델은 소프트웨어 객체 모델과 밀접한 관계가 있음
게임 엔진에서 소프트웨어 객체 모델은 다음과 같은 문제들과 관련있음
게임 안의 객체들은 서로 소통해야 하는데, 그 방식은 무척 다양.
게임 규칙과 콘텐츠를 쉽고 빠르게 개발하기 위해 많이 사용됨.
점점 인공지능 시스템에도 공통적인 패턴이 등장하기 시작했고 서서히 게임 엔진에 통합되는 추세.
Kynogon사가 개발한 미들웨어 SDK인 Kynapse는 상용 게임 수준의 AI에서 사용되는 대부분의 로우레벨 기술을 지원.
게임플레이 기반 계층과 여타 로울벨 엔진 요소들이 갖춰지면 비로소 게임플레이 프로그래머와 디자이너가 게임 자체의 기능들을 구현할 수 있다.
플레이어 메카닉, 카메라 시스템, NPC 인공지능, 무기 시스템, 탈것 등...
3D 메시, 텍스처 비트배, 애니메이션 데이터, 오디오 파일 등 다양한 자원이 게임 엔진에 사용된다. 모든 자원은 아티스트가 만들어 내고 다듬어야 하는데, 이런 작업을 하는 데 사용하는 툴을 디지털 콘텐츠 생성 프로그램이라고 한다.
오토데스트 마야, 3ds 맥스, 포토샵, 사운드 포지...
월드 제작은 보통 게임 엔진 자체적인 월드 제작 툴을 사용.
DCC에서 만든 데이터를 바로 게임 엔진에서 사용할 수 없다.
표준 포멧이나 다른 포멧으로 export 후, 가공해야 함.
게임에서 보이는 기하 형태의 대부분은 삼각형 메시로 만들어짐.
일부 오래된 게임 중에서는 볼륨 형태의 기하 형태인 브러시를 사용하기도 함.
스켈레탈 메시는 애니메이션을 하기 위해서 뼈대 구조에 연결되는 특수한 형태의 메시다. 스킨이라고도 부르기도 하는데, 메시가 보이지 않는 뼈대를 감싼 피부 같은 역할을 하기 때문에 붙여진 이름.
스켈레탈 메시의 각 정점에는 뼈대의 어느 관절(joint)들에 연결되는지를 나타내는 정보가 담겨 있다. 이와 함께 각 뼈대의 영향을 어마만큼 받는지를 나타내는 가중치도 함께 갖는 것이 일반적이다.
스켈레탈 메시를 그리기 위해서는 세 가지 데이터가 필요하다.
오디오 클립은 보통 사운드 포지 등의 오디오 제작 도구로부터 가져옴
WAV가 흔하고, 플레이스테이션의 ADPCM(.vag)등도 흔히 쓰인다. 오디오 클립들은 뱅크(bank)로 묶어서 쓰는 경우가 흔한데, 관리나 로딩, 스트리밍 등의 편의성 때문이다.
오늘날의 게임 엔진에서는 복잡한 파티클 효과가 쓰인다. 이것들은 시각 효과를 전문으로 하는 아티스트에 의해 제작된다.
후디니 등의 서드파티 도구를 사용하면 영화 수준의 효과를 만들 수 있다.
대부분의 엔진은 성능상의 문제로 전용 파티클 효과 편집 도구를 따로 만드는 경우가 많다.
게임 엔진의 모든 것이 한데 모이는 곳이 게임 월드다.
게임 엔진이 처리해야 하는 자원의 종류는 매우 많은데, 렌더링용 기하 형상에서부터 머티리얼, 텍스처, 애니메이션 데이터, 오디오까지 다양하다.
예를들어 마야에서 애니메이션 클립을 하나 제작한 경우 메타데이터는 자원 다듬기 파이프라인과 최종적으로 게임 엔진에 다음과 같은 정보를 제공한다.
게임엔진은 게임의 자원에 연계된 모든 메타데이터를 관리하기 위한 일종의 데이터베이스가 필요하다.
관계형 데이터베이스 MySQL 또는 오라클을 사용해 구현할수도 있고,
아니면 그냥 텍스트 파일들을 Subversion, Perforce, Git 같은 버전 컨트롤 시스템을 통합해 관리하는 식으로 구현할수도 있다.
이 책에서는 이 같은 메타데이터를 자원 데이터베이스라고 부르기로 한다.
툴은 독자적 소프트웨어인 경우도 있고, 엔진과 일정한 하위 계층을 공유하기도 한다. 어떤 경우는 툴이 아예 게임 안에 포함되는 경우도 있다.
언리얼 엔진의 경우는 게임에 완전히 통합된 형태다.
특정 게임 개발 도구에서는 웹 기반 사용자 인터페이스가 빠르게 보편화되는 추세다.
웹 앱은 따로 설치할 필요가 없고 호환되는 웹 브라우저만 있으면 된다.
유지 보수가 쉽고 빠르다.
많은 도움이 되었습니다, 감사합니다.