2. - Contents -
1. Defense Technica?
2. Unity3D
3. Graphic 관련 issue들
4. Scaleform 적용
5. 기획, 프로그래밍 파트와의 협조사항
6. 마치며
7. Q&A
3. Defense Technica
㈜쿠노 인터렉티브에서 제작한 3D 디펜스 게임
。 IOS 출시(2013. 6), Android 출시(2013. 8)
Steam (2013. 10)
XBOX live(2014. 4)
PSN(2014. 4)
4. Sci-fi style의 Tower Defense game
적 유닛의 침입 루트를 변경할 수 있는 길
돌리기, 유닛과 타워의 상성, 속성, 맵변형
등을 부여한 전략성 요소가 강조된 디펜스
게임
。 효율적인 멀티 플랫폼 제작 : 콘솔
에서 모바일까지(KGC2012)
。 Defense techinca mobile
converting 후기(KGC2013)
6. 장점
。직관적인 인터페이스, 거기다 Drag and Drop으로 자동 import 및 변동 가능
。프리팹 제작이 용이. 리소스 관리도 엄청 편함.
。대부분의 파일 포맷을 지원(DDS 파일 제외, 별도의 import없음)
。그래픽 퀄리티가 가격대비 성능으로써는 매우 훌륭함.
。lightmapping작업이 상당히 빠르고 간편하게 가능.
。간단한 animation 작업은 엔진내부에서 간단하게 작업 가능.
。필요하면 script 소스 가져다 붙여 써도 됨.(게다가 검색하면 리소스도 많이 나옴)
。강력한 profiling 기능(작업중 수시로 확인 가능)
。빌드조차 간단.(프로그래밍 파트 지원을 받으면 리소스 변경후 직접 빌드 후 확인 가능)
9. Animation
material 및 object의 변화를 animation clip으로 간편하게 제어할수 있음
맵변형 및 발광하는 오브젝트의 발광정도, 움직임까지.
퍼포먼스에 크게 영향을 주지 않아 모바일에서 많이 사용.
10. 단점
。PSD 파일 기반의 alpha가 포함된 texture가 제대로 표시 안되는 경우 발생(Specular map)
- Tiff 포맷으로 사용(콘솔), TGA로 별도로 작업(모바일)
。Terrain 무거움. Collision 무거움
。메모리 누수. Unity3D 관련 이슈들 중에 가장 많이 언급되는 부분.
unity3D로 풀3D web MMORPG 만들기 - 정종필유니티가 당신에게 알려주지 않는 것들 - Dustin lee
13. 좌표계가 다르다~!
。Y-up 기반의 좌표계를 가지고 있음(Maya와 동일)
MAX에서 그냥 (0,0,0)으로 export시 x축으로 -90도 돌아간 상태로 import 됨.
맥스에서 export시 축을 90도 돌려서 export
Group 및 오브젝트 모두 이렇게 작업
프로젝트에 따라 TA가 export tool을 MAX에서
script로 구현해서 쓰는 경우도 있음
14. UV mirroring
UV 미러링의 경우 meshes 옵션을 조정해서 사용.
Normalmap을 쓰지 않으면 고민하지 않아도 될 문제
일정 문제로 이런 방식 선택
15. 리소스 최적화
PS3, XBOX360에서 구동시 문제 발생. 리소스 최적화 필요
폴리싱 작업
Shader 수정(shader 수정으로 전체 shader의 세부 옵션 값 조정. Lightmap 재작업)
Lightmapping 방식 변경. Directional lightmapping >> single lightmaps
불필요한 메쉬 제거.
맨 상부 mesh의 texture 블렌딩 처리(UDK의 Linear Interpolate와 유사)
Fog는 생각보다 퍼포먼스에 영향을 덜 주더라..(모바일도 마찬가지)
16. 모바일 개발의 첫 인상
。 PC에 비해 작은 화면, 낮은 3D 그래픽 성능이라는 인식
。 터치가 가능한 화면과 조작(손가락으로 드래그, 클릭, 핀투줌)
。 가장 좋은 경우는 콘솔 버전의 데이터를 그대로 모바일에 올리고 UI만 바뀌는 경우
☞ 테스트 결과 가능은 했으나 대부분의 기기에서 구동 불가.
(모바일에 올리기엔 너무 무겁다…. 그리고 IOS 타겟 머신중 iphone 4가…)
。 타겟 머신 선정과 기존 DATA의 최적화의 기준에 대한 고민이 필요
17. IOS
• 비교적 규격화된 해상도
• 제한사항 : iphone 3GS, i-PAD1에서는 낮은
메모리 용량때문에 구동불가(탈옥시 구동가능)
• I-PAD2부터는 비교적 원활한 플레이 가능
(해상도 차이로 3가 2보다 낮은 퍼포먼스)
• iphone4 : 4S부터는 3D 그래픽 성능 또한 비약적으로
상승하였으나 4의 경우 3GS에 비해 늘어난 해상도에
비해 낮은 그래픽 성능으로 퍼포먼스 저하 발생(가장
이슈가 되었던 기기.. 그냥 빼면 안될까요..)
18. Android
• Android 개발의 가장 큰 이슈
다양한 해상도 지원에 대한 기준 선정
• 낮은 성능의 기기에서부터 고성능 하이엔드 기기
까지 다양한 기기 존재
• 제조사 firmware 업그레이드가 되지 않은 경우 지
원이 되지 않는 경우 존재(Android 2.3 진저브레
드부터 구동) : 일부 최신 기기에서 구동이 되지
않는 상황 발생
• 특정 기기에서 구동되지 않는 문제(Shader 문제 :
통칭 보라돌이).
• Scaleform 사용을 고려하게된 이슈이기도 함
Samsung Galaxy Series resolution
S, S2, K, A, U : 480x800
Note 2, S2 HD LTE, S3 : 720x1280
Note : 800x1280
S4 : 1920x1080
19. Android
QHD의 등장(2560x1440). 27인치 이상의 LCD 모니
터의 해상도와 동급. 노트4도 비슷한 해상도 예상
iOS
iPad Air, Retina, mini retina : 2048x1536
6에서 1920x1080 or 2272x1280 예상(2014.2)
갈수록 고해상도화 되어가는 기기에 대해 대응 방식
을 결정할 필요성 존재.
20. Pixel size의 변화
Mobile 해상도가 초기 기기들에 비해 고 해상도화가 진행.(FHD, QHD까지)
(S4의 경우 23, 24인치 모니터와 동일한 해상도를 5인치 정도의 화면에 가진다 – 1920x1080)
화면크기가 1/5 수준으로 줄어들지만 해상도는 변함이 없다.(24인치 기준 0.27mm>>0.05mm)
픽셀의 수가 줄어들어 화면이 작아지는 것이 아닌 pixel 크기 자체가 줄어들었음
작은 화면이라고 Texture resolution을 낮게 작업했다가는 pixel이 다 늘어난 흐릿한 화면을 볼 수 있다.
게임에선 Mipmap이 적용되므로 texture size는 적절하게 작업 후 최종 빌드에서 용량을 맞추기 위해 조절
대부분의 Texture resizing 없이 진행(Normal, illumination map을 쓰지 않아서 전체 맵 숫자는 줄어듬)
15인치 1024x768 : 786,432 pixels
24인치 1920x1080 : 2,073,600 pixels
3.5인치 : 640x960 : 614,400 pixels(iphone 4)
5인치 : 1920x1080 : 2,073,600 pixels(S4)
21. Graphic 관련 issue들
Shader
• Bumped specular , Blend shader 사용하지 않음
• Illumination이 적용된 shader는 Tower에만 적용
(배경에서는 lightmap으로 대체)
• Diffuse color는 Vertex color 적용 되는 것과 그렇지 않은 것을
구분해 사용(Lightmap, LightmapVertexColor)
22. Alpha channel이 포함된
texture의 경우 자동으로
RGBA 16bit으로 저장됨
Transparent texture 사용시 품질 저하에 따른 이슈
사용자가 Tegra 같은 어떤 특정 하드웨어를 목표로 하지 않는다면 저희는 ETC1 압축 사용을 권장합니다. 필요할 경우 외부(external) 알파 채널
을 저장할 수 있으면서도 낮은 텍스쳐 종류의 이득을 받을 수 있습니다. 만약 사용자가 반드시 텍스쳐에 알파 채널을 저장하길 원하면 모든 하드
웨어 공급 업체에서 지원하는 압축인 RGBA16 bit을 사용하세요.
사용자 앱이 지원되지 않는 텍스쳐 압축(compression)을 사용하면 그 텍스쳐는 RGBA32로 무압축(uncompressed)되며 압축된 것들과 함께
메모리에 저장이 됩니다. 그래서 이 경우 텍스쳐의 압축을 푸는데 시간을 잃게되며 두번의 저장으로 인해 메모리 손실을 봅니다. 이것은 또한 렌
더링 성능에도 아주 부정적인 영향을 줄 수 있습니다. - Unity 공식문서 中
ETC 4 bits로 저장시
170.7kb 42.7kb
23. IOS에서는 자동으로 PVRTC 4bits
포맷으로 texture가 compressed
됨
Transparent texture 사용시 품질 저하에 따른 이슈(IOS)
PVRTC는 오로지 2의 n승으로만 texture를 사용되기 때문에 비정방 texture의 경우 IOS 포팅시 이미
지가 제대로 표시 안되는 증상 발생
매핑 소스의 경우 UV 좌표값에 의해 일그러짐에 상관없이 화면에 그려지나 UI의 경우에 제대로 표
시 안됨
모든 UI 이미지 소스 재작업
24. Mobile stage 30
Transparent texture 품질 저하에 대한 해결
기술문서의 가이드대로 alpha channel이 포함된
texture의 경우 alpha channel texture를 따로 제작
(이렇게해도 ETC compressed 된 texture 두장이
RGBA 16bit texture 한장의 용량보다 작음)
Alpha channel을 따로 적용받는 Shader 제작
※ 배경 파티클 소스의 경우, 그냥 사용되었음
Mobile stage 11
25. Core Unit 수정
Console core unit
• 모바일 염두가 없던 단계에서 제작된 유닛이라 수정하기 힘
든 상태로 모델링/매핑이 되어있음
• 모델링 우선 수정(1/3수준), 매핑 재작업 (Texture, UV)
• Core effect 및 애니메이션 전부 재작업
• 처음부터 모바일 플랫폼을 고려했다면 좀 더 짧은 시간에 작
업이 진행되었을 것으로 생각됨
4006 tris 1450 tris
Mobile core unit
Console Core Unit diffuse texture Mobile Core Unit diffuse texture
26. Tower Unit 수정
• Poly counter를 줄이는 작업대신 모바일용 타워를 새롭게 제작
• 같은 계열 타워는 하나의 texture 소스로 통합하여 사용(color는 illumination color로 구분)
• 작게 보이는 화면 특성상 유닛 특성을 실루엣으로 보여지도록 디자인
• 높은 단계의 Tower를 먼저 모델링하고 줄여나가는 방식으로 작업
console machine gun tower
mobile machine gun tower
27. Enemy Unit 수정
• Poly counter는 콘솔단계에서 최적화 작업이 진행 되었기에 별도의 작업을 하지 않음
(콘솔 최적화 관련 이슈)
• Bumped specular shader Diffuse shader로 변경
• LOD 작업 추가.(작업중에 Unity 버젼업으로 LOD 추가~!)
28. Animation 수정
Mobile versionConsole version
촉수형태의 Unit이라 가장 많은 joint 개수를
가진 타워(Melee type tower unit :
Electro tentacloid)
Animation Joint 개수 수정
불필요한 모션 간소화.
(심지어 4단계에는 이펙트까지 붙어있음)
29. 그대로 쓰기는 무리라 판단 모든 스테이지를 모바일 퍼포먼스 가
이드에 맞추어 수정 결정(stage당 6,000 poly counter)
Stage 모바일 버전으로 수정
Console stage list
Mobile stage list
30. 메인 스테이지 : 20개
DLC 1차 : 8개
DLC 2차 : 8개
콘솔 작업시 스테이지당 평균 2~3주
모바일 스테이지당 : 평균 2.4일. 중간에 문제 생겼을시
스테이지 하나당 1.5일안에 작업해야 하는 상황
lightmappingUV 직접 펴야 됩니다…!!!
Maya(layout기능), 각종 plug-in, add tool 등..
결론 : 직접 작업하는게 가장 잘나옴…
IOS stage 20 출시 + DLC 1차 패치
Android stage 20 + DLC 1차(8개) 포함 출시
한땀. 한땀. 알지?
오빠 궁서체다.
31. Lightmapping
Unity는 Beast Engine 내장
Steam : Directional lightmapping
PS3, XBOX360 : Directional lightmapping >> Single
lightmap.로 변경
Generate lightmap UV check로 2nd UV 작업 없이 진
행. DLC만 직접 작업
Android, IOS : Single lightmap
☞ IOS 포팅시 lightmapping UV가 어긋나는 증상을 확
인. 개선 방법을 찾는 것이 일정상 무리 및 적은 사이즈
로 좋은 퀄리티를 내기 위해 직접 작업하기로 결정
※ 이 문제는 Unity3D 버전 업으로 개선되었음
결국 나중에 Steam, PS3, XBOX360 모두
lightmapping은 재작업.(기기별 특성 존재)
Console stage 09
Mobile stage 09
32. Light mapping texture size의 최적화
Generate lightmap UV option을 사
용하지 않고 맥스에서 직접 lightmap
channel UV 작업후 export
Directional lightmaps
Steam(2048x2048)
Single lightmaps
XBOX, PS3(1024x1024)
Android, IOS(512x512, 512x256)
33. 2nd UV 활용을 위한 Light mapping
Console DLC stage 26
UDK3 에서처럼 resolution 설정만으로는 lightmap scale을 조절할 수 없고 lightmapping menu의 Scale in Lightmap으
로 조절.
34. Fog의 사용
모바일 콘솔 모두 사용
퍼포먼스에 크게 영향을 미치지 않음
파티클 플랜과 적절히 섞어 사용시 좋
은 효과
Console Stage 24
35. Blender shader의 대체
Console stage 14 mobile stage 14
콘솔버젼에서 마스킹된 texture를 사용한 blending된 texture로 바닥을 표현하였으나 mobile에서는 사용하지 않기로 결정
분위기에 따라 stage별 수정한 Texture와 수정되지 않은 texture를 모두 사용하여 분위기 연출
36. Blender shader의 대체(2)
Console stage 17 mobile stage 17
Texture 한장을 더 써서 blending 된 것처럼 처리
Water shader는 Unity3D에서 지원하는 shader 그대로 사용(iphone 4에서는 transparent texture로 작업된 플랜으로 대체)
37. Illumination shader 대체
스테이지 카메라 각도에 따라 2개 이상은 point
light를 배치하여 연출
Console stage 01 Mobile stage 01
타워와는 달리 배경 Asset에 대해서는 발광하
는 부분에 대해 illumination shader를 사용하
지 않고 point light를 배치하여 lightmapping
texuture에 빛이 그려지도록 하여 발광하는 표
현.
Mobile stage 31
고정된 카메라 각도에 따라 플레이가 이루어지
므로 씬에 따라 라이팅 배치를 조절
38. Probe lighting
Probe의 배치는 콘솔과 크게 다르지 않음
Probe light에 영향을 받는 prop이 Bumped
specular일때와 diffuse만 받을때 차이가 발생
하기에 적정값을 확인하면서 Light의 세기를 조
절하여 baking
기기 성능에 따라 Use probe lighting 옵션을
제어하여 퍼포먼스 확보(iphone 4)
Mobile stage 01 Console stage 01
Use light probe On Use light probe Off
39. Lighting 톤 변화를 활용한 stage 연출
Mobile stage 11 Mobile stage 36
Mobile stage 28 Mobile stage 31
40. Unit Effect 수정
Mobile flame tower effectConsole flame tower effect
파티클 단순화. 파티클
수 최적화
다량의 파티클을 하나의
플랜으로 처리(연출 자체
의 변화로 최적화)
Mobile mortar tower effectConsole mortar tower effect
파티클의 입자 감소/최적화
41. Core Effect 수정
Console core 파괴 연출 effect
Mobile core 파괴 연출 effect
강렬하게 연출한 effect 효과를 최대한 단순하게 표현. 연출 시간도 간소화
43. Scaleform 사용 후기(장점)
다양한 해상도의 모바일 기기의 대응을 위한 해결책으로 사용
• 장점
• UI상에서 effect 처리/배치를 UI 디자이너가 프로그래머를 통하지 않고 직접 작업이 가능함
• 검증된 생산성(스케일폼이라는 미들웨어를 통한 UI 작업)
• 모바일 기기의 다양한 해상도에 신경쓸 필요가 없다(약간의 script 설정은 필요)
• 언어(localizing 관련) 작업이 수월
• 프로그래머가 직접 UI 배치를 하지 않아도 되니 좋다
44. Scaleform 사용 후기(단점)
• 단점
• 모바일에서 제약이 사항이 많다.(PC에서 사용가능하나 쓰지 못하는 기능이 있음)
: 프로그램 안정화가 안되서 생기는 듯(기기별 작동하기도 안하기도 하는 문제)
• 미구현 기능이 많고 예정 기능이 많다.(언제 구현될지 미지수)
• 프로그래머가 도와주지 않으면 디자이너가 직접 scripting을 해야하는 부담
• 작동에 관한 개선/구현에 대해 전달이 명확하지 않으면 프로그래머측에서 혼선을 가질 수 있음
• 화면 비율에 따라서 이상하게 보일 수 있다.(재작업을 통해 보완이 필요)
• 모듈이 불안정. 무비클립을 확실히 제거해 주지 않으면 메모리에 계속 남아있다(메모리 샌다는 이야기가 많음)
45. 기획 파트와의 협조사항
。 Stage level design의 특징과 경험은 유지하면서 size를 줄이는 문제
。 Performance 저하 구간에서 wave time을 조절함으로써 한 화면에 그려지는 mesh양을 조절
(콘솔에서처럼 한 화면에 그려지는 적 유닛의 숫자가 너무 많아 퍼포먼스가 저하되는 이슈에 대한 대응)
。 더불어 난이도 조절(시스템적으로 조절하는게 기준)
。 모바일 유저 특성에 맞추어 난이도 하양 조정(그래도 재미는 있는데 어렵다는 평…)
QA 피드백에 의해 stage에서 조
작에 방해되는 요소의 수정
Stage 01의 tutorial scene
play화면
46. 프로그래밍 파트와의 협조사항
。 Transparent texture의 사용 조절
(사용된 prop을 따로 관리하여 기기에 따라 켜고 끌수 있게 제어) iphone 4
。 Unity3D profiler를 활용하여 퍼포먼스 체크
。IOS, Android 각 OS에서 지원하는 profiler를 통해 memory와 frame rate 를 체크해서 적정 Art resource 수준을 결정
Game 화면의 stats창으로 코스트 확인
기기 성능에 따라 FX 를 켜고 끌수 있게 제어
47. 마치며…
• 모바일화 작업은 그냥 DATA를 모바일에 맞게 바꾸는 작업이 아님
멀티 플랫폼 대응을 사전에 충분히 고려한 작업 프로세스를 만들어야 함
: Technical art issue에 대해 TA 혹은 프로그래머와의 긴밀한 협조
• 무조건 간단하게, 최소한으로 작업하기보다 타겟 머신(Target machine)을 분명히 설정하
고 그 기기의 스펙에 맞는 적정 퍼포먼스 코스트를 결정하는 것이 중요
• 실제 게임에서 필요한 퀄리티와 담당 작업자가 원하는 퀄리티 차이에 대해 고려해볼 필요
성(비쥬얼 퀄리티와 퍼포먼스 퀄리티의 차이에 대한 이해)
• Art process상에서 살릴것은 살리고 버릴것은 버리는 과감한 결단성이 필요
48. 게임 3D 배경 아티스트 -
https://www.facebook.com/groups/3Dbackground/
49. Q & A
이 상 윤(현재 백수)
illustor@gmail.com Special thanks to
적극적으로 ppt 제작에 피드백 해주신 동료 분들
디펜스 테크니카를 응원 해주셨던 많은 분들께 감사 드립니다.
終