50
PROJECT CODEX 커커커커커커 커커커커 커커커 커커커커 .

Asia bootcamp devclan

Embed Size (px)

DESCRIPTION

료.

Citation preview

Page 1: Asia bootcamp devclan

PROJECT CODEX커스터마이징 쉐이더와 에디터 제작과정 .

Page 2: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 2

발표자이정표 ( leegoonz )코덱스 프로젝트 관리자 .(Project administrator)

방송용 애니메이션 슈퍼바이저로 근무 하던 중 2001 년 삼성종합기술원과 연을 맺어 모바일 기반(ARM 2) 멀티플레폼 엔진 개발에 참여 .이후 온라인 게임 개발로 전향 하여 케주얼 스포츠 게임과 엠엠오 온라인 게임등의 개발에 참여 하였다 .도전 성향이 강하여 두번의 창업으로 6 년의 시간을 보내고 이후 프로필 관리에 실패 한 전형적 케이스의 개발자 .지금은 데브클렌에서 차세대 모바일 디바이스 ( 슈퍼칩 ) 콘텐트 개발 관리자이다 .

김형일코덱스 프로젝트 프로그래밍 파트

엔진프로그램분야쪽에서 2 년간 일하다가 , 데브클랜으로 이직후 유니티에 열공하면서 코덱스 프로젝트의 리드 프로그래머이자 , 프로그램팀 파트장을 맡고 있다 .

Page 3: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 3

CONTENTS• UI

o UI Toolseto Shader for Cool Time

• 모바이 에서의 데이터 파싱o 바이너리 파일 로드o CSV to Text

• ANIMATIONo Interpolationo PATH

• Shader

• 코덱스 프롤로그o 슈퍼칩과 모바일 디바이스 .o 인공생명과 게임 ! 새로운 도전 .o 텍스처 커스터마이징

• 게임콘텐트 개발을 위한 인하우스 툴o Asset Manager

• Scene Manager• Camera Manager• Effect Manager• Character Manager

Page 4: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 4

Project Codex Prologue…

슈퍼칩과 모바일 디바이스 .

Page 5: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 5

Project Codex Prologue…

o슈퍼칩과 모바일 디바이스 .

Page 6: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 6

Project Codex Prologue…

o슈퍼칩과 모바일 디바이스 .Nvidia Wayne.

24 ++ CUDA GPUSupport OPENGL 4.XSupport Direct X 11

Page 7: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 7

Project Codex Prologue…

o슈퍼칩과 모바일 디바이스 .

고성능 안드로이드 디바이스 등장 .모바일 패드를 대체 할 ARM 기반의 Windows 8

스마트 타블렛 등장 .

Page 8: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 8

Project Codex Prologue…

o슈퍼칩과 모바일 디바이스 .

Page 9: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 9

Project Codex Prologue…

o슈퍼칩과 모바일 디바이스 .

Page 10: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 10

Project Codex Prologue…o슈퍼칩과 모바일 디바이스 .• Dynamic casting Shadow.• Self Shadow.• 2048 텍스처 ++•Massively vertex model.•More Fast Thread Loading.•More Post Rendering FX.• Deferred Rendering ? May be…

Page 11: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 11

Project Codex Prologue…

테크데모 1 분 40 초 .

Page 12: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 12

Project Codex Prologue…

인공지능과 게임 ! 새로운 도전

Page 13: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 13

Project Codex Prologue…o인공지능과 게임 새로운 도전 .• ETRI 연구소 기업 쏘그웨어와 공동개발 .• 신경망 학습 알고리즘 .• 유전자 알고리즘 .

• PC 플레이어의 인풋 ( 상태 , 능력 ) 에 의한 몬스터의 학습 결과 도출 .• 지속적인 콘텐트 생산이 목표 .

Page 14: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 14

Project Codex Prologue…

o인공지능과 게임 새로운 도전 .

Page 15: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 15

Project Codex Prologue…

텍스처 커스터마이징 테크닉 .

Page 16: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 16

Project Codex Prologue…

