8 Ä £ & á ] 3 Ä £ Ô « ê Ò - game storyÑ Ë 엔진으로게임을제작하려할때...

22
Gible Corp, Ltd. Strictly Confidential - Use or duplication of the material presented is prohibited without formal authorization from Gible Corp, Ltd. 332-3, Ilsin B/D, Dangsan 6-Ga, Youngdeungpo-Gu, Seoul, Korea. Tel: 82-2-2068-4412 Fax: 82-2-2068-4415 WWW.GIBLE.COM Korea’s First Total 3D Solutions Developer & Provider

Upload: others

Post on 17-Feb-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Gible Corp, Ltd.

Strictly Confidential - Use or duplication of the material presented isprohibited without formal authorization from Gible Corp, Ltd.

332-3, Ilsin B/D, Dangsan 6-Ga, Youngdeungpo-Gu, Seoul, Korea.

Tel: 82-2-2068-4412 Fax: 82-2-2068-4415

WWW.GIBLE.COM

Korea’s First Total 3D Solutions Developer & Provider

Page 2: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

강연의 목적

3D 엔진의 정의

3D 게임 제작에서의 3D 엔진의 역할

파이프 라인

3D 파일 생성

3D 파일 가져오기

3D 객체의 자료 구조 생성

애니메이션

충돌과 공간 분할

Effect, Shader

데모 제작

G-Blender 단위 컴포넌트

Page 3: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

엔진으로 게임을 제작하려 할 때‘게임프로그래머는 어떤 작업을 해야 하는가?’를잘 이해 할 수 있다.

게임 프로그래머가 좋은 게임을 만들기 위해 공부 해야 할 방향설정이 가능하다.

엔진이란 무엇인가? 에 대한 답을 얻을 수 있다.

G-Blender 엔진을 사용하여 간단한 게임을 제작하는 과정을 예제소스와 저작 툴을 사용하여 실제로 보고 배워본다.

강연은 Visual C++와 3ds Max 5.0 그리고 예제 어플리케이션을통해 강연한다.

Page 4: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

3D 게임을 제작하기 위한 알고리즘의 집합체

하위 개념Direct3D와 같은 API를 비롯하여 그래픽 하드웨어를구동시키는 소프트웨어를 의미

3D 게임 엔진 G-Blender

상위 개념어떤 특정 게임을 제작하기 위한 툴과 소프트웨어들을 칭함Quake Mod Tool, Never Winter Night-Level Editor

Page 5: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

3D 게임 제작을 위한 Framework

3D 게임의 제작에 필요한 핵심 기능들을 제공

컴포넌트 형식으로 제작

엔진 기능의 확장과 추가 용이

제작된 컴포넌트들은 G-Blender 사용자들이 서로 공유 가능

다른 미들웨어와 연동이 용이함

상용 물리 엔진

AI 엔진

네트웤 엔진

Page 6: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다
Page 7: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

3DS Max 의 Export plug-in 사용

Max 를 사용한 Export 시연

Page 8: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

엔진 함수를 사용해서 3D 파일을 불러온다.

파일을 불러올 때 주의할 점은 파일이 정적으로 로딩되는지또는 동적으로 로딩 되는지를 선별해서 불러 올 수 있어야한다.

파일 불러오기 예제 소스로 설명

Page 9: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

G-Blender Scene Graph라고 하는 3차원 데이터의 자료 구조를이해하고 불러온 데이터들을 자료구조에 맞게 배치 한다.

샘플 데이터를 사용해서 시연

Page 10: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

애니메이션과 상태 관리를 하는 함수들을 사용하여 객체에변화를 준다.

애니메이션 예제 소스로 설명

Page 11: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

충돌 처리를 위한 공간 분할 알고리즘의 선택

보이는 폴리곤만을 그리기 위한 폴리곤 분할 알고리즘 소개

Octree를 이용한 공간 분할 예제 설명

Page 12: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Effect를 위한 Shader Plug-in 소개

Shader DLL의 유연성과 3ds Max에서 Plug-In형태로 지원되는저작 툴 설명

Shader 예제로 설명

Page 13: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

제작된 데모 시연

제작 기간 3주

프로그래머 1명

데모에서 지금까지 설명된 기능들과 방법들을 어떻게 사용했는지 설명

데모 시연

Page 14: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Core 컴포넌트

예: gbSmartPointer, gbFactory, gbProxy 등

G-Blender는 완벽한 객체 지향 구조로 제작

Class들을 관리해 주는 Helper class들과

기본 유틸리티들이 Core 컴포넌트에서 제공

Page 15: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

3D Math Types

예: gbMatrix, gbVector, gbQuaternion 등

수학적 체계들을 완전한 클래스 형식으로 제공

수학 체계들은 G-Blender의 알고리즘에서 사용

Page 16: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

3D 객체 Class

예: gbGeometry, gbCamera, gbLight 등

3차원 상에서 존재하는 객체들의 집합

3차원 공간 상의 상태나 정보를 나타내는 객체들 제공

Page 17: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Animation Control

예: gbInterpolator, gbTrack, gbKey 등

객체들의 Animation 을 담당하는 class

객체들의 모든 멤버 변수들과 맵핑 가능

각각의 변수들은 Modifier 클래스에 의해서 변화 가능 위치

위치 정보의 애니메이션 값의 변화

Geometry의 Vertex 값의 변화

Texture의 UV Coordinate 값의 변화 등

보간 함수 제공

Linear

Spline

Cubic-Spline

Page 18: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Node Class

예: GroupNode, SwitchNode, OcrtreeNode, Proxy Node 등

자원을 관리하는 Class

3차원 객체들의 트리 구조의 상속 구조로 장면

전체 장면의 관리 가능

파일을 캐쉬, 데이터의 공유 등 가능

Page 19: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Collision Detection

예: Line-Line test, Frustum-Box test, Ray-Box test 등

기본 충돌 함수들의 집합

충돌 바운딩 볼륨은 3ds max의 플러그인으로 제작하여 사용 가능

기본적인 3차원 볼륨의 타입은 모두 제공

Page 20: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Shader

예: Bump Shader, Reflection Shader, Skinning Shader 등

Fixed Function Pipeline과 Programmable Pipeline 혼용 사용 가능

DirectX 9의 HLSL, Nvidia의 Cg, ATI 의 ATI SDK 등 선택 사용 가능

플러그인 DLL 타입으로 한 사람이 만든 Shader를 여러 사람이 공유해서

사용 가능

3DS Max에서 gbShaderDLL을 자동으로 Load 하여 Material에 적용 가능

Page 21: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

Renderer

예: gbDxRenderer, gbOGLRenderer, gbXBoxRenderer(제작 중) 등

다양한 Renderer의 지원으로 멀티 플랫폼의 게임을 한가지

소스로 제작 가능

DirectX 9의 Renderer 지원

Page 22: 8 Ä £ & á ] 3 Ä £ Ô « ê Ò - Game StoryÑ Ë 엔진으로게임을제작하려할때 ‘게임프로그래머는어떤작업을해야하는가?’를 잘이해할수있다

질문해주세요^^;