[1002 조진현]unity3d 소개

100
Unity3D 조 조조

Upload: -

Post on 25-Jan-2015

14.811 views

Category:

Documents


14 download

DESCRIPTION

데브루키 2010.10.2일 발표자료

TRANSCRIPT

Page 1: [1002 조진현]unity3d 소개

Unity3D

조 진현

Page 2: [1002 조진현]unity3d 소개

Unity3D

Unity!!! 탄생하다 !!!

Page 3: [1002 조진현]unity3d 소개

역 사

2001 년에 개발을 시작 .

2004 년에 목표를 설정 .

웹상에서 구동되는 3D 툴이 초기 목표였음 .

2005 년에 Unity 1.0 출시 .

2006 년에 Unity 2.0 출시 .

Page 4: [1002 조진현]unity3d 소개

Unity 2.0 특징 .

DirectX 9.0

웹 스트리밍

실시간 그림자

네트워크 엔진

Page 5: [1002 조진현]unity3d 소개

Unity 2.0 특징 .

비디오 스트리밍

게임 관련 UI 컴포넌트 제공 .

지형 엔진 ( Terrain Engine )

Page 6: [1002 조진현]unity3d 소개

Unity 2.0 특징 .

Unity Asset Server

Unity Web site

Page 7: [1002 조진현]unity3d 소개

Unity 2.0 특징 .

Rendering Engine.

Game Engine.

Page 8: [1002 조진현]unity3d 소개

현재는 2.6.1

올 여름에 3.0 이 출시 !

Page 9: [1002 조진현]unity3d 소개

Unity3D

Unity!!! 인기를 얻다 .

Page 10: [1002 조진현]unity3d 소개
Page 11: [1002 조진현]unity3d 소개

아이폰 게임의 특징 .

Mac 에서 제작되어져야 한다 .

Unity 는 Mac 전용이였다 .

무거운 엔진은 필요하지 않다 .

빠른 제작에 용이해야 한다 .

Page 12: [1002 조진현]unity3d 소개

Unity3D

작업하기 .

Page 13: [1002 조진현]unity3d 소개

이 화면에 모든 것이 다 있다 !!!

오직 하나의 툴만 존재 !!!

Page 14: [1002 조진현]unity3d 소개
Page 15: [1002 조진현]unity3d 소개

EXE 실행파일

Page 16: [1002 조진현]unity3d 소개

Unity3D

기본 개념들 .

Page 17: [1002 조진현]unity3d 소개

Transform

MeshRenderer

Particle

Custom Compo-nent

난 , GameObject.

Component

Page 18: [1002 조진현]unity3d 소개

GameObject

게임에 실제로 배치되는 오브젝트들 . 컴포넌트가 붙여진다 .

Page 19: [1002 조진현]unity3d 소개

Component

게임 상에서의 동작을 정의 . Mono Behavior 을 상속 .

Page 20: [1002 조진현]unity3d 소개

MonoBehavior

Page 21: [1002 조진현]unity3d 소개

Transform

MeshRenderer

Particle

Custom Compo-nent

이해 되셨나요 ?

Component

Page 22: [1002 조진현]unity3d 소개

Prefabs

GameObject 의 재사용 .

Transform

MeshRenderer

Particle

Custom Com-ponent

Component나 이제 Prefab 된거임 ?

Page 23: [1002 조진현]unity3d 소개

Lights

Page 24: [1002 조진현]unity3d 소개

Camera

Page 25: [1002 조진현]unity3d 소개

Particle

Page 26: [1002 조진현]unity3d 소개

Particle

Page 29: [1002 조진현]unity3d 소개

Mesh Importer

.max 와 .fbx 를 읽어올 수 있다 .

Prefab 으로 게임 상에 배치해야 한다 .

Page 30: [1002 조진현]unity3d 소개

Built-in shader

Page 31: [1002 조진현]unity3d 소개

Material

Page 32: [1002 조진현]unity3d 소개

Texture Importer

.psd 로 작업 가능 .

빌드 시에 텍스쳐 압축은 옵션 .

Page 33: [1002 조진현]unity3d 소개

동영상 및 사운드

Page 34: [1002 조진현]unity3d 소개

Asset Server.