oWhy…?•테그라 3 이상 급 에서는 Bake

텍스처가 대부분 ? 필요 없다 .• 3 세대 아이폰 .4 세대 아이폰 등에서는

필수 .

Page 17: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 17

Project Codex Prologue…

oScene 의 자산 설계… ?• 한 씬 안에서 1 만 2 천 Polygon (Skinned

Mesh) : 3 세대 ~4 세대 아이폰 .• 한 씬 안에서 3 만 2 천 Polygon (Skinned

Mesh) : 아이페드 2 ++. 아수스 프라임

• 6 만 Polygons 내외의 Static Mesh.

Page 18: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 18

Project Codex Prologue…

oScene 의 자산 설계… ?•Unity 3.5 에서는 좀 더 유연한 씬 내

자산 설계가 가능 할 것이다 .(Mesh LOD)

•Unity 4.0 에서는 더욱 유연한 씬 내 자산 설계 기대 . (Bone LOD)

Page 19: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 19

Project Codex Prologue…

o기본적인 옵티마이징 테크닉… ?• STRIPPED MESH.• BAKE TEXTURE.

• LIGHTMAP USED BEAST IN UNITY3D.

Page 20: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 20

Project Codex Prologue…

Bake Texture.

Page 21: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 21

Project Codex Prologue…o 3DSMAX LIGHT SETUP FOR BAKE TEXTURE.

• Approach Idea.oTop down lightoHalf value Ambient shading

• Used MENTALRAY™ Software Render-ing.o2 GI Lights• Front• Back

Page 22: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 22

Project Codex Prologue…o 3DSMAX LIGHT SETUP FOR BAKE TEX-

TURE.Front Light Back Light

GI Light Bounce

GI Light Bounce

Page 23: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 23

Project Codex Prologue…

oBAKE TEXTURE• BAKE PASS

oBaked Complete Diffuse PassoAO PassoShadow PassoSpecular Pass + HI Pass(More SP)

Page 24: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 24

Project Codex Prologue…o 3DSMAX LIGHT SETUP FOR BAKE TEX-

TURE.

Page 25: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 25

Project Codex Prologue…oPASS CONTROL• CL PASS : Base color (Diffuse Tex-ture?)• SP PASS : Dark Density Control.•HI PASS : More Specular Control.• SD PASS : Shadow Density Control.• AO PASS : Ambient Density Control.•DOWN PASS : Down Light Control.

Page 26: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 26

Project Codex Prologue…

oCOMPOSITE PASS TEXTURE

SP PASS CL PASS

SD PASS AO PASS

HI PASS

Down PASS

Page 27: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 27

Project Codex Prologue…

oCOMPOSITE PASS Layer

SP PASS CL PASS

Page 28: Asia bootcamp devclan

Page

10-04-2023

28

Project Codex Prologue…

Bootcamp Asia 2012

SP PASS CL PASS

PAD PHONE

Page 29: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 29

Project Codex Prologue…

SP PASS CL PASS

PAD PHONE

Control Texture used by Pass

Page 30: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 30

Project Codex Prologue…

o6 가지 이상의 패스 텍스쳐o아티스트가 모바일 쉐이더에 대한 이해력이

좋아야 한다 .o적절한 협의 점을 찾는 것이 관건 .

o트윅 아이디어에 대한 여러가지 생각을 해 볼 필요가 있다 . SP PASS CL PASS

Page 31: Asia bootcamp devclan

Page

10-04-2023

31Bootcamp Asia 2012

o StandardMobile Quality.(Unity3D Shading)

o 아직 개선 중입니다…

o 쉐이더 개선 사항 .• 페이크 셀프 쉐도우

o8 방향 다운 라이트 기준o8 장의 셀프 쉐도우 텍스처를

미리 생성 하고 라이트 방향 ,컬러 , 밀도에 따라 컨트롤링 + 디테일 텍스쳐

o텍스처간 중간 보간 처리 쉐이더 구현 .

SP PASS CL PASS

Page 32: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 32

