실전 Unity3D Engine Programing 과정 1일차 (2013.07.22 (월))


[강사 소개]

국민대학교 게임 교육원 주세영교수  


프리랙 책 집필중

주간에는 게임회사팀장

야간과 주말은 교육장


HG Entertainment -  캐쥬얼슈팅

엔사 - 소셜온라인

CCR - MMORPG

현 GameLoft - Web 3D온라인

현 국민은행 게임 교육원 교수



 GameLoft / 4000명 1006개국.. 급여는 국내 테이블

- 시니어스튜디오 유명한 게임을 많이 만든 스튜디오를 지칭한다.



만든 게임은

페이스북 게임

MMORPG

데이트 온라인 /  SNS 게임

싱크 건담 / 200개 팀대팀전..


서버클라이언 6주 개발

캐릭터 폴리곤 500개.. 

RocketRacer


게임 난이도

온라인 FPS

대전게임

레이싱게임


노리공방

10개월 




[강의 순서]

1. 게임 개발에 대해서

- 패키지, 온라인, 외국계회사 등등의 개발 패턴

- 웹게임과 3D 게임개발

- Unity3D로 만드는 게임

2. Unity3D

- Unity3D

- Unity3D로 만들어진 게임

3. 실무에서의 Unity3D

4. Project - Unity3D

5. 실무에서 유용한 팁과 노하우들



1. 게임 개발 패턴

게임은 어떻게 개발하나


패키지 게임의 게임 개발 패턴

- 스크럼 방식을 주로 사용

- 기획을 중간에 바꾸지 않는다. (수정사항은 다음 게임에)

- 마감은 정확하게 하지만 여유 있는게 포인트

- 업무부하 협동해결제도


-패치는 최후의 수단, 반드시 버그 없는...


온라인 게임의 게임 개발 패터

1. 컨셉기획

2차 

3차


4차 CBT

 5차 검증 및 수정

6차..



제작기간이 길다.


외국계회사의 게임 개발 패턴

GameLoft - 모방과 신속개발이 모토

T모다 - 창의성과 재미있는 게임이 모토


웹게임젲가의 노하우


...


3D rpdla ..


2.Unity3D 

쉽고 빠른 게임 개발 엔진......

엔진은 개발에 필요한 것을 모아둔것...


Componet Centric 엔진 <== 가장 중요한 용어 굉장히 중요한 개념이다.

그레고리  - 게임 엔진 아키텍쳐

유니티는 기존엔진과 많이 다르다.

C++은 탈것 하나만 정의 하면 된다...

- 한번 객체로 설계된 이후 변경이 발생되면 수정이 어렵게 된다.


컨포넌트 센트릭은

어떤 오브젝트의 속성을 정의한다.. 

각 오브젝트의 조합을 해서 기능을 만든수 잇다..

아무것도 오브젝트 하나 만들고 아무 기능이 없다..

이 것이 사람이라 정의 하면, 밤이란 환경을 만나면 잔다... 

어떤 특정 환경에 만나게 되면 기능이 생긴다. 

특정 지역에서 특정 기능을 갖게 된다.

이렇게 하면 확장성이 무긍무진하다.


특성을 모아둔것...


따라서 기획...이 바꿔야 한다..

기능정의를 하고 이 기능이 모여진 것이 사람이 될 수 있고, 적군이 될 수 있다.. 등...

기능만 합치면 무긍무진하다...



 Actor centric (언리얼 게임 엔진)

<- 컨포넌트 센트릭 의 반대 개념..

<- 기능을 다 만들어 놓고 On/Off처리..


컨포넌트센트릭은

- 기능중심의..........


슈팅, 모델링, NGUI, 2D, 네트워크, 에니메이션 케릭터,  3개월과정

슈팅, 디펜스, RPG, LOL 6개월과정



컨포넌트로 자유롭게 게임 오브젝트를 구성 가능하다...


유니티에서 컴포넌트?

트렌스콤포넌트



3D모델


게임 오브젝트.

- 컴포넌트를 담는 그룻


게임환경


유니는 쉽게 접근이 가능하다. 시간화, 실시간 확인 가능

멀티플랫폼...




Programmer -> GraphicArtist

자신이 만든 산출물이 게임에서 어떻게 나올지, 우리 엔진에서

어떻게 보이는 지 궁금한 것이 당연한 아티스트들

그래픽 아티스트가 쉽게 확인가능하기에 책임을 진다.


큰프로젝트일수록 어마어마한 데이터 데이틀(XML, Excel, Orginal-Format)

프로젝트 후반일 수록 개발에 큰 영향을 미치게 된다.


데이터 관리툴...

사고 방지를 위해 데이터 검증 및 관리 툴을 제작

하지만 검증툴 개발 우선순위느..



유니티는

엑셀 -> XML -> 서버, 클라이언트 데이터로 생성된다.



툴을 이용하면 레벨생성기를 제공한다.



Project Issue

- Engleish Spelling Issue

- Debugging

- Edit


리소스에 스펠링이 달라서 문제가 생길 수 있다.

Missile = mesail meesail, misail mysail


PrePop

리소스 값의 모음으로 프리팝을 통해서 사용하면 좋다. 권장한다.



Proejct Editor / 


유니티는 디버깅이 안된다..

브레이크가 안된다.. 메모리가 세고 프로그램 뻣는다.

로그 메시지는 알기 쉽게..

Debug.Log, LogWarning, LogError