Page 35: [1002 조진현]unity3d 소개

Asset Server

꼭 구매하기 바람 .( 강조 )

Page 36: [1002 조진현]unity3d 소개

물 .

제공되는 리소스에 유용한 것이 많음 !!!

Page 37: [1002 조진현]unity3d 소개

Profiler

Page 38: [1002 조진현]unity3d 소개

Unity3D

FAQ

Page 39: [1002 조진현]unity3d 소개

가격은 ?

기본적으로 무료 , Unity Pro 는 구매 ( 나머지는 옵션 )

대략 $2000 ~ 3000 소요 .

( Asset Server , 기타 플랫폼 별도 )

소스 라이선스 가능 .( 가격은 메일로 문의 )

콘솔 라이선스는 메일로 문의 .

업그레이드 비용은 별도 지불 .

자세한 사항은 홈페이지를 참고 .

Page 40: [1002 조진현]unity3d 소개

Unity 는 빠른가요 ?

빠르다…… -_-b

더 빠르게 만들고 싶다면 ,

모든 작업자가 노력해야 한다 .

MO 정도는 무난하게 만들 수 있다 .

MMO 는 도전해 보라 ~

Page 41: [1002 조진현]unity3d 소개

C# 으로 게임을 만든다구요 ?

C# 은 스크립트일뿐 .

C# 은 느리지 않음 .

( 폴리곤을 더 줄이거나 쉐이더를 최적화하라 . )

C# 전문 개발자는 힘들다 .

C++ 개발자가 C# 을 다루어야 한다 .

Page 42: [1002 조진현]unity3d 소개

언리얼 보다 좋아요 ?

당연히 안좋다 .

렌더링 모듈 접근은 더 유용 .

돈 있으면 , 언리얼을 구매하라 .

언리얼 최고 !!!

Page 43: [1002 조진현]unity3d 소개

겜브리오 보다 좋아요 ?

겜브리오는 C++ 기반의 프로그래머 지향적인 엔진임 .

Unity 는 언리얼에 더 가까운 엔진임 .( 스크립트 기반 )

돈 있으면 겜브리오 사용하라 .

경험자들이 풍부함 .

엔진 이론에 대해 박식하며 ,

최적화 작업을 직접 하고 싶다면 , 겜브리오를 선택할 것 .

Page 44: [1002 조진현]unity3d 소개

그러면 왜 ?

언리얼 구매할 만큼 자금이 없는 경우 .

겜브리오를 최적화할 시간이나 능력이

무서운 경우

상용 엔진을 경험하고 싶은 경우 .

Right Now!!!

Page 45: [1002 조진현]unity3d 소개

서버 작업은 어떻게 ?

서버는 C++ 로 작성 가능 .

클라이언트의 마샬링 작업 필요 .

Unity 에서 서버 모듈 제공 .( P2P )

Page 46: [1002 조진현]unity3d 소개

Unity 쉽다던데 ?

쉬운 것은 없음 .

저렴 (?) 하다고 해서 , 우습게 보지 말 것 !.

공개엔진들보다는 1,000,000 배는 더 좋음 .

C# 이 쉽지만은 않음 .

세상에 쉬운 개발은 없다 !!!

Page 47: [1002 조진현]unity3d 소개

게임 하나 만드는데 걸리는 기간은 ?

팀별 역량마다 다름 .

3 개월 만에 프로토타입은

완성했음 .

Page 48: [1002 조진현]unity3d 소개

스케일폼 연동은 가능한가 ?

안됨 !!!

풀 소스 구매하면 , 가능할지도…

Unity GameGUI 가 있음 !!!

Page 49: [1002 조진현]unity3d 소개

UI 엔진은 사용할만 한가 ?

웬만한 것은 다됨 .

단 , 한글 IME 미지원 .

풀 소스 구매하면 , 가능할지도…

Page 50: [1002 조진현]unity3d 소개

AI 관련해서는 ?

Unity Steer 라는 것이 있음 .

Page 51: [1002 조진현]unity3d 소개

필요한 기본 기술은 ?

C# 2.0

영어 + 영작문 실력

