42
모바일 플랫폼을 위한 유니티 에서 게임 환경 구축 MJT Project PostMoterm으로 살펴보는 Unity 3D Environment art for mobile platform Game Tech 2015 Yi SangYun

Gametech2015

Embed Size (px)

Citation preview

Page 1: Gametech2015

모바일 플랫폼을 위한 유니티에서 게임 환경 구축

MJT Project PostMoterm으로 살펴보는

Unity 3D Environment art for mobile platform

Game Tech 2015

Yi SangYun

Page 2: Gametech2015

과르네리 스튜디오

대표작 : 삼한 제국기.

1000vs 1000 실시간 전투

한국 역사 소재 국가 시뮬레이션

2011년 11월 G-star 참가

2012년 8월 독일 게임스컴 참가

이상윤 (Yi SangYun)

(전) Kuno interactive 책임 아티스트, 3D lead Artist

- Defense Technica, The Mansion(Rooms2)

- Kgc2013 defense technica_converting

(현) Guarneri Studio 배경/TA

- MJT Project(가제)

- Facebook 게임 3D 배경 그룹 운영 中

Page 3: Gametech2015

- Contents -

1. 모바일 게임 개발 환경 분석

2. 유니티 아트 개발과 관련하여 고려해야 할 사항들

3. 향후 전망

Page 4: Gametech2015

모바일 게임환경 분석

- 고해상도 디스플레이, 고사양 모바일 디바이스 기기의 보급 가속

Samsung Galaxy S6

5.1인치 2560x1440(QHD)

엑시노스 7420

Octa-core(Quad-core

2.1G + Quad-core 1.5G),

T760 770MHz

3G RAM

(출시 국가 및 세세한 모델

이 따라 스펙 차이 존재)

Android

IOS

Apple iphone 6 plus

5.5인치 1920x1080(FHD)

A8 (Dual core – 2.6G +

PowerVR G6650 6 core

cluster)

1G RAM

Page 5: Gametech2015

- 타겟 디바이스

Samsung Galaxy S3

4.8인치 1280x720(HD)

엑시노스 4412

Quad-core 1.4G, MP4

440MHz

2G RAM

(출시 국가 및 세세한 모델

이 따라 스펙 차이 존재)

Android

IOS

Apple iphone 5

4인치 1136x640

A6(Dual Core – 1.3G +

PowerVR SGX543 3 Gpu

cluster)

1G RAM

Page 6: Gametech2015

- OS별 시장 점유율

24일(현지시간) 시장조사기관 IDC과 외신에 따르면 지

난해 모바일 운영체제 안드로이드의 시장점유율이

81.5%를 차지했고, iOS는 14.8%를 기록했다. 안드로이

드는 지난해 엄청난 성장률을 기록하면서 시장 점유율이

81.5%에 달했다. 2013년에 비해 출하량과 시장점유율

이 모두 성장했다. 지난해 안드로이드 폰 출하량은 10억

5930만대로 역대 최대 규모다.

반면 iOS의 점유율은 15.1%에서 14.8%로 소폭 하락했

다. 출하량은 1억9270만대로 2013년(1억5340만대)보다

늘었다. 4분기 점유율 증가폭만 놓고 보면 iOS가 안드로

이드보다 높다. 2013년 4분기 17.5%였던 점유율이 다음

해 같은 기간에는 19.7%로 늘어났다.

출처 : 나인투파이브(구글) 및 네이버 뉴스기사 中

Page 7: Gametech2015

Test 영상

Page 8: Gametech2015

유니티 아트 개발과 관련해 고려해야 할 사항

- 게임이 화면에 그려질 때 영향을 주는 부분은 크게 세가지

Game Art

Character Environmnet

Particle

Game Logic UI

Page 9: Gametech2015

- Drawcall

Scene에 있는 vertex들을 그리기 위해 CPU가 GPU에게 보내는 요청. 카메라를 통해 한 프레임의 화면을

만들어 내는 동안 1개의 셰이더 패스, 1개의 material로 오브젝트를 한번 그리는 작업의 단위.

그래픽 이슈에서 성능과 직결되는 중요한 요소 중 하나.

Texture

Shader

Mesh

Material

Mesh render

DrawCall

Page 10: Gametech2015

Defense Technica Steam steage 19 Defense Technica Mobile steage 19

Page 11: Gametech2015

MJT Project 영지 관리 메뉴

Page 12: Gametech2015

- batching

Drawcall을 소비하여 그려진 mesh를 다시 그릴때 연

산을 줄이기 위한 기법

1) Static Batching(정적배칭)

움직이지 않는 object가 해당되며 300개의

vertex 이하에서만 처리된다. (변동있을수 있음)

정적배칭 처리를 할 경우 드로우콜은 아낄수 있지만

