SlideShare a Scribd company logo
‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기
- Unity3D 에서 2D게임 최적화 하기
넥슨 마젤란팀
임석의
60프레임
발표일 : 2013-04-24
발표 장소 : COEX CONFERENCE HALL 3F 308호
Twitter : @olambdao
Mail : olambdao@gmail.com
2013NDC에서 발표한 공개용 발표자료이며, 발표자료
이해를 돕기위해 필요한 부분에 설명을 넣었습니다.
초심자를 위한 디딤돌
퍼즐주주 개발
– for KakaoTalk
– @ NEXON PLAY
– Kindle Fire
Zoo Invasion 개발
2012:서울 개발
임석의
퍼즐주주 이야기
퍼즐주주?
넥슨 최초의 카카오톡 게임
구글 플레이 싞규 무료 1위
앱스토어 인기 무료 1위
이랬던 퍼즐주주가 읷주읷만에…
“결제를 하다가 죽네”
“약관동의 받다가
게임이 꺼지네?”
“느려서 못하겠네…”
“허허~ 잘 되던게
갑자기 안되네?”
그래서 최적화를 했다
최적화 목적과 목표
메모리 사용량은 낮추고
CPU 사용량도 낮추고
초당 프레임 수는 더하자
그럼 타겟 디바이스는?
플래그쉽 스마트폰
최초의 보급형 스마트폰
5% 단말기 점유율 (2013년 1월 기죾)
갤럭시S1
Galaxy S1, S2, Note
60% 단말기 점유율
사실… ‘갤럭시S1’ 에서 잘~ 돌아갂다면,
어떠한 ‘스마트폰’ 에서도 잘 돌아 갈 것 같은 근거 없는
믿음!
잠시!
그럼 갤럭시S1 에서 최적화 젂의
퍼즐주주는 어떤 상태인가요?
최적화 젂, 갤럭시S1에서 퍼즐주주는 “게임을 원활하게
돌리기 힘들 정도였다.
메모리가 부족하여 ActivityManager 에 의하여 자동으로
죽고, 20~40 프레임이 나오던 상태
최적화 결과
최적화 대성공!
잘~ 익었습니다!
갤럭시S1에서 발생했던 문제들을 다 해결한 상태,
원활하게 게임을 할 수 있을 정도로 개선이 됨.
로그읶 화면 친구 리스트
Draw Calls VBO Total Textures Memory Meshes Materials Total Objects Audio Memory
Usage
이전
이후
최적화 후 상대비교
그래프가 높을 수록 좋음
최적화 과정
여기서 소개된 최적화 방법은 갤럭시S1에서 60프레임을
만들려고 사용했던 방법임을 알려드립니다.
Logic Object Pool Draw Call
Font UI Sound
프로파일링으로 병목 지점을 파악!
코드를 개선
하지만 퍼즐이란 특성 때문에
눈에 띄는 개선 사항은 없었다.
Logic
Object
Pool
Draw Call
Font UI Sound
오브젝트를 미리 생성하여 재활용 하는 방식
GameObject.Instantiate() is Slow!
Resources.Load() is Slow!
몇몇 이펙트와 사운드에서 렉 발생!
앱 구동시 Sprite, Sound 미리 생성!
자잘한 렉이 사라짐
Logic Object Pool
Draw
Call
Font UI Sound
[Draw Calls 의 정의는 사람마다 조금씩 다를 수 있습니다]
Draw Call
화면에 객체를 그리기 위해,
CPU 에서 GPU 로 명령어를 젂달하는 비용
화가가 그림을 계속 그리기 위해,
붓 또는 팔레트를 교체하는 비용
Unity3d는 비용을 최소화하기 위해
Batching 을 지원한다
단, 객체들은 같은 메터리얼을 공유해야함!
비용을 최소화 해보자!
구퍼즐주주의 Draw Call 은 조금 높은 상태
제가 생각하는 적정 DrawCall 은 1~20 정도, 최적화 젂의
퍼즐주주는 그것보다 많이 높은 상태
하나의 텍스처에 최대한 많은 그림을 넣는다.
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
같은 그림을 최대한 많이 사용!
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
퍼즐주주에서 사용하는 백판
9GRID 로 늘리고 줄이자
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
예시1 예시2 예시3 예시4
이벤트 안내
읷시정지
튜토리얼 하트충전
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
실제로 퍼즐주주에서 사용하고 있는 백판의 모습. 모두
같은 백판을 사용하고 있다.
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
버튼 터치 상태 그림을
따로 사용하지 않기
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
버튼 터치 시 확대
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
흰색 톤의 그림에 색칠 하기
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
색칠하여 UI 에 다양성 확보
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
하트충전창 코읶충전창
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
이런 방법을 총 동원하여
1024 x 1024 텍스쳐에 127개의 그림넣는데 성공
• 그림 재활용 하기
• 버튼 스케읷 하기
• 색칠 하기
그 결과 Draw Call 이 절반으로 떨어짐!
Logic Object Pool Draw Call
Font UI Sound
영어한국어 일본어
퍼즐주주는 하나의 클라이언트에서 3개국어를 지원중
한국어 + 영어 일본어
2048 px 2048 px
2048px
2048px
UI Atlas
<
1024 x 1024
Font Atlas
2048 x 2048
배보다 배꼽이 더 큰 상황!
Packed Font!
Packed Font
R, G, B, A channel 에 각각 글자의 형태를 저장하는 방법
[4개의 영역에 저장] [각 채널에 저장]
메모리 사용량을 1/4 로 젃약
1024 px
1024px
Logic Object Pool Draw Call
Font UI Sound
기졲 퍼즐주주는
여러 상태가 보이는 UI
드로우콜
증가
뉴 퍼즐주주는
한 상태만 보이는 UI 로 변경
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기
프레임 드랍현상 해결!
Logic Object Pool Draw Call
Font UI Sound
최적화를 마무리 하던 도중…
갤럭시S1 에서 사운드를 켰을 시,
60에서 30프레임으로 떨어집니다…
[갤럭시S1 Audio 프로파일링]
혼자서 30% 를 차지
그랬던 것이다.
메모리를 절약하고자 압축한 사운드는
CPU 를 잡아 먹고 있었다...
?
그렇다고 압축을 하지
않으면 메모리가
늘어나고…
진퇴양난
비압축 사운드
빈도수가 높거나 느리면 앆됨
• 우주선 효과음
• 블록 효과음
• 파괴 효과음
• 동물 효과음
압축 사운드
빈도수가 낮거나 느려도됨
• 배경음악
• 부스터 발동 효과음
• 유아이 효과음
사운드 자르기
Mono 사운드
스마트폰의 스피커는 모노스피커
2D Sound
퍼즐주주는 2D Game!
사운드 자르기
- 필요없는 부분은 과감하게 삭제
[갤럭시S1 Audio 프로파일링]
이젠 10% 를 차지
메모리와 CPU 사용량을 줄여서
퍼즐주주 60프레임 성공!
필요할 것 같아서 만들어본
요약
로직
큰 개선은 없었다
Object Pool
잘 적용하여, 렉을 없앨 수 있었다
Draw Call
9Grid로 그림 재사용
버튺 터치 시 확대
흰색 톢 그림에 색칠
Font
PackedFont 를 이용하여, 용량을
1/4로 죿일 수 있었다.
UI
한 상태만 보이도록 구성
Sound
압축과 비압축을 적젃히 분배
2D Sound, Mono, Trim
THANK YOU
@olambdao
퍼즐주주 관련 섹션
갤럭시S1에서 풀프레임 퍼즐주주 만들기
Speaker: 임석의
수요일 11:00
포스트모템: 퍼즐주주 개발을 통해 얻은 5가지 교훈
Speaker: 박병림
수요일 17:40
Amazon Web Service를 활용한 모바읷 게임 서버 개발
- 퍼즐주주 사례를 중심으로
Speaker: 윤석주
목요일 17:40
NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기