마샬링 ( C++, C# 통신 )

Page 52: [1002 조진현]unity3d 소개

개발 환경은 ?

Visual Studio 연동됨 .

Windows 7 64Bit & Windows XP

32Bit

Max 는 최신 버전을 사용 . ( 2009 & 2010

)

Page 53: [1002 조진현]unity3d 소개

지원하지 않는 기능은 어떻게 ?

툴용 스크립트 API 가 존재 .

C++ 코딩을 해서 DLL 로 만든다 . 애드인 형태로 적용 가능 .

Page 54: [1002 조진현]unity3d 소개

Unity3D

Rendering Engine 으로써의 가치 .

Page 55: [1002 조진현]unity3d 소개

렌더링 엔진인가 ? ( 기본 )

훌륭한 맥스 지원 .

안정적인 알파 소팅 .

효율적인 재질 관리 .( shaderd 지원 . )

오브젝트 인스턴싱 지원 .

리소스 최적화 및 관리 지원 .

쉐이더는 제어 가능 . ( CG shader )

정점당 최대 4개까지의 라이팅 연산 가능 .

효과적인 그림자 생성 .

괜찮다~~

Page 56: [1002 조진현]unity3d 소개

렌더링 엔진인가 ? ( 고급 )

고급 렌더링 지원 .

다양한 효과 지원 .

많은 리소스 지원 .

계속 추가 중~~

님하가 짱이셈 !!!

Page 57: [1002 조진현]unity3d 소개

Unity3D

최적화 하기 .

Page 58: [1002 조진현]unity3d 소개
Page 59: [1002 조진현]unity3d 소개

Draw call

CPU 에 의존적인 부분이 많음 .

최소 500 ~

Page 60: [1002 조진현]unity3d 소개

Fill rate

screen pixel * overdraw

픽셀 라이팅을 과도하게 사용하지 말 것 !

해상도 변경 시 성능 저하로 체크 .

Page 61: [1002 조진현]unity3d 소개

메모리 로드 구조 .

Resource 폴더

Memory

모두 메모리에 로드

Page 62: [1002 조진현]unity3d 소개

AssetBundle 을 활용하라 .

AssetBundle 은 일종의 자체 포맷임 .

순간순간 메모리에 로드 .

그렇지 않으면 일괄적으로 로드 .

용량이 약간 커지지만 , 괜찮음 .

Page 63: [1002 조진현]unity3d 소개

개선된 메모리 로드 구조 .

Resource 폴더

Memory

실행시 메모리에 로드

다른 폴더들다른 폴더들다른 폴더들

AssetAsset

AssetAsset

AssetAsset

AssetAsset

런타임 로드

AssetB

undle 로 작업할 것!!!

Page 64: [1002 조진현]unity3d 소개

멀티 스레드 활용 .

C# 으로 멀티스레드 코딩 가능 .

멀티 스레드 관련 API 가 존재 .

모두 리소스 로딩과 관련된 내용임 .

AssetBundle.LoadAsync

Application.LoadLevelAsync

Application.LoadLevelAdditiveAsync

선택적으로 멀티 스레드 기반의 로딩을 사용할 것 .

Page 65: [1002 조진현]unity3d 소개

멀티스레드 기반레벨 로드 상황 .

Memory

로딩 레벨 복잡한 레벨

Page 66: [1002 조진현]unity3d 소개

멀티스레드 기반레벨 로드 상황 .

Memory

로딩 레벨 복잡한 레벨

새로운 레벨

Page 67: [1002 조진현]unity3d 소개

일반 클래스로 작업하라 .

MonoBehavior 는 new 로 생성되어지지

않는다 . ( AddComponent() )

일반 클래스는 new 로 생성 가능하다 .

Mono 는 자동적으로 함수 호출

오버헤드가 존재한다 ,

enable/disable 속성을 활용하라 .

Page 68: [1002 조진현]unity3d 소개

화면에 보이는 것만 처리하라 .

Page 69: [1002 조진현]unity3d 소개

쉐이더에 LOD 명시할 것 !

Page 70: [1002 조진현]unity3d 소개

텍스쳐 옵션에 신경쓸 것 !!!

Page 71: [1002 조진현]unity3d 소개

각종 상황에 익숙해 져라 .

Update, FixedUpdate, LateUpdate …

Awake, Start …

OnCollisionEnter, OnCollisionExit…

OnEnable, OnDisable…

OnPreCull, OnPreRender, OnPostRender…

etc…

Page 72: [1002 조진현]unity3d 소개

Combine

밀접한 오브젝트끼리 결합시킬 것 .

지나치게 많은 오브젝트를 결합시키지 말 것 .

많은 draw 를 해야하는 오브젝트는 결합시키지 말 것 .

밀접해 있는 동일한 재질을 사용하는 오브젝트들은 결합 시킬 것 .

너무 멀리 있는 것끼리는 절대로 결합시키지 말 것 .

Page 73: [1002 조진현]unity3d 소개

라이트를 현명하게 사용할 것 !

라이트 맵을 사용할 것 .

Point Lights 를 과하게 사용하지 말 것 .

그림자 또한 현명하게 생성할 것 .

cast shadows, receive shadows 옵션 .

Page 74: [1002 조진현]unity3d 소개

상식 ?

폴리곤 많으면 당연히 느림 .

오브젝트가 라이팅에 약간의 영향권에만 있어도 전체가 draw 된다 .

카메라에 약간만 걸쳐있어도 전체가 draw 된다 .

Page 75: [1002 조진현]unity3d 소개

내장 쉐이더를 수정하지 말라 .

성능 상 문제가 있는 부분이 존재 .

그렇다고 비슷한 기능의 쉐이더를

추가하지 말 것 !

조금 더 큰 그림의 쉐이더를 추가하라 !

Page 76: [1002 조진현]unity3d 소개

Unity3D

좋았던 점 .

Page 77: [1002 조진현]unity3d 소개

아티스트들이 좋아하는 부분 .

psd 포맷 지원 .

안정적인 익스포트 작업 ( .fbx )

버그가 거의 없음 .

Page 78: [1002 조진현]unity3d 소개

프로그래머들이 좋아하는 부분 .

별도의 툴 제작 압박이 없음 .

“나는 이 정도 수준으로 만들지 못한다”

120% 만족 .

Page 79: [1002 조진현]unity3d 소개

훌륭한 지원 .

Page 80: [1002 조진현]unity3d 소개

Unity3D

불편했던 점 .

Page 81: [1002 조진현]unity3d 소개

툴이 점점…리소스량에 비례 !!!

Page 82: [1002 조진현]unity3d 소개

언리얼에서는 되던데…

Page 83: [1002 조진현]unity3d 소개

소스 레벨의 디버깅 불가능 .

Page 84: [1002 조진현]unity3d 소개

Unity3D

3.0 을 기다리며…

Page 85: [1002 조진현]unity3d 소개

Beast Lightmapping

Umbra

Source-level Debugging

Page 86: [1002 조진현]unity3d 소개

개 봉 박 두 !!!!2010 여름…

Page 87: [1002 조진현]unity3d 소개

여기서 끝이 아닙니다 .^^

Page 88: [1002 조진현]unity3d 소개

Unity3D

3.0 을 만난다 !!!

Page 89: [1002 조진현]unity3d 소개

Lightmapping( Beast )

Page 90: [1002 조진현]unity3d 소개

Occlusion Culling( Umbra )

Page 91: [1002 조진현]unity3d 소개

Source Level Debugging

Page 92: [1002 조진현]unity3d 소개

IME 지원

Page 94: [1002 조진현]unity3d 소개

Sound 편집 강화

Page 95: [1002 조진현]unity3d 소개

Shader must die!!!

VS

PS

Surface Shader( color, normal, specular… )

Lighting model( Lambertian, Blinn Phong )

Light Shader( Attenuation, cookies, shad-

ows )

Page 96: [1002 조진현]unity3d 소개

struct SurfaceOutput {

half3 Albedo; half3 Normal; half3 Emission; half Specular; half Gloss; half Alpha;

};

Page 97: [1002 조진현]unity3d 소개
Page 98: [1002 조진현]unity3d 소개

Rendering Paths

Deferred Lighting

Forward Rendering

Vertex Lit

Page 99: [1002 조진현]unity3d 소개

Unity3.0 의 문제점

DX9 기반 .

버그들 존재 .

Page 100: [1002 조진현]unity3d 소개

Unity3.0 는 주류가 될 수 있는가 ?