asia bootcamp devclan
DESCRIPTION
료.TRANSCRIPT
PROJECT CODEX커스터마이징 쉐이더와 에디터 제작과정 .
Page
10-04-2023
Bootcamp Asia 2012 2
발표자이정표 ( leegoonz )코덱스 프로젝트 관리자 .(Project administrator)
방송용 애니메이션 슈퍼바이저로 근무 하던 중 2001 년 삼성종합기술원과 연을 맺어 모바일 기반(ARM 2) 멀티플레폼 엔진 개발에 참여 .이후 온라인 게임 개발로 전향 하여 케주얼 스포츠 게임과 엠엠오 온라인 게임등의 개발에 참여 하였다 .도전 성향이 강하여 두번의 창업으로 6 년의 시간을 보내고 이후 프로필 관리에 실패 한 전형적 케이스의 개발자 .지금은 데브클렌에서 차세대 모바일 디바이스 ( 슈퍼칩 ) 콘텐트 개발 관리자이다 .
김형일코덱스 프로젝트 프로그래밍 파트
엔진프로그램분야쪽에서 2 년간 일하다가 , 데브클랜으로 이직후 유니티에 열공하면서 코덱스 프로젝트의 리드 프로그래머이자 , 프로그램팀 파트장을 맡고 있다 .
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
10-04-2023
Bootcamp Asia 2012 4
Project Codex Prologue…
슈퍼칩과 모바일 디바이스 .
Page
10-04-2023
Bootcamp Asia 2012 5
Project Codex Prologue…
o슈퍼칩과 모바일 디바이스 .
Page
10-04-2023
Bootcamp Asia 2012 6
Project Codex Prologue…
o슈퍼칩과 모바일 디바이스 .Nvidia Wayne.
24 ++ CUDA GPUSupport OPENGL 4.XSupport Direct X 11
Page
10-04-2023
Bootcamp Asia 2012 7
Project Codex Prologue…
o슈퍼칩과 모바일 디바이스 .
고성능 안드로이드 디바이스 등장 .모바일 패드를 대체 할 ARM 기반의 Windows 8
스마트 타블렛 등장 .
Page
10-04-2023
Bootcamp Asia 2012 8
Project Codex Prologue…
o슈퍼칩과 모바일 디바이스 .
Page
10-04-2023
Bootcamp Asia 2012 9
Project Codex Prologue…
o슈퍼칩과 모바일 디바이스 .
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
10-04-2023
Bootcamp Asia 2012 11
Project Codex Prologue…
테크데모 1 분 40 초 .
Page
10-04-2023
Bootcamp Asia 2012 12
Project Codex Prologue…
인공지능과 게임 ! 새로운 도전
Page
10-04-2023
Bootcamp Asia 2012 13
Project Codex Prologue…o인공지능과 게임 새로운 도전 .• ETRI 연구소 기업 쏘그웨어와 공동개발 .• 신경망 학습 알고리즘 .• 유전자 알고리즘 .
• PC 플레이어의 인풋 ( 상태 , 능력 ) 에 의한 몬스터의 학습 결과 도출 .• 지속적인 콘텐트 생산이 목표 .
Page
10-04-2023
Bootcamp Asia 2012 14
Project Codex Prologue…
o인공지능과 게임 새로운 도전 .
Page
10-04-2023
Bootcamp Asia 2012 15
Project Codex Prologue…
텍스처 커스터마이징 테크닉 .
Page
10-04-2023
Bootcamp Asia 2012 16
Project Codex Prologue…
oWhy…?•테그라 3 이상 급 에서는 Bake
텍스처가 대부분 ? 필요 없다 .• 3 세대 아이폰 .4 세대 아이폰 등에서는
필수 .
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
10-04-2023
Bootcamp Asia 2012 18
Project Codex Prologue…
oScene 의 자산 설계… ?•Unity 3.5 에서는 좀 더 유연한 씬 내
자산 설계가 가능 할 것이다 .(Mesh LOD)
•Unity 4.0 에서는 더욱 유연한 씬 내 자산 설계 기대 . (Bone LOD)
Page
10-04-2023
Bootcamp Asia 2012 19
Project Codex Prologue…
o기본적인 옵티마이징 테크닉… ?• STRIPPED MESH.• BAKE TEXTURE.
• LIGHTMAP USED BEAST IN UNITY3D.
Page
10-04-2023
Bootcamp Asia 2012 20
Project Codex Prologue…
Bake Texture.
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
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
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
10-04-2023
Bootcamp Asia 2012 24
Project Codex Prologue…o 3DSMAX LIGHT SETUP FOR BAKE TEX-
TURE.
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
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
10-04-2023
Bootcamp Asia 2012 27
Project Codex Prologue…
oCOMPOSITE PASS Layer
SP PASS CL PASS
Page
10-04-2023
28
Project Codex Prologue…
Bootcamp Asia 2012
SP PASS CL PASS
PAD PHONE
Page
10-04-2023
Bootcamp Asia 2012 29
Project Codex Prologue…
SP PASS CL PASS
PAD PHONE
Control Texture used by Pass
Page
10-04-2023
Bootcamp Asia 2012 30
Project Codex Prologue…
o6 가지 이상의 패스 텍스쳐o아티스트가 모바일 쉐이더에 대한 이해력이
좋아야 한다 .o적절한 협의 점을 찾는 것이 관건 .
o트윅 아이디어에 대한 여러가지 생각을 해 볼 필요가 있다 . SP PASS CL PASS
Page
10-04-2023
31Bootcamp Asia 2012
o StandardMobile Quality.(Unity3D Shading)
o 아직 개선 중입니다…
o 쉐이더 개선 사항 .• 페이크 셀프 쉐도우
o8 방향 다운 라이트 기준o8 장의 셀프 쉐도우 텍스처를
미리 생성 하고 라이트 방향 ,컬러 , 밀도에 따라 컨트롤링 + 디테일 텍스쳐
o텍스처간 중간 보간 처리 쉐이더 구현 .
SP PASS CL PASS
Page
10-04-2023
Bootcamp Asia 2012 32
유니티 엔진 게임개발 팁&
인하우스 툴 소개 Manager Class
GUIFile
AnimationPath
Shader
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
Scene Manager 동기• Unity Scene의 Unload기능이 있으면 좀더 씬 활용이 용이하다고 판단
• Application.LoadLevelAdditive(Scene1)• Application.LoadLevelAdditive(Scene2)• Application.LoadLevelAdditive(Scene3)
Scene2만 삭제 하고 싶다 ㅜ.ㅜ
• Application.LoadLevel는 모두 삭제된다.
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
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
10-04-2023
Bootcamp Asia 2012 37
GUI . 소개• 기존의 UNITY OnGUI() 함수를 통한 UI 그리기는 속도가 너무 느리다
• Orthographic project 카메라를 이용한 UI 그리기 방법은빠르고 쉽다 .
• Ex> 이런 종류의 GUI 로는 EZGUI, NGUI 가 있다 .
• 허나 , 좀 더 커스텀 마이징을 쉽게 하기 위해 자체 GUI 개발
Page
10-04-2023
Bootcamp Asia 2012 38
GUI . 상속관계
UIBaseUIRoot
UIPanel
UIFont
UIProgress
UITexSplit
UITexture
UIButton
UIBlendTex
UICheck
UISprite
UIClock
UIBlendAdd
UIRadioPanel
Page
10-04-2023
Bootcamp Asia 2012 39
GUI . CLOCK UI
• 1. 스킬버튼의 쿨타임
• 2. 원형
- 쿨타임
- 원형 진행바
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
10-04-2023
Bootcamp Asia 2012 41
GUI. 스킬버튼 만들기오른쪽 텍스쳐를 사용
• 좌측 텍스쳐의 UV 를 이용하여 Texture 에서 사용할 영역을 지정
• x축 2 등분y축 5 등분
Page
10-04-2023
Bootcamp Asia 2012 42
Unity 에서의 Data File 활용하기 1• 유니티는 기본적으로 Serialize 기능을 이용하여
public변수 값들을 저장 할 수 있다 .
• 그리고 PlayerPrefs 을 통해서도 데이터를 저장 할 수 있다 .
• 하지만 , 기존 게임프로그래머들에게는 파일 ( xml, cvs, txt, bytes ) 파싱이 더 편하다
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
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
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
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
10-04-2023
Bootcamp Asia 2012 47
보간 애니메이션• 보간 애니메이션의 대표 무료 라이브러리인 Itween
• Itween 사용보다 코딩이 많이 필요 없는 보간 애니메이션을 구현하면 프로그래머의 작업은 줄어들 것이다 .
• 때문에 코딩 없이 쉽게 사용 할 수 있는 보간 애니메이션 GameAni 구현 .
• GameAni 는 UI 의 Blend효과 , 카메라 Path, 카메라Wave , 간단한 애니메이션 효과 등 다양하게 응용할 수 있다 .
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
10-04-2023
Bootcamp Asia 2012 50
감사합니다 .