유니티 엔진 게임개발 팁&

인하우스 툴 소개 Manager Class

GUIFile

AnimationPath

Shader

Page 33: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 33

Manager Class• 핵심 Asset, GameObject, Component 들을 좀더 쉽게

관리하기 위해 싱글톤 Manager Class 를 만듬

• Scene Manager• Cam Manager• Effect Manager• Character Manager• UI Manager• Audio Manager

Page 34: Asia bootcamp devclan

Page

Scene Manager 동기• Unity Scene의 Unload기능이 있으면 좀더 씬 활용이 용이하다고 판단

• Application.LoadLevelAdditive(Scene1)• Application.LoadLevelAdditive(Scene2)• Application.LoadLevelAdditive(Scene3)

Scene2만 삭제 하고 싶다 ㅜ.ㅜ

• Application.LoadLevel는 모두 삭제된다.

Page 35: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 35

Scene Manager 씬 삭제 원리• RootObject 를 관리하는 Scene Manager 제작

------ >> Del 버튼 ---- >> 아래와 동일한 기능이다

Destory( Scene2_Object_1 )Destory( Scene2_Object_2 )Destory( Scene2_Object_3 )Destory( Scene2_Object_4 )Destory( Scene2_Object_5 )

위의 GameObject 는 RootObject 들 이다 .따라서 , RootObject 만 자료구조로 관리하면 Scene2 를 지울 수 있다 .

Page 36: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 36

Scene Manager 로직• Dictionary<string, List<Transform>> _sceneTable;

• 위 테이블의 Key 는 씬이름이고 , Value 는 RootObject List 임

• 씬로드 후 새롭게 로드된 RootObject 인지 어떻게 알 것인가 ??

• 새로운 씬을 로드하면 , 모든 GameObject 의 transform.root를 기존에 저장되어 있는 Table 의 Value 에 들어 있는 값인지 확인 . 새롭게 로딩된 개체라고 판단되면 새로운 씬에 Add 시킨다 .

Page 37: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 37

GUI . 소개• 기존의 UNITY OnGUI() 함수를 통한 UI 그리기는 속도가 너무 느리다

• Orthographic project 카메라를 이용한 UI 그리기 방법은빠르고 쉽다 .

• Ex> 이런 종류의 GUI 로는 EZGUI, NGUI 가 있다 .

• 허나 , 좀 더 커스텀 마이징을 쉽게 하기 위해 자체 GUI 개발

Page 38: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 38

GUI . 상속관계

UIBaseUIRoot

UIPanel

UIFont

UIProgress

UITexSplit

UITexture

UIButton

UIBlendTex

UICheck

UISprite

UIClock

UIBlendAdd

UIRadioPanel

Page 39: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 39

GUI . CLOCK UI

• 1. 스킬버튼의 쿨타임

• 2. 원형

- 쿨타임

- 원형 진행바

Page 40: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 40

GUI . CLOCK UI 구현• struct FSIn• {• float4 pos : SV_POSITION;• fixed2 uv : TEXCOORD0;

Float2 pixel : TEXCOORD1; // 버텍스 위치로부터 보간된 값 fixed4 percent : COLOR0;

• };

• half4 Frag( FSIn fIn ) : COLOR• {• float radius = atan2( fIn.pixel.x, fIn.pixel.y );

~~

fixed4 color;• ~~

알파값 조절 • ~~

• return color;• }

Start tick

Last tick

0 per1 per

Page 41: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 41

GUI. 스킬버튼 만들기오른쪽 텍스쳐를 사용

• 좌측 텍스쳐의 UV 를 이용하여 Texture 에서 사용할 영역을 지정

• x축 2 등분y축 5 등분

Page 42: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 42

Unity 에서의 Data File 활용하기 1• 유니티는 기본적으로 Serialize 기능을 이용하여

public변수 값들을 저장 할 수 있다 .

• 그리고 PlayerPrefs 을 통해서도 데이터를 저장 할 수 있다 .

