2. 발표자
이정표( leegoonz )
코덱스 프로젝트 관리자.(Project administrator)
방송용 애니메이션 슈퍼바이저로 근무 하던 중 2001년 삼성종합기술원과 연을 맺어 모바일 기
반(ARM 2) 멀티플레폼 엔진 개발에 참여.
이후 온라인 게임 개발로 전향 하여 케주얼 스포츠 게임과 엠엠오 온라인 게임등의 개발에 참여
하였다.
도전 성향이 강하여 두번의 창업으로 6년의 시간을 보내고 이후 프로필 관리에 실패 한 전형적
케이스의 개발자.
지금은 데브클렌에서 차세대 모바일 디바이스(슈퍼칩) 콘텐트 개발 관리자이다.
김형일
코덱스 프로젝트 프로그래밍 파트
엔진프로그램분야쪽에서 2년간 일하다가,
데브클랜으로 이직후 유니티에 열공하면서 코덱스 프로젝트의
리드 프로그래머이자, 프로그램팀 파트장을 맡고 있다.
08-04- Pag
Bootcamp Asia 2012 2
2012 e
3. CONTENTS
• 코덱스 프롤로그 • UI
o 슈퍼칩과 모바일 디바이스. o UI Toolset
o 인공생명과 게임! 새로운 도전. o Shader for Cool Time
o 텍스처 커스터마이징
• 모바이 에서의 데이터 파
싱
o 바이너리 파일 로드
• 게임콘텐트 개발을 위한
인하우스 툴
o CSV to Text
o Asset Manager
• Scene Manager • ANIMATION
• Camera Manager o Interpolation
• Effect Manager o PATH
• Character Manager
• Shader
08-04- Pag
Bootcamp Asia 2012 3
2012 e
6. Project Codex Prologue…
o 슈퍼칩과 모바일 디바이스.
Nvidia Wayne.
24 ++ CUDA GPU
Support OPENGL 4.X
Support Direct X 11
08-04- Pag
Bootcamp Asia 2012 6
2012 e
7. Project Codex Prologue…
o 슈퍼칩과 모바일 디바이스.
고성능 안드로이드 디바이스 등장.
모바일 패드를 대체 할 ARM 기반의
Windows 8 스마트 타블렛 등장.
08-04- Pag
Bootcamp Asia 2012 7
2012 e
13. Project Codex Prologue…
o 인공지능과 게임 새로운 도전.
• ETRI 연구소 기업 쏘그웨어와 공동개발.
• 신경망 학습 알고리즘.
• 유전자 알고리즘.
• PC 플레이어의 인풋(상태,능력)에 의한
몬스터의 학습 결과 도출.
• 지속적인 콘텐트 생산이 목표.
08-04- Pag
Bootcamp Asia 2012 13
2012 e
16. Project Codex Prologue…
o Why…?
• 테그라 3 이상 급 에서는 Bake 텍스처
가 대부분? 필요 없다.
• 3세대 아이폰.4세대 아이폰 등에서는
필수.
08-04- Pag
Bootcamp Asia 2012 16
2012 e
17. Project Codex Prologue…
o Scene 의 자산 설계…?
• 한 씬 안에서 1만 2천 Polygon (Skinned
Mesh) : 3세대~4세대 아이폰.
• 한 씬 안에서 3만 2천 Polygon (Skinned
Mesh) : 아이페드 2 ++. 아수스 프라임
• 6만 Polygons 내외의 Static Mesh.
08-04- Pag
Bootcamp Asia 2012 17
2012 e
18. Project Codex Prologue…
o Scene 의 자산 설계…?
• Unity 3.5 에서는 좀 더 유연한 씬 내 자
산 설계가 가능 할 것이다.(Mesh LOD)
• Unity 4.0 에서는 더욱 유연한 씬 내 자
산 설계 기대. (Bone LOD)
08-04- Pag
Bootcamp Asia 2012 18
2012 e
19. Project Codex Prologue…
o 기본적인 옵티마이징 테크닉…?
• STRIPPED MESH.
• BAKE TEXTURE.
• LIGHTMAP USED BEAST IN UNITY3D.
08-04- Pag
Bootcamp Asia 2012 19
2012 e
21. Project Codex Prologue…
o 3DSMAX LIGHT SETUP FOR BAKE TEXTURE.
• Approach Idea.
oTop down light
oHalf value Ambient shading
• Used MENTALRAY™ Software Rendering.
o2 GI Lights
• Front
• Back
08-04- Pag
Bootcamp Asia 2012 21
2012 e
22. Project Codex Prologue…
o 3DSMAX LIGHT SETUP FOR BAKE TEXTURE.
Front Light Back Light
GI Light Bounce GI Light Bounce
08-04- Pag
Bootcamp Asia 2012 22
2012 e
23. Project Codex Prologue…
o BAKE TEXTURE
• BAKE PASS
oBaked Complete Diffuse Pass
oAO Pass
oShadow Pass
oSpecular Pass + HI Pass(More SP)
08-04- Pag
Bootcamp Asia 2012 23
2012 e
24. Project Codex Prologue…
o 3DSMAX LIGHT SETUP FOR BAKE TEXTURE.
08-04- Pag
Bootcamp Asia 2012 24
2012 e
25. Project Codex Prologue…
o PASS CONTROL
• CL PASS : Base color (Diffuse
Texture?)
• 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.
08-04- Pag
Bootcamp Asia 2012 25
2012 e
26. Project Codex Prologue…
o COMPOSITE PASS TEXTURE
SD PASS AO PASS
HI PASS
SP PASS CL PASS
Down PASS
08-04- Pag
Bootcamp Asia 2012 26
2012 e
27. Project Codex Prologue…
o COMPOSITE PASS Layer
SP PASS CL PASS
08-04- Pag
Bootcamp Asia 2012 27
2012 e
29. Project Codex Prologue…
PAD PHONE
SP PASS CL PASS
Control Texture used by Pass
08-04- Pag
Bootcamp Asia 2012 29
2012 e
30. Project Codex Prologue…
o 6 가지 이상의 패스 텍스쳐
o 아티스트가 모바일 쉐이더에 대한 이해
력이 좋아야 한다.
o 적절한 협의 점을 찾는 것이 관건.
o 트윅 아이디어에 대한 여러가지 생각을
해 볼 필요가 있다. SP PASS CL PASS
08-04- Pag
Bootcamp Asia 2012 30
2012 e
31. o Standard
Mobile Quality.
(Unity3D Shading)
o 아직 개선 중입니다…
o 쉐이더 개선 사항.
• 페이크 셀프 쉐도우
o 8방향 다운 라이트 기준
o 8장의 셀프 쉐도우 텍스처를
미리 생성 하고 라이트 방향,
컬러,밀도에 따라 컨트롤링
+ 디테일 텍스쳐
o 텍스처간 중간 보간 처리 PASS
SP CL PASS
쉐이더 구현.
08-04- Pag
Bootcamp Asia 2012 31
2012 e
32. 유니티 엔진 게임개발 팁
&
인하우스 툴 소개
Manager Class
GUI
File
Animation
Path
Shader
08-04- Pag
Bootcamp Asia 2012 32
2012 e
33. Manager Class
• 핵심 Asset, GameObject, Component 들을 좀더 쉽게 관
리하기 위해 싱글톤 Manager Class를 만듬
• Scene Manager
• Cam Manager
• Effect Manager
• Character Manager
• UI Manager
• Audio Manager
08-04- Pag
Bootcamp Asia 2012 33
2012 e
34. Scene Manager 동기
• Unity Scene의 Unload기능이 있으면 좀더 씬 활용이 용이하다고 판단
• Application.LoadLevelAdditive(Scene1)
• Application.LoadLevelAdditive(Scene2)
• Application.LoadLevelAdditive(Scene3)
Scene2만 삭제 하고 싶다 ㅜ.ㅜ
• Application.LoadLevel는 모두 삭제된다.
Pag
e
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를 지울 수 있다.
08-04- Pag
Bootcamp Asia 2012 35
2012 e
36. Scene Manager 로직
• Dictionary<string, List<Transform>> _sceneTable;
• 위 테이블의 Key는 씬이름이고, Value는 RootObject List임
• 씬로드 후 새롭게 로드된 RootObject인지 어떻게 알 것인가??
• 새로운 씬을 로드하면, 모든 GameObject의 transform.root를 기
존에 저장되어 있는 Table의 Value에 들어 있는 값인지 확인.
새롭게 로딩된 개체라고 판단되면 새로운 씬에 Add시킨다.
08-04- Pag
Bootcamp Asia 2012 36
2012 e
37. GUI . 소개
• 기존의 UNITY OnGUI() 함수를 통한 UI그리기는 속도가 너무 느리다
• Orthographic project 카메라를 이용한 UI그리기 방법은
빠르고 쉽다.
• Ex> 이런 종류의 GUI로는 EZGUI, NGUI가 있다.
• 허나, 좀 더 커스텀 마이징을 쉽게 하기 위해 자체 GUI개발
08-04- Pag
Bootcamp Asia 2012 37
2012 e
41. GUI. 스킬버튼 만들기
오른쪽 텍스쳐를 사용
• 좌측 텍스쳐의 UV를 이용
하여 Texture에서 사용할
영역을 지정
• x축 2등분
y축 5등분
08-04- Pag
Bootcamp Asia 2012 41
2012 e
42. Unity에서의 Data File활용하기 1
• 유니티는 기본적으로 Serialize기능을 이용하여
public변수 값들을 저장 할 수 있다.
• 그리고 PlayerPrefs 을 통해서도 데이터를
저장 할 수 있다.
• 하지만, 기존 게임프로그래머들에게는
파일( xml, cvs, txt, bytes ) 파싱이 더 편하다
08-04- Pag
Bootcamp Asia 2012 42
2012 e
43. Unity에서의 Data File활용하기 2
• 1. 유니티는 씬에 연결된 모든 Asset들은 자동적으로
빌드될때 올라간다. 이를 이용해, 스크립트에 public
TextAsset변수 선언하고, Data File을 연결한다.
• 2. Reousrces 폴더내의 데이터들은 빌드시 모두 올라간
다. 따라서 Resouces 폴더내에 DataFile을 넣
고 , Resources.Load함수로 DataFile을 로드한다.
• 데이터파일 같은 경우는 2번째 방법이, 익숙하고 더 편하
다.
08-04- Pag
Bootcamp Asia 2012 43
2012 e
44. 모바일 빌드시 바이너리 파일 사용법
• 모바일폰에서의 FileStream을 통해 파일을 읽는것은
안전하지가 않다.
• 따라서 모바일은 TextAsset의 bytes변수를 이용하여
binary파일을 읽는다.
( 단 파일의 확장자가 .bytes 이여한다 )
• TextAsset ta = (TextAsset)( Resources.Load( 경로 ) );
MemoryStream ms = new MemoryStream( ta.bytes );
BinaryReader br = new BinaryReader( ms );
br.Read ~ ~ ~
08-04- Pag
Bootcamp Asia 2012 44
2012 e
45. Animation Event저장
• Animation Event를 저장하는 것이 좋은가??
캐릭터에 Animation에 Event를 많이 이용하는 게임은 하는 것이 좋다~
• 1. 맥스에서 애니메이션을 약간의 보정작업을 할 경우, 새롭게 애니메이
션 파일을 만들어야 하므로, 내부 Event값은 모두 사라지게 된다.
AnimationEvent값을 저장해 놓는다면 , 원래 값을 복구 시킬 수 있다.
• 2. 모바일에서는 Editor전용 함수인
AnimationUtility.GetAnimationEvents()를 사용하지 못하므로 Animation
Event알려면 미리 저장 시켜놔야 한다.
• animationEvent를 미리 알수 있으면, 동작을 예측 할 수 있으므로,
AI 분야에 응용 할 수 있을 것이다.
ps>편집,확인이 용이하게, 바이너리보다 text파일저장을 사용했다.
08-04- Pag
Bootcamp Asia 2012 45
2012 e
46. CVS파일 이용하기
• TextAsset가 로딩 할 수 있는 확장자 포맷은 다음과 같다.
.txt .html .htm
.xml .bytes
( cvs파일포맷은 존재 하지 않는다 )
• Application.isEditor == true 일때 .cvs파일을 FileStream으로
로드
• Application.isEditor == false경우 .txt를 TextAsset으로 로드
• 최종 폰에 빌드전에 .cvs파일을 .txt파일로 변환하는 작업이
필요하다
08-04- Pag
Bootcamp Asia 2012 46
2012 e
47. 보간 애니메이션
• 보간 애니메이션의 대표 무료 라이브러리인 Itween
• Itween사용보다 코딩이 많이 필요 없는 보간 애니메이션
을 구현하면 프로그래머의 작업은 줄어들 것이다.
• 때문에 코딩 없이 쉽게 사용 할 수 있는
보간 애니메이션 GameAni구현.
• GameAni는 UI의 Blend효과, 카메라Path, 카메라
Wave , 간단한 애니메이션 효과 등 다양하게 응용할 수
있다.
08-04- Pag
Bootcamp Asia 2012 47
2012 e
48. Path를 이용한 컷씬
• 비균일 스플라인을 이용
• RNS( rounded nonuniform spline )
• SNS( smooth nonuniform spline )
• TNS( timed nonuniform spline )
• 원할 경우 스플라인의 처음과 끝 노드를 연결하여 Loop관계로 만들
수 있습니다.
• Game Programming gems 4권 2.4 비균일 스플라인 참고
08-04- Pag
Bootcamp Asia 2012 48
2012 e
49. !HIRING!
Senior programmer
jplee@devclan.org
08-04- Pag
Bootcamp Asia 2012 49
2012 e
50. 감사합니다.
08-04- Pag
Bootcamp Asia 2012 50
2012 e