게임 엔진 game engine 그것은 무엇인가?
차례
1 게임 엔진 개요
2 렌더링 엔진
3 애니메이션 엔진
4 물리/충돌 엔진
5 사운드 엔진
6 인공지능 엔진
7 온라인 서버 엔진
8 기타
1 게임 엔진 개요
• 게임 엔진의 주된 역할
– 게임 제작을 위해서 필요한 핵심적인 성능을 발휘해주도록 모아진 라이브러리의 모음 : 이 라이브러리는 게임에서 처리할 수 있는 모든 일을 처리하도록 해주는 API의 모음
– 게임 세계의 데이터를 관리하고 그 데이터를 컴퓨터 화면에 렌더링 하는 일
– 복잡하고 방대한 게임 컨텐츠의 상호작용과 특수 효과들은 실시간으로 구현하기 위한 기술들이 게임 엔진으로 모아지게 됨
– 라이브러리 이외에도 개발을 지원하기 위한 여러 가지 툴과 스크립트 등을 내장
1 게임 엔진 개요
• 엔진의 종류
– 게임 프로그래밍의 각 부분(그래픽, 사운드, 인공지능, 입력 장치 컨트롤 등)에 이러한 개념이 고루 적용 될 수 있으며, 때로는 개별적으로, 때로는 복합적으로 구성된 게임 엔진이 존재할 수 있으므로 게임 엔진의 예는 실로 다양함
– 3D 게임 엔진
– 2D 게임 엔진
– 서버 엔진
– 충돌/물리 엔진
– 기타
1 게임 엔진 개요
• 게임 엔진의 특징
– 게임의 세부적인 구성 요소들인 스크립트의 지원이나 게임 데이터를 로드하는 부분과 월드의 맵을 구성하는 부분 등은 제작되는 게임의 성격과 규모에 의해서 제거되거나 확장됨
– 게임의 각 요소들이 효율적으로 연동되기 위해서는 방대한 게임 구성 요소들과 라이브러리들의 연계 작업이 중요
– 각 엔진은 각 엔진 특유의 인터페이스를 갖고 설계됨 : 게임 엔진은 툴 프로그래머나 게임 프로그래머가 실제적인 작업을 할 수 있도록 하는 기반을 다지는 단계이므로 게임의 장르별 특징에 부합되도록 엔진 자체를 설계하거나 범용 엔진으로부터 커스터마이징 (customization)하는 작업을 수반하게 됨
– 국내 외를 포괄해서 대부분의 게임 업체가 자체적으로 보유하고 있는 게임 엔진은 자사에서 제작한 게임의 장르별 특성에 맞추어진 엔진이고, 판매되는 상용 엔진은 장르별 특징을 아우르는 범용성과 확장성을 보장하도록 설계되어 있음
1 게임 엔진 개요
• 게임 엔진이 기본적으로 갖추고 있는 구성 요소
1 게임 엔진 개요
• 게임 개발 프로세스와 엔진 디자인 및 엔진 개발에 관한 전체 흐름도
– 엔진의 디자인부터 메인 프로그래밍까지의 과정에 기획, 사운드, 그래픽 등의 제반 요소가 모두 연결되고 있음을 볼 수 있음
– 이 과정에서의 경쟁력 확보는 개발사로써 매우 중요
1 게임 엔진 개요
• 게임 사이클 (game cycle)
– 게임은 실시간으로 작동되는 게임 환경의 제어를 위해서 사용자의 입력부터 엔진의 각 프로그램 모듈이 연산과 최종 출력까지의 하나의 사이클을 형성
1 게임 엔진 개요
• 상용 게임 엔진
1 게임 엔진 개요
• Quake Engine
– id soft 社의 엔진으로 퀘이크 게임을 만들면서 개발된 것으로 버전이 I, II, III까지 나와 있음
– 엔진 I에서는 3D 렌더링의 전형(典型)을 만들었고, II에서는 소프트웨어 렌더링의 느리고 답답한 속도와 단순한 효과들을 하드웨어로 처리할 수 있도록 해 본격적인 3D 가속기의 시대를 열었음
– 항상 선구적인 시도를 하는 것으로 유명한 엔진
– 퀘이크 III 엔진은 뛰어난 렌더러를 구현했는데 라이트 맵을 잘 활용해서 빛의 움직임을 다른 엔진들보다 더욱 사실적으로 묘사하는데 성공
– 환경 맵핑(environmental mapping)의 구현과 버텍스 쉐이더(vertex shader)의 구현 등으로 저해상도에서도 거칠지 않는 화면을 보여줌
– 퀘이크 엔진은 명성에 비해서는 상용 엔진으로서 많이 팔리지는 않았는데, 그것은 퀘이크 엔진의 코드가 다루기가 까다롭고, 타 엔진에 비해서 제작 툴들이 부족하여 성공적으로 도입한 업체들이 많지 않기 때문
– 퀘이크 III 엔진을 이용한 최근의 게임으로는 “리턴 투 울펜슈타인”과 “메달 오브 아너”가 있음
1 게임 엔진 개요
• Unreal Engine
– 에픽 소프트(Epic soft)社에서 제작된 엔진
– 화려한 광원 효과로 유명하고 애니메이션 부분에서도 박진감 넘치는 카메라 워크가 가능해 게임 자체의 내용과 더불어 경치의 아름다움으로 유명
– 언리얼 토너먼트 엔진을 거쳐 언리얼 챔피언 엔진까지 개발
– 언리얼 토너먼트 엔진의 장점은 렌더러가 모든 3D API를 지원한다는 점
– 다이렉트 3D를 비롯하여 OpenGL, Glide에서도 완벽한 작동을 보장
– 특히 호완성 부분에서 크게 앞섬
– 다른 플랫폼으로의 이식성도 매우 뛰어남
– PC 게임 외에도 플레이 스테이션 2와 XBox용 게임 제작도 용이하게 지원
• 언리얼의 에디터인 UnrealEd
1 게임 엔진 개요
상용 엔진의 장점 :
l 개발에 소요되는 노력을 줄일 수 있다.(코어 및 툴 개발, 디버깅 등..)
l PS2, XBOX, GameCube, PC 등 여러 플랫폼으로의 호환이 가능하다.
l 진보된 게임 프로그래밍 기술을 서포팅 받을 수 있다.
l 일정 수준 이상의 기술적 품질을 보장 받을 수 있다.
l 이미 검증된 모듈이기 때문에 시스템 개발의 불확실성이 많이 감소된다.
l 가격대비 성능이 비교적 좋다.
l 개발기간 대비 성능이 비교적 좋다.
l 게임 개발 기간 단축된다.
l 게임 개발 비용 절감된다.
l 개발시 재사용 라이브러리 제공된다.
l 기초 게임 컴포넌트 제공으로 개발 용이하다.
l 객체지향 멀티미디어 게임 컴포넌트 개발 용이하다.
공용의 객체지향 게임 클래스 라이브러리 설계 개발로 확장성과 유연성이 증가된다
1 게임 엔진 개요
상용 엔진의 일반적 기능 :
l 툴과 플러그 인 (레벨 툴, 캐릭터 툴, 이펙트 툴, 사운드 툴)을 제공한다.
l Python or JAVA(or Other) scripting 모듈을 지원한다.
l Engine API가 제공된다.
l AI Module이 제공된다.
l 충돌-물리 모듈이 제공된다.
l 지형 처리 모듈이 제공된다.
l 각종 이펙트 및 자연물의 표현 : 파티클, 하늘, 해, 광원, 물결, 반사, 그림자 등..
l 각종 Texturing & Mapping 함수가 제공된다.
l 실시간 3D 최적화 : LOD, 클리핑, Shader가 제공된다.
l Rendering 모듈이 제공된다.
l 3D Sound 모듈이 제공된다.
l Network supporting : 요즘 들어 대규모 멀티플레이를 지원해주는 경향으로 가고 있다
etc : 각종 I/O, Vision, Entity, Motion, Object Transform
1 게임 엔진 개요
상용 엔진의 도입을 통한 개발시 단점:
l 엔진 기술이 종속된다.
l 3D 엔진의 개발 노하우를 얻을 수 없다. 개발 과정 중에서 엔진을 최적화하기
위한 노하우들과 새로운 기술들이 산출되기 때문에 이 부분이 가장 큰 문제이다.
l 영어권 이외의 현지 지원이 부실할 수 있다.
l 자사의 Online 등의 특화 기술과 상용 엔진의 통합이 어려울 수 있다.
l 매 Title 마다 라이센스를 지불해야 한다.
1 게임 엔진 개요
• 국내 게임 엔진 현황
2 렌더링 엔진
• 렌더링(Rendering)이란 무엇인가를 표현한다는 뜻의 포괄적인 단어로써 게임 엔진에서는 화면에 기하학적 객체들을 가시화한다는 의미로 사용 : 컴퓨터로 화면을 그리기 위해서는 행렬, 선형대수, 벡터, 수열, 미적분학과 같은 수학적인 지식과 개념으로 구축된 복잡한 자료구조와 대량의 연산 작업을 필요
• 렌더링은 폴리곤의 가시화와 더불어 많은 특수 효과와 카메라의 움직임 등 많은 연산을 지원해야 하기 때문에 작업량이 상당히 많음 : 따라서 작업량이 많은 렌더링 과정을 효과적으로 처리할 수 있는 엔진이 구축되면 화면의 품질이 우수한 게임을 만들어 낼 수가 있음
• 3D 게임을 효과적으로 만들기 위해서는 3D 연출을 쉽게 구성 할 수 있도록 도와주는 3D 게임 엔진이 필요
• 3D 게임 엔진은 3D 객체를 데이터베이스에서 적재시켜 조작하고 실시간으로 연출하기 위한 함수들의 데이터 구조와 집합으로 정의
• 조명, 재질, 변형, 애니메이션, 3D 클리핑(clipping), 특수효과 등의 다양한 부가적인 기능을 지원
• DirectX의 Direct3D나 OpenGL과 같은 3D Graphics API를 통해서 주로 구현
2 렌더링 엔진
• 렌더링 게임 엔진과 그래픽 툴은 서로 밀접한 관계를 맺고 있음
• 둘간의 관계는 주로 그래픽 툴에서 생성된 파일 포맷을 게임 엔진에서 읽고 해석하는 모듈을 통해서 관계를 맺게 됨
• 특히 국내에서는 게임 엔진과 그래픽 툴간의 관계에 있어서 3D Max file format과의 호환성과 지원이 매우 중요하게 취급되고 있음 (이는 국내에서 3D 데이터를 모델링하는 툴이 여러 가지로 많지만 게임 개발 프로그래머와 게임 엔진 프로그래머가 3D Max 파일 포맷에 익숙하기 때문)
• 그림은 여러 그래픽과 모델링 툴에서 생성된 데이터들을 게임 엔진에 연동하는 과정을 보여주고 있음
3 애니메이션 엔진
• 훌륭한 렌더링 엔진과 더불어 게임에서 캐릭터와 기하학적 객체들의 자연스러운 움직임을 묘사해내지 못하면 재미가 없다
따라서 캐릭터와 기하학적 객체들의 자연스러운 움직임을 보여줄 필요성이 있게 됨
더욱이 온라인 RPG 게임의 경우 3D 모션 데이터를 통한 실감나는 캐릭터 애니메이션을 구현하는 것이 보편적인 추세가 되고 있음
• 애니메이션의 구현은 주로 애니메이션 데이터베이스를 통해서 처리되는데 캐릭터들간의 상호작용은 주로 동기화 된 애니메이션에 의해서 제공되어짐
3 애니메이션 엔진
[그림 설명]
• 그림에서 격투 동작은 모두 애니메이션 데이터베이스 내에 저장되어 있다가 게임의 로직을 제어하는 모듈에서 ”펀치”라는 명령에 응해서 데이터가 읽혀짐
• 이때 읽혀진 애니메이션 데이터가 렌더링 루프에 덧붙여지게 됨
• 캐릭터 애니메이션을 통해서 정교한 동작이 구현됨을 알수 있다. 눈여겨 볼 부분은 오른쪽 사람의 주먹에 맞은 왼쪽 사람의 반응이다. 펀치의 물리적인 충격량을 정확히 계산해서 물리적인 반응을 일으키고 다시 그것이 그래픽 객체의 움직임으로 연결된다는 점이다. 따라서 사실감 넘치는 캐릭터 애니메이션을 구현하기 위한 모듈은 필연적으로 충돌/물리 모듈과의 연계되는 구조가 갖추어진다.
4 물리/충돌 엔진
• 게임에 등장하는 객체의 움직임이 현실 세계와 다르면 게임에 몰입 되기가 어렵기 때문에 최근에는 객체의 충돌과 움직임을 물리학에 기반하여 객체의 움직임을 묘사할 수 있도록 해줌
• 이를 위해서는 그래픽스 이론의 물리학 기반의 모델링(physics based modeling)을 많이 적용
4 물리/충돌 엔진
• 물리 엔진의 대두와 상용 물리 엔진
– 90년대 초 중반부터 게임에서 렌더링 엔진과 더불어 물리 엔진이 부각되기 시작
– 특히 그래픽 분야의 경우에는 90년대 이전부터 활발한 연구와 토론이 벌어진 것에 반해서 물리 분야의 경우에는 CPU의 성능이 급속히 개선됨에 따라서 대두되기 시작
– 초기의 대전 게임에서 캐릭터들의 움직임의 경우를 보면, 일정한 속도로 뛰어 올랐다가 일정한 속도로 떨어지는데 이는 별로 실감이 나지 않았음
• 왜냐하면, 실세계에서 우리가 느끼는 중력 가속도의 고려가 안되기 때문
• 레이싱 게임에서 보면 차들이 충돌한 부위에 상관없이 정해진 패턴으로 애니메이션되고 마는 경우를 많이 볼 수 있었음
– 이는 충돌시 탄성 에너지와 마찰력, 질량에 대한 속도와 충격량의 고려가 없기 때문
• 이러한 문제점들에 대해서 1996년, 1997년 크리스 해커(Chris Hecker)를 비롯한 개발자들이 물리학에 기반한 알고리즘들을 홈피와 게임 잡지를 통해서 소개하고 예제 코드들을 소개하기 시작
• 1999년에는 수학과 물리학을 전공한 사람들이 MathEngine社를 설립하면서부터 상용 엔진화가 시작되었으며 지금은 비디오 게임과 PC 게임분야에서 널리 사용되고 있음
• 현재 MatheEngine社의 Kama엔진이나 Harvoc社의 물리 엔진은 많은 게임 회사에서 엔진으로 라이센스 받아서 게임을 개발되고 있음
4 물리/충돌 엔진
• 물리 엔진에서 중요한 요소들
– 파티클(particle)의 운동
– 스프링과 댐퍼 시스템
– 강체의 운동(rigid body)
– 기본적인 역학 방정식
– 충돌 반응(collision response)
– 천과 유체의 구현 등
• 물리 엔진은 주로 충돌후의 움직임을 애니메이트하는 것을 목적으로 하는데 이를 위해서는 기하학적 객체들의 움직임을 충돌시의 각도, 가속도, 시간 등의 변수로 제어해야만 함
• 이러한 변수들을 고려한 뒤에 충돌 후의 물체 위치가 결정되게 되며 만일 움직이는 물체였다면 애니메이션 루프를 통해서 충돌후의 움직임을 가시화하게 됨
4 물리/충돌 엔진
• 물리 엔진의 메인 루프의 구성(하복 社의 자료)
– 우선 충돌 객체를 식별하고 충돌 쌍의 접촉점을 생성
– 충돌 상황이 일어나는 부분을 그룹화하고 조인트 각을 설정한 뒤 제약조건에 맞게 문제를 풀어냄
– 외부에서 받는 충격량인 힘을 적용한 뒤 전체를 통합하여 물체의 충돌후 위치와 방향의 데이터를 계산해낸 뒤 이를 렌더링 모듈에 넘겨줌
5 사운드 엔진
• 국내의 경우에는 상용 오디오 엔진을 사용하는 것보다는 다이렉트 X의 오디오 라이브러리와 툴을 이용한 방법을 가장 많이 선호
• 다이렉트 X의 오디오 아키텍처
5 사운드 엔진
• 온라인 게임과 관련해서는 DirectX에 기반한 DirectPlay Voice 기술이 배틀넷 기술에 많이 적용되는 추세
• 특히 음성 채팅과 음성 명령은 이미 몇 개의 게임에서 지원됨
• 마이크로소프트社의 사이드와인더(SideWinder) 사운드 SDK의 경우 렌아웃과 하우스피어(Lernout & Hauspie) 음성 인식 엔진을 내장하고 있는데 위에서 언급한 기술을 계속 확장시키고 있음
• 이미 음성인식 기술과 전송 기술은 많이 개발되어 있기 때문에 게임, 특히 온라인 게임에서의 접목은 예상되어 왔었던 일임
5 사운드 엔진
• DirectMusicProducer
– 국내에서 많이 사용되는 DirectX의 사운드 개발 툴
– 개발자와 사운드 제작자에게 매우 편리하게 변화됨으로 최근 많은 호평을 받음
– 소스라는 탭을 보면 비주얼 베이직과 유사한 스크립트를 작성하고 이를 통해서 게임 내에서의 사운드 음원의 공간적 배치 및 효과음 설정 등을 매우 편리하게 구현할 수가 있음
6 인공지능 엔진
• 인공지능 알고리즘을 라이브러리와 툴로써 구현해 둔 것을 말함
(예) FSM(Finite State Machine, 유한 상태 머신)
– 몇 개의 스테이트(state)들과 이 state들 사이를 연결하는 상태 전이(transition)로 구성
– 상태 전이가 일어나가 위해서는 외부 센서로부터 입력을 받아야 함
– FSM은 그 원리의 이해가 쉽고 프로그램 코딩도 어렵지 않다는 장점을 갖고 있음
– FSM에서 캐릭터는 미리 정해진 상태에서는 동일한 행동을 함
– FSM은 센서를 통해서 외부 입력에서 특정 캐릭터 주변의 센서 입력만을 주로 사용하기 때문에 전략적인 목표를 이해하고 행동하는 차원 높은 인공 지능 기능을 구현하기가 어렵다
6 인공지능 엔진
• 게임 인공지능의 어려운 점
– 인공지능을 통해 게임에서의 재미를 확보한다는 것은 실로 어려운 문제
=> 실제로 유수의 미국 게임 업체들은 박사급 AI 개발자들을 다수 보유하고 있는 것으로 알려져 있음
– FSM의 기본 모델은 자체로 메모리 기능이 없어 이를 수정하지 않고는 같은 입력에 대해서 반복되는 행동을 하기 때문에 RPG의 대화 기능 처리에 적합하지 않음
• 장르별 게임에서의 AI 구현의 특징 [게임 학회지, 2001]
6 인공지능 엔진
• Game AI Tool Kit
6 인공지능 엔진
• Dal3D社의 Texmo™
– 자연어 속에 포함되어 있는 감정을 추출해 문장 전체의 감정 값을 판단하여 이를 자연어처리(NLP : Natural Language Processing)한 뒤 에니메이션 이미지로 생성해내는 엔진
– 그림은 텍스모와 아바타를 나타내고 있음
– Texmo™는 자연어로 통신 되는 프로그램에 SDK로 사용되어 사용자의 감정을 표현할 수 있도록 해줌
– 감정은 캐릭터나 아바타의 facial, motion, voice의 변화 등으로 나타낼 수가 있음
– 이 엔진의 특징으로는 입력된 텍스트 분석으로 감정값 계산, 처리된 감정값을 Facial Animation, Motion Animation, 목소리의 변화 등을 통해 표현, 엔진에 의해 감정들을 표현해 줌으로 자연스러운 Human-Communication 상황을 재현
– SDK형태로 다양한 응용 서비스 제공 가능
– 응용 가능한 분야로는 캐릭터 애니메이션, 아바타 채팅, 캐릭터 메세징, 감정표현 에플리케이션, 모바일 캐릭터 전송 등이 가능
7 온라인 서버 엔진
• 온라인 게임을 위한 네트워킹과 상태 정보 전달이라는 기본 기능을 갖추고 있음
• 국내 게임 시장의 특징은 온라인 게임이 강세를 유지
– 2001년 전체 게임 시장의 매출은 1조 억원을 돌파했는데 온라인 RPG 게임인 리니지를 제작한 엔씨 소프트가 10%가 넘는 1000억대의 매출액을 기록
– 국내 게임 기술중 온라인 게임 기술은 해외에도 통할 수 있는 경쟁력을 갖춘 것으로 평가 받고 있음
7 온라인 서버 엔진
• 현재 시장에 출시된 해외 서버 엔진
8 기타
ETRI에서 개발중인 범용 온라인 3D 게임 엔진의 구조도
'myPPT' 카테고리의 다른 글
전략수립과정 (0) | 2023.01.06 |
---|---|
(실존주의 . 분석. 비판적 .포스트모더니즘) 교육철학 (0) | 2022.10.15 |
5 effektive og sikre vægttabsmetoder (0) | 2022.09.08 |
5 Efficient and Safe Weight Loss Methods (0) | 2022.07.08 |
Digital Rights Management and Digital Watermarking (0) | 2022.06.29 |