More Related Content

PDF
장기기증 권장 프로젝트
PDF
Devtree lightmapping unity5_2_1stday
PDF
NDC2011 - 절차적 지형과 트렌드의 추적자들
PPTX
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
PDF
진선웅 유저수만큼다양한섬을만들자 공개용
PDF
Gametech2015
PDF
[안드앱콘] 1.다양한스크린사이즈
PDF
유니티 게임 그래픽스 아트 개발 사례 분석
장기기증 권장 프로젝트
Devtree lightmapping unity5_2_1stday
NDC2011 - 절차적 지형과 트렌드의 추적자들
영웅의 군단의 테크니컬 아트 - 황재철, 유나이트 코리아 2014
진선웅 유저수만큼다양한섬을만들자 공개용
Gametech2015
[안드앱콘] 1.다양한스크린사이즈
유니티 게임 그래픽스 아트 개발 사례 분석

Viewers also liked (20)

PPTX
박병림 퍼즐주주개발을통해얻은5가지교훈 130424
PPTX
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
PDF
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
PPTX
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
PDF
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
PPTX
Anipang gamification analasys
PDF
[소셜플랫폼 & 소셜게임 컨퍼런스]국내외소셜게임전략
PDF
애니팡 분석
PDF
Unite 2013 optimizing unity games for mobile platforms
PDF
선데이토즈 애니팡_제2회 Hello, Dev.Square 개발자 세미나 발표자료
PPT
All That Puzzle Games
PDF
월 매출 10억 엔을 넘는 초대박 앱을 목표로 삼을 때 필요한 전략 모음 - 데이터×TV CF×앱 -
PDF
Devtree illu
PPTX
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
PPTX
모바일/온라인 게임의 매출시뮬레이션
PPTX
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
PDF
Unity Internals: Memory and Performance
PPTX
[160404] 유니티 apk 용량 줄이기
PPTX
Optimizing unity games (Google IO 2014)
PPTX
[160402_데브루키_박민근] UniRx 소개
박병림 퍼즐주주개발을통해얻은5가지교훈 130424
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
유니티 그래픽 최적화, 어디까지 해봤니 (Optimizing Unity Graphics) NDC15 Ver.
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
AWS Elastic Beanstalk 詳細 -ほぼ週刊AWSマイスターシリーズ第9回-
Anipang gamification analasys
[소셜플랫폼 & 소셜게임 컨퍼런스]국내외소셜게임전략
애니팡 분석
Unite 2013 optimizing unity games for mobile platforms
선데이토즈 애니팡_제2회 Hello, Dev.Square 개발자 세미나 발표자료
All That Puzzle Games
월 매출 10억 엔을 넘는 초대박 앱을 목표로 삼을 때 필요한 전략 모음 - 데이터×TV CF×앱 -
Devtree illu
[스마트벤처 창업학교] 스타트업 프로젝트를 위한 유니티 게임 개발
모바일/온라인 게임의 매출시뮬레이션
[222]딥러닝을 활용한 이미지 검색 포토요약과 타임라인 최종 20161024
Unity Internals: Memory and Performance
[160404] 유니티 apk 용량 줄이기
Optimizing unity games (Google IO 2014)
[160402_데브루키_박민근] UniRx 소개
Ad

Similar to NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기 (11)

PDF
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
PDF
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
PDF
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
PPT
모바일 게임 최적화
PDF
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
PDF
The스프라이트
PDF
Kgc2013 defense technica_converting_이상윤
PDF
[Kgc2013] 모바일 엔진 개발기
PPTX
글꼴 렌더링 이야기
PDF
Unity3D Developer Network Study Chapter.2
PDF
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
[IGC 2017] 넥스트플로어 김영수 - Protocol:hyperspace Diver 개발 포스트모템
[IGC2017] Protocol:hyperspace Diver 개발 포스트모템
multi plaform Full3D MMO 만들기 "삼국지를 품다"의 테크니컬 아트
모바일 게임 최적화
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
The스프라이트
Kgc2013 defense technica_converting_이상윤
[Kgc2013] 모바일 엔진 개발기
글꼴 렌더링 이야기
Unity3D Developer Network Study Chapter.2
스크린 스페이스 데칼에 대해 자세히 알아보자(워햄머 40,000: 스페이스 마린)
Ad

NDC2013 - ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기