[1002 조진현]unity3d 소개
DESCRIPTION
데브루키 2010.10.2일 발표자료TRANSCRIPT
Unity3D
조 진현
Unity3D
Unity!!! 탄생하다 !!!
역 사
2001 년에 개발을 시작 .
2004 년에 목표를 설정 .
웹상에서 구동되는 3D 툴이 초기 목표였음 .
2005 년에 Unity 1.0 출시 .
2006 년에 Unity 2.0 출시 .
Unity 2.0 특징 .
DirectX 9.0
웹 스트리밍
실시간 그림자
네트워크 엔진
Unity 2.0 특징 .
비디오 스트리밍
게임 관련 UI 컴포넌트 제공 .
지형 엔진 ( Terrain Engine )
Unity 2.0 특징 .
Unity Asset Server
Unity Web site
Unity 2.0 특징 .
Rendering Engine.
Game Engine.
현재는 2.6.1
올 여름에 3.0 이 출시 !
Unity3D
Unity!!! 인기를 얻다 .
아이폰 게임의 특징 .
Mac 에서 제작되어져야 한다 .
Unity 는 Mac 전용이였다 .
무거운 엔진은 필요하지 않다 .
빠른 제작에 용이해야 한다 .
Unity3D
작업하기 .
이 화면에 모든 것이 다 있다 !!!
오직 하나의 툴만 존재 !!!
EXE 실행파일
Unity3D
기본 개념들 .
Transform
MeshRenderer
Particle
Custom Compo-nent
난 , GameObject.
Component
GameObject
게임에 실제로 배치되는 오브젝트들 . 컴포넌트가 붙여진다 .
Component
게임 상에서의 동작을 정의 . Mono Behavior 을 상속 .
MonoBehavior
Transform
MeshRenderer
Particle
Custom Compo-nent
이해 되셨나요 ?
Component
Prefabs
GameObject 의 재사용 .
Transform
MeshRenderer
Particle
Custom Com-ponent
Component나 이제 Prefab 된거임 ?
Lights
Camera
Particle
Particle
Terrain
Mesh Importer
.max 와 .fbx 를 읽어올 수 있다 .
Prefab 으로 게임 상에 배치해야 한다 .
Built-in shader
Material
Texture Importer
.psd 로 작업 가능 .
빌드 시에 텍스쳐 압축은 옵션 .
동영상 및 사운드
Asset Server.
Asset Server
꼭 구매하기 바람 .( 강조 )
물 .
제공되는 리소스에 유용한 것이 많음 !!!
Profiler
Unity3D
FAQ
가격은 ?
기본적으로 무료 , Unity Pro 는 구매 ( 나머지는 옵션 )
대략 $2000 ~ 3000 소요 .
( Asset Server , 기타 플랫폼 별도 )
소스 라이선스 가능 .( 가격은 메일로 문의 )
콘솔 라이선스는 메일로 문의 .
업그레이드 비용은 별도 지불 .
자세한 사항은 홈페이지를 참고 .
Unity 는 빠른가요 ?
빠르다…… -_-b
더 빠르게 만들고 싶다면 ,
모든 작업자가 노력해야 한다 .
MO 정도는 무난하게 만들 수 있다 .
MMO 는 도전해 보라 ~
C# 으로 게임을 만든다구요 ?
C# 은 스크립트일뿐 .
C# 은 느리지 않음 .
( 폴리곤을 더 줄이거나 쉐이더를 최적화하라 . )
C# 전문 개발자는 힘들다 .
C++ 개발자가 C# 을 다루어야 한다 .
언리얼 보다 좋아요 ?
당연히 안좋다 .
렌더링 모듈 접근은 더 유용 .
돈 있으면 , 언리얼을 구매하라 .
언리얼 최고 !!!
겜브리오 보다 좋아요 ?
겜브리오는 C++ 기반의 프로그래머 지향적인 엔진임 .
Unity 는 언리얼에 더 가까운 엔진임 .( 스크립트 기반 )
돈 있으면 겜브리오 사용하라 .
경험자들이 풍부함 .
엔진 이론에 대해 박식하며 ,
최적화 작업을 직접 하고 싶다면 , 겜브리오를 선택할 것 .
그러면 왜 ?
언리얼 구매할 만큼 자금이 없는 경우 .
겜브리오를 최적화할 시간이나 능력이
무서운 경우
상용 엔진을 경험하고 싶은 경우 .
Right Now!!!
서버 작업은 어떻게 ?
서버는 C++ 로 작성 가능 .
클라이언트의 마샬링 작업 필요 .
Unity 에서 서버 모듈 제공 .( P2P )
Unity 쉽다던데 ?
쉬운 것은 없음 .
저렴 (?) 하다고 해서 , 우습게 보지 말 것 !.
공개엔진들보다는 1,000,000 배는 더 좋음 .
C# 이 쉽지만은 않음 .
세상에 쉬운 개발은 없다 !!!
게임 하나 만드는데 걸리는 기간은 ?
팀별 역량마다 다름 .
3 개월 만에 프로토타입은
완성했음 .
스케일폼 연동은 가능한가 ?
안됨 !!!
풀 소스 구매하면 , 가능할지도…
Unity GameGUI 가 있음 !!!
UI 엔진은 사용할만 한가 ?
웬만한 것은 다됨 .
단 , 한글 IME 미지원 .
풀 소스 구매하면 , 가능할지도…
AI 관련해서는 ?
Unity Steer 라는 것이 있음 .
필요한 기본 기술은 ?
C# 2.0
영어 + 영작문 실력
마샬링 ( C++, C# 통신 )
개발 환경은 ?
Visual Studio 연동됨 .
Windows 7 64Bit & Windows XP
32Bit
Max 는 최신 버전을 사용 . ( 2009 & 2010
)
지원하지 않는 기능은 어떻게 ?
툴용 스크립트 API 가 존재 .
C++ 코딩을 해서 DLL 로 만든다 . 애드인 형태로 적용 가능 .
Unity3D
Rendering Engine 으로써의 가치 .
렌더링 엔진인가 ? ( 기본 )
훌륭한 맥스 지원 .
안정적인 알파 소팅 .
효율적인 재질 관리 .( shaderd 지원 . )
오브젝트 인스턴싱 지원 .
리소스 최적화 및 관리 지원 .
쉐이더는 제어 가능 . ( CG shader )
정점당 최대 4개까지의 라이팅 연산 가능 .
효과적인 그림자 생성 .
괜찮다~~
렌더링 엔진인가 ? ( 고급 )
고급 렌더링 지원 .
다양한 효과 지원 .
많은 리소스 지원 .
계속 추가 중~~
님하가 짱이셈 !!!
Unity3D
최적화 하기 .
Draw call
CPU 에 의존적인 부분이 많음 .
최소 500 ~
Fill rate
screen pixel * overdraw
픽셀 라이팅을 과도하게 사용하지 말 것 !
해상도 변경 시 성능 저하로 체크 .
메모리 로드 구조 .
Resource 폴더
Memory
모두 메모리에 로드
AssetBundle 을 활용하라 .
AssetBundle 은 일종의 자체 포맷임 .
순간순간 메모리에 로드 .
그렇지 않으면 일괄적으로 로드 .
용량이 약간 커지지만 , 괜찮음 .
개선된 메모리 로드 구조 .
Resource 폴더
Memory
실행시 메모리에 로드
다른 폴더들다른 폴더들다른 폴더들
AssetAsset
AssetAsset
AssetAsset
AssetAsset
런타임 로드
AssetB
undle 로 작업할 것!!!
멀티 스레드 활용 .
C# 으로 멀티스레드 코딩 가능 .
멀티 스레드 관련 API 가 존재 .
모두 리소스 로딩과 관련된 내용임 .
AssetBundle.LoadAsync
Application.LoadLevelAsync
Application.LoadLevelAdditiveAsync
선택적으로 멀티 스레드 기반의 로딩을 사용할 것 .
멀티스레드 기반레벨 로드 상황 .
Memory
로딩 레벨 복잡한 레벨
멀티스레드 기반레벨 로드 상황 .
Memory
로딩 레벨 복잡한 레벨
새로운 레벨
일반 클래스로 작업하라 .
MonoBehavior 는 new 로 생성되어지지
않는다 . ( AddComponent() )
일반 클래스는 new 로 생성 가능하다 .
Mono 는 자동적으로 함수 호출
오버헤드가 존재한다 ,
enable/disable 속성을 활용하라 .
화면에 보이는 것만 처리하라 .
쉐이더에 LOD 명시할 것 !
텍스쳐 옵션에 신경쓸 것 !!!
각종 상황에 익숙해 져라 .
Update, FixedUpdate, LateUpdate …
Awake, Start …
OnCollisionEnter, OnCollisionExit…
OnEnable, OnDisable…
OnPreCull, OnPreRender, OnPostRender…
etc…
Combine
밀접한 오브젝트끼리 결합시킬 것 .
지나치게 많은 오브젝트를 결합시키지 말 것 .
많은 draw 를 해야하는 오브젝트는 결합시키지 말 것 .
밀접해 있는 동일한 재질을 사용하는 오브젝트들은 결합 시킬 것 .
너무 멀리 있는 것끼리는 절대로 결합시키지 말 것 .
라이트를 현명하게 사용할 것 !
라이트 맵을 사용할 것 .
Point Lights 를 과하게 사용하지 말 것 .
그림자 또한 현명하게 생성할 것 .
cast shadows, receive shadows 옵션 .
상식 ?
폴리곤 많으면 당연히 느림 .
오브젝트가 라이팅에 약간의 영향권에만 있어도 전체가 draw 된다 .
카메라에 약간만 걸쳐있어도 전체가 draw 된다 .
내장 쉐이더를 수정하지 말라 .
성능 상 문제가 있는 부분이 존재 .
그렇다고 비슷한 기능의 쉐이더를
추가하지 말 것 !
조금 더 큰 그림의 쉐이더를 추가하라 !
Unity3D
좋았던 점 .
아티스트들이 좋아하는 부분 .
psd 포맷 지원 .
안정적인 익스포트 작업 ( .fbx )
버그가 거의 없음 .
프로그래머들이 좋아하는 부분 .
별도의 툴 제작 압박이 없음 .
“나는 이 정도 수준으로 만들지 못한다”
120% 만족 .
훌륭한 지원 .
Unity3D
불편했던 점 .
툴이 점점…리소스량에 비례 !!!
언리얼에서는 되던데…
소스 레벨의 디버깅 불가능 .
Unity3D
3.0 을 기다리며…
Beast Lightmapping
Umbra
Source-level Debugging
개 봉 박 두 !!!!2010 여름…
여기서 끝이 아닙니다 .^^
Unity3D
3.0 을 만난다 !!!
Lightmapping( Beast )
Occlusion Culling( Umbra )
Source Level Debugging
IME 지원
Sound 편집 강화
Shader must die!!!
VS
PS
Surface Shader( color, normal, specular… )
Lighting model( Lambertian, Blinn Phong )
Light Shader( Attenuation, cookies, shad-
ows )
struct SurfaceOutput {
half3 Albedo; half3 Normal; half3 Emission; half Specular; half Gloss; half Alpha;
};
Rendering Paths
Deferred Lighting
Forward Rendering
Vertex Lit
Unity3.0 의 문제점
DX9 기반 .
버그들 존재 .
Unity3.0 는 주류가 될 수 있는가 ?