카메라의 뷰에 걸리지 않는 오브젝트 역시 계산을 하

기 때문에 컬링 영역을 잘 계산해서 배치하는 쪽이 좋

다.(scene에 따라 오히려 끄는 쪽이 퍼포먼스에 좋은

경우도 있다)

2) Dynamic Batching(동적 배칭)

움직이는 object가 해당. 정적 배칭에 비해 조금 더

무겁게 처리된다.

3) Project의 batching을 활성화 할 경우 별도로 체크

하지 않더라도 자동으로 활성화 된다

Page 13: Gametech2015

- Mesh animation

Skinned 되지 않는 mesh에 움직임을 부여하는 작업. unity3D animation 윈도우나 3D tool(3DS MAX or

Maya)에서 작업해서 사용. Unity3D는 vertex animation은 지원하지 않으나 mesh animation은 지원한다.

병사 말의 skinned mesh 숫자를 줄이기 위해 사용하여 dynamic batching을 적용

Unity Animation Window

Mesh, Material animation등을 제어할수 있으며 만들어둔 클립을 object에 드래그하여

붙임으로 손쉽게 제어할 수 있다.

Page 14: Gametech2015

영웅유닛용 말

스킨된 메쉬로 구성

Drawcall : 1

Probe light 사용으로

Batching 불가.

최대 scene에 5unit

등장.

병사유닛용 말

Mesh animation 사용

Drawcall : 12

동적배칭 사용

Probe light 미사용

결전맵에서 산술적으로

최대 50unit까지 등장.

Page 15: Gametech2015

MJT Project 영지전 전투 statics : 스킬 사용시 왼쪽 상단에 영웅에 근접한 카메라를 로드하여 연출하는 씬.

Page 16: Gametech2015

- Shadow(그림자)

등장하는 유닛이 많아 화면에 그려지는 양이 엄청나므로 처음부터 plan texture를 쓰는것 부터 고려

Skinned mesh의 경우 초기부터 넣어서 사용하기 시작했으나 건물 프랍의 경우 중반까지도 고심. 디바이스 체크후 써

도 되겠다는 결정후 사용하기 시작

케릭터의 경우 일괄적으로 원으로 된 texture만을 사용하였으나 건물 프리팹의 경우 사각형과 원 두가지를 사용

Page 17: Gametech2015

- LOD

Level of Detail.

초기에는 사용을 고려했으나 poly

counter 감소에 따른 FPS변화가 그리 크

지 않고 아트 퀄리티만 나빠지는 결과가

예상.

많이 생성된 건물 프리팹(건물당 6~10

개 정도의 레벨 디자인)을 제작하게 되어

스케쥴상 비효율적으로 판단(컨셉+모델

링+TA = 1人)

케릭터 쪽 역시 별도의 LOD 메쉬 제작 및 애니메이션 작업 인원이 부족으로 힘들것으로 판단(애니메이션+이펙트 = 1人)

좀 더 쾌적한 퍼포먼스 확보를 위해서는 적용시키는 것이 좋았겠지만 타겟 디바이스 구동시 LOD를 적용하지 않더라도 플

레이가 가능한 퍼포먼스가 나와 작업하지 않음

Page 18: Gametech2015

- Shader 및 probe light

Project의 shader는 모두 별도로 제작하여

사용

(particles에 additive 등 몇가지는 unity 기본

shader사용)

Cg shader 기반의 1 pass shader가 대부분.

케릭터의 경우는 probe light를 사용하게 되