왜냐 하면 코어엔진은 C++이지만, 나머지는 닷넷으로 되어 있다..


버전관리툴은 사지도 마라 문제가 많다.

토토즈, 포포즈 사용해라.


Edit and Edit, Again Edit

값을 외부로 뽑아서 지정할 수 있게 해 준다.


기타..

리팩토링, 스크립트는 80라인을 이내로 해야 한다. 

Simple is Best


여기서 정의 하는 클래스는 함수라고 생각해야 한다.

함수하나가 스크립터이다. 기능하나이다.


3.5.7F가 가장 안정적이다. (4.0은 최신 버전으로 써라)


10년된 엔진이지만 최근 5년에 발전했다.


5. Tip

GUI가 매우 느리다.

GUI가 하나 하나 오브젝트로써 이벤트를 갖는다.

이GUI, NGUI 등을 추가로 판다.

멀티스크린UI





www.unifycommunity.com/wiki/index.php?title=main_page



어셋에 좋은 것 판다.


스케일


스케일 팩터 0.01 로 변경된다. 스케일은 변경하면 안된다.

익스포트..것


PSD  파일을 지원한다. 

지원하지만 레이어를 제공하기에 메모리용량이 크기에 게임에서는 쓰지 마라..



메타파일

기획, 디자인, 개발 모두 유니티3D를 사용해야 한다.

한프로젝트르 모두 사용하기에 오히려 위험할 수 있다..

리소스에 메타파일을 기록되어 있다.

메타파일은 수정 이력을 기록되어 있어 리소스와 함께 save해야 한다.


4시간 30분 인포트하는 상황이 생길 수 있다.


리소스 추가 시 메타파일을 같이 추가해야 한다. 


save하고 메타파일과 같이 올려줘야 한다.


메타파일 정말 중요하다... (꼬리면 2일 이상 리로드할 수 있다.)




텍스쳐 형식변경

2의 승수이어야 한다.

change Non Power of 2 (NPOT Gsize)

이미지 넣으면 깨진다.....



라이트맵...

다이렉트 스포트... 파일

다이렉트 텍스쳐이다. 맥에는 이 파일을 못읽는다.

멀티플랫폼시 필히.. 라이트맵은 맥에서 빌드해야 한다. 맥용 버쳘 텍스쳐 포맷으로 나온다. (윈도우 것으로 하면 깨진다.)


폰트..

볼드등은 지원하지 않았지만 4.0에서 지원한다 느리다..



프리로딩..

프리팝.. 그때 그때 화면에서 읽는다. 이러면 화면이 뚝뚝 끈긴다..

만들어서 우주밖으로 보내 둔다...


유니티는 생성은 하고 삭제는 하지 않고 GC가 삭제한다. 

GC가 호출될 때 게임이 끈기는 현상이 생길 수 있다..

GC를 임의로 호출하는 방법도 있다..

프로파일과 사용하는 방법을 제공할 것이다...



게임 개발사 입장에서 유니티 한계


Low Layer 커스트마이징 안된다.

프로젝트만의 툴 커스터마이징이 안된다.

멀티 플랫폼이지만 지원 플랫폼에 따라 복잡도가 증가하는 건 진리

그지 같은 디버깅...



멀티플랫폼 제공하지만 각 플랫폼에 맞게 적용해야 하는 어려움이 있다.


리소스 최적화 방법

플랫폼 별 텍스쳐 크기 지정

텍스쳐 파일 포맷은 최대한 동일하게

공유 매트리얼을 쓰면 좋다.

폴리곤은 압축해서

애니메이션은 적을 수록 좋다.



2033

2048 아이폰 한번에 읽는 량은 50MB만 읽는다..

1024 x 1024  안드리이드





멀티 플랫폼 개발

다른 엔진의 멀티 플랫폼

유니티 엔진에서 멀티 플랫폼

각 플랫폼별 아셋을 변경하기에 오래 걸린다.. 

3개의 버전별로 PC를 준비해서 빌드한다...


N스킬ㄴ 대응

UI윛 보정

마우스 터치스크린 

아이폰은 5개..  아이패드는 11개도 터치 되낟. 넥서스원 2개 최근 안드로이드는 8개..


가속도계중력..


프레임 확보를 위해...(최소프레임은 21 프레임 이상 나와야 한다.)

LOD는 동적 생성보다 GameObject On/Off활용 

Culling은 적극적으로 활용해라 / 카메라 컬링을 해 주며 좋다. 

Shader의 남용 금지

Mesh Merging / 캐릭터의 커스터마이징하다보면 문제가 많은데 메쉬 머지로 하면 드로컬이 하나로 된다.

충돌체크 간략화  / 충돌 위치 파악을 위해서 레일을 쓰면 느리다.. 7프레임 정도 겹치는 형태로 해야 하면 좋다.

Light는 최소화 / 모바일에서는 동작 라이트는 절대 사용하지 마라. 생성해서 사용하지 마라..라이트수만큼 드로컬이 2배씩 증가된다.

Mipmap반드시 켜라 / 

UI리소스는 2의 승수로 만드는 것이 좋다.

애니메이션 최소화

폴리곤 최소화

빌보드는 Shader로 할 것....



웹기만 

구글 웹스토는 


유니티는 다양곳에 사용한다.

- 교육용 40%

- 영화 20%

- 3D화면 제어 


3D GPS, SI솔루션 AR소프트웨어 매장관리 프로그램 키오스크 용 소프트웨어 3D아바타 메신저