• 하지만 , 기존 게임프로그래머들에게는 파일 ( xml, cvs, txt, bytes ) 파싱이 더 편하다

Page 43: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 43

Unity 에서의 Data File 활용하기 2• 1. 유니티는 씬에 연결된 모든 Asset 들은 자동적으로 빌드될때 올라간다 . 이를 이용해 , 스크립트에 public TextAsset변수 선언하고 , Data File 을 연결한다 .

• 2. Reousrces 폴더내의 데이터들은 빌드시 모두 올라간다 . 따라서 Resouces 폴더내에 DataFile 을 넣고 , Resources.Load함수로 DataFile 을 로드한다 .

• 데이터파일 같은 경우는 2 번째 방법이 , 익숙하고 더 편하다 .

Page 44: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 44

모바일 빌드시 바이너리 파일 사용법• 모바일폰에서의 FileStream 을 통해 파일을 읽는것은

안전하지가 않다 .

• 따라서 모바일은 TextAsset 의 bytes변수를 이용하여 bi-nary 파일을 읽는다 .( 단 파일의 확장자가 .bytes 이여한다 )

• TextAsset ta = (TextAsset)( Resources.Load( 경로 ) );MemoryStream ms = new MemoryStream( ta.bytes );BinaryReader br = new BinaryReader( ms );br.Read ~ ~ ~

Page 45: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 45

Animation Event 저장• Animation Event 를 저장하는 것이 좋은가 ?? 캐릭터에 Animation 에 Event 를 많이 이용하는 게임은 하는 것이 좋다 ~

• 1. 맥스에서 애니메이션을 약간의 보정작업을 할 경우 , 새롭게 애니메이션 파일을 만들어야 하므로 , 내부 Event 값은 모두 사라지게 된다 . AnimationEvent 값을 저장해 놓는다면 , 원래 값을 복구 시킬 수 있다 .

• 2. 모바일에서는 Editor 전용 함수인 AnimationUtility.GetAnimationEvents()를 사용하지 못하므로 Animation Event 알려면 미리 저장 시켜놔야 한다 .

• animationEvent 를 미리 알수 있으면 , 동작을 예측 할 수 있으므로 , AI 분야에 응용 할 수 있을 것이다 .

ps>편집 , 확인이 용이하게 , 바이너리보다 text 파일저장을 사용했다 .

Page 46: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 46

CVS 파일 이용하기• TextAsset 가 로딩 할 수 있는 확장자 포맷은 다음과 같다 .

.txt .html .htm

.xml .bytes ( cvs 파일포맷은 존재 하지 않는다 )

• Application.isEditor == true 일때 .cvs 파일을 FileStream으로 로드

• Application.isEditor == false 경우 .txt 를 TextAsset 으로 로드 • 최종 폰에 빌드전에 .cvs 파일을 .txt 파일로 변환하는 작업이

필요하다

Page 47: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 47

보간 애니메이션• 보간 애니메이션의 대표 무료 라이브러리인 Itween

• Itween 사용보다 코딩이 많이 필요 없는 보간 애니메이션을 구현하면 프로그래머의 작업은 줄어들 것이다 .

• 때문에 코딩 없이 쉽게 사용 할 수 있는 보간 애니메이션 GameAni 구현 .

• GameAni 는 UI 의 Blend효과 , 카메라 Path, 카메라Wave , 간단한 애니메이션 효과 등 다양하게 응용할 수 있다 .

Page 48: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 48

Path 를 이용한 컷씬

• 비균일 스플라인을 이용• RNS( rounded nonuniform spline )• SNS( smooth nonuniform spline )• TNS( timed nonuniform spline )

• 원할 경우 스플라인의 처음과 끝 노드를 연결하여 Loop 관계로 만들 수 있습니다 .

• Game Programming gems 4권 2.4 비균일 스플라인 참고

Page 49: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 49

!HIRING!

Senior programmer

[email protected]

Page 50: Asia bootcamp devclan

Page

10-04-2023

Bootcamp Asia 2012 50

감사합니다 .