었다(병사용 말의 경우 동적 배칭 때문에 사

용하지 않음

Page 19: Gametech2015

Character shader : 케릭터 셰이더는 기본적으로 probe light를 사용하

는 쪽으로 결정. Scene 내에 많은 숫자(최대 100~120 unit)가 그려지

기 때문에 병사 유닛의 경우 최대한 가볍게 , 영웅 유닛은 전투 화면과

관리 메뉴 양쪽에서 잘 보여야 함

Character Diffuse : 케릭터 기본 shader.

TransparentCutout : alpha source를 사용하는 shader.

CharacterSelfIllumination : 발광하는 효과를 가진 무기, 갑옷 등 장식

및 효과가 필요한 유닛에 사용

SelfilluminBlend : 반투명 몬스터등을 위해 사용. One One으로 제작하

였기에 확대할 경우 부분적으로 뒷면이 보이는 문제가 있으나 작게 그

려지기에 1 pass 방식을 그대로 사용.

좌 : 1 pass로 그린 결과물, 우 : 2 pass로 그린 결과물

참조 : 대충 살아가는 게임개발자(대마왕님 블로그)

Page 20: Gametech2015

결전맵에서 낮 scene과 밤 scene의

probe light 영향 비교

Page 21: Gametech2015

부대편성 화면

Page 22: Gametech2015

유니티 공식 문서에 들어있는 WrapDiffuse코드

실제 적용된 이미지 비교

Character 피부톤을 좀 더 산뜻하게 보여지는

방법을 고심하다 wrap diffuse를 적용해 보기

로 해보았음.(Toon lamp를 고민하다 유니티

공식문서에 나와있는 코드를 참조)

기왕 넣는거 Rim light도 넣어서 테스트

Page 23: Gametech2015

http://jeanmoreno.com/matcap. Asset store에서 받을수 있다. 심지어 무료~!

Page 24: Gametech2015

각 shader test 비교 스샷

Matcap shader 코드는 JP Lee

님. 소스는 unity Asset store의

matcap shader 소스 사용

Page 25: Gametech2015

터치로 확대 축소 및 회전이 가능한 화면

좌 : Probe light / Lambert

우 : Probe light/ Rimlight / WrapDiffuse

배경 이미지의 깃발은 shader animation

으로 깃발이 펄럭이도록 제어

Page 26: Gametech2015

- Lightmapping

Defense Technica mobile

stage list

iphone 4를 제외한 모든 모바

일 디바이스에서 lightmap을

사용하여 발매

퍼포먼스에 크게 영향을 주지

않으며 scene을 보다 풍부하

게 표현해줄 수 있는 있음. 또

한 probe light와 조합하여 사

용할 경우 보다 풍부한 표현을

할 수 있음

Page 27: Gametech2015

배경

영지맵, 결전맵, 탐험맵의 3종류를 주야로 조명만 달리

하여 제작

영지맵, 결전맵, 탐험맵의 3종류를 주야로 조명만 달리

하여 제작

Lightmap size는 작은 prop이 많기 때문에 1024x1024

를 사용(lightmap texture size를 더 줄일경우 퀄리티 저

하가 드러남)

Page 28: Gametech2015

Prop의 경우

대부분 Unlit Diffuse, Unlit Transparent

Cutout 사용.

파티클은 전투시작시 자동으로 꺼짐

Page 29: Gametech2015

- 연출

Texture atlas를 이용해 UV 이동으로 배경 프랍이 작동할때 연출을 표현.

Prop이 scene에서 서서히 사라지는 효과를 위한 shader

Page 30: Gametech2015

- texture option

Character 및 배경은 ETC로 압축된 texture를 기본으로 사용. 타겟 디

바이스가 S3(1280x1024)였기 때문에 너무 작은 texture 사용은 지양

ETC로 압축된 texture의 경우 해상도 변경에 따른 용량 증가가 크게 부

담될 수준은 아니라고 판단(1024x1024의 경우 0.7MB)

반면 UI에 사용되는 texture의 경우 RGBA 16bit만으로도 4배의 용량

을 차지하게 됨. 알파영역을 가진 PNG파일의 경우 디더링으로 인한 품

질저하 때문에 RGBA 32bit를 사용할 경우 8배의 용량을 가지게 됨.

Page 31: Gametech2015

케릭터 정보창 배경에 쓰인 이미지의 각 texture compressed option에 따른 용량. Alpha영역이 없더라도 ETC와 RGBA 24bit와의

texture size는 6배 차이가 난다. 화면 전체를 그리는 큰 이미지이므로 RGBA 24bit를 사용했다.

- texture compressed option에 따른 texture quality 비교

Page 32: Gametech2015

Keijiro 씨의 texture compression plug-in

16bit RGBA 이미지의 디더링 현상을 개선시

켜준다.

이미지 자체를 변경 시키므로 롤백이 안된다.

UI 담당 디자이너가 툴을 이해하고 직접 엔진에 올리

면서 작업하지 않을경우 별도의 담당자 필요.

셀 채색 방식의 이미지는 괜찮은 효과를 보여주지만

그렇지 않을경우 이미지가 뭉개지는 현상 발생. 결국

사용하지 못함

Page 33: Gametech2015

Advanced option에서

Mipmap 적용으로 인해 정보창에서 케릭터 얼굴의 디더링

증상때문에 케릭터 텍스쳐의 경우는 mipmap을 사용하지 않

배경의 경우 mipmap 적용 여부를 개발 중반부까지 고심하

였으나 test 결과 케릭터에 비해 스케일이 다양하게 보이는

점과 전체 유닛들을 모였을때 지글거림이 눈을 피로하게 한

다는 느낌으로 mipmap을 사용하였으나 filtering 방식을 기

본 BOX에서 Kaiser 방식으로 변경.(결고물에 따라 끄거나

옵션이 다르게 셋팅)

유닛 합성 창에 사용되는 바닥 texture의 경우 Aniso level과

Filter mode를 조정.

Page 34: Gametech2015

Daikon forge

저렴하다(sale할때 구매)

NGUI에 비해 완성도가 낮음.

UI를 위한 미들웨어보다 라이브러리 모음집 같은 느낌

NGUI와 대동소이한 기능

초심자에게는 사용하기 좋음

퍼포먼스가 나오지 않음

자잘한 버그가 많음

현재 UI 사업 철수

UI programming

NGUI

전통의 강자

버그가 적음(버젼업할수록 개선)

사용자 편의성이 좋음

퍼포먼스가 잘나옴

Page 35: Gametech2015

Server programming

유닛 연산 서버로 전송 결과 산출 디바이스에 전송 결과 반영

클라이언트의 연산을 서버로 가져오는 구조를 취함. 이로 인해 클라이언트에서 연산의 많은 부분을 비쥬

얼 퍼포먼스에서 확보 할 수 있었음

화면에 등장하는 유닛의 숫자가 많기 때문에 클라이언트 연산을 최대한 분산하기 위한 해결책으로 개발

(서버쪽 작업 진행여부에 따라서 수시로 타겟 디바이스에서 퍼포먼스 체크)

연산, 충돌처리, 길찾기 등 전투에서 발생하는 많은 부분을 서버에서 처리 해줌으로 퍼포먼스 확보. 전투

에서 서버에서 처리되는 부분에서 지연되는 현상을 줄이기 위해 여러 방법 고려(패킷 줄이기, 쓰레드 추

가 등)

Page 36: Gametech2015

제작 후기

- 프로젝트 중반까지 계속해서 FPS(Frame per second) 체크. 화면에 올려서 구동되는 것 만으로는 안정

적으로 구동되는지 확인 할 수 없기 때문에 명확해지는 단계까지 계속해서 체크

- engine version up에 다른 변동 사항 체크. 대규모 마이그레이션은 프로젝트 진행상황에 맞춰서 결정할

- build 용량은 프로젝트 성격에 맞춰서 결정. 가이드가 분명하다면 프로젝트 퀄리티가 떨어지는 부분을

명확히 인지하고 작업

- 프로젝트 진행 단계에서 리소스 작업 가이드를 분명하게 결정하고 진행(불필요한 리소스를 최대한 줄여

낼 수 있다)

- poly counter, texture size를 줄인다고 퍼포먼스가 무조건 좋아지지 않는다.(타겟 디바이스에서의 프레

임 레이트 체크 및 profiler 활용)

- batching 과 mipmap의 사용 여부는 프로젝트 성격에 따라서 결정.

Page 37: Gametech2015

향후 전망

Apple metal API

Nvidia Shield

Cloud Gaming(NC soft Lineage Enternal)

High Quality 2D Games

Page 38: Gametech2015

FireMonkeys Studio

Mint 3D Engine(2013)

Madfinger Games, ShadowGun

Unity3D Engine(2011)

Midoki, Plunder Pirates

(2015)

Chair Entertainment, Infinity Blade

Unreal 3 Engine(2010)

AimToG, Angel in the Sky

Unreal 4 Engine(미정)

Page 39: Gametech2015

Unreal 4

월 $19의 가격 정책을 취하다 완전 무료화 선언

분기별 게임 또는 애플리케이션당 $3,000(약 310만원 연간

1200만원 가량)를 초과한 매출의 5%를 지불 혹은 별도의 라

이선싱 계약 체결

Unity 5

대부분 기능은 무료로 개발 가능

Free 버전은 이전 회계연도 기준 연간 총수입이나 예산이 US

$10만을 초과하는 기업, 아카데미, 비영릴 또는 정비 기업의

경우 프로 라이선스 사용 불가.

Pro version 월$75 or 165만원

IOS, Android add-on 각 165만원.

기존라이센스 업그레이드 82만5천원

Page 40: Gametech2015

단점

상용 엔진의 무료버젼 베포로 인해 접근성은 높아졌으나 필요한 인력을 여유있게 구성할 정도로 여력이 있

는 개발사가 많지 않음.

개발기간을 여유있게 확보하기 힘들기 때문에 프로토 단계에서의 충분한 테스트가 쉽지 않음.

높아진 게임 퀄리티로 인한 시장에서의 요구치는 올라갔으나 수익은 기대하기 쉽지 않은 상황.(MMORPG가

많이 개발되던 시기와 같은 딜레마가 모바일 개발환경에서도 발생)

Page 41: Gametech2015

게임 3D 배경 아티스트(Game 3D Environment Artist Forum) https://www.facebook.com/groups/3Dbackground/

Page 42: Gametech2015

Yi SangYun(3D Environment Artist, TA) [email protected] +82 01 9313 0583

Q&A 終