Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

Unity3D 에서 2D 게임 최적화 하기

olambdao

April 24, 2013
Tweet

Other Decks in Programming

Transcript

  1. ‘갤럭시S1’ 에서 풀프레임 퍼즐주주 만들기 - Unity3D 에서 2D게임 최적화

    하기 넥슨 마젤란팀 임석의 60프레임 발표일 : 2013-04-24 발표 장소 : COEX CONFERENCE HALL 3F 308호 Twitter : @olambdao Mail : [email protected] 2013NDC에서 발표한 공개용 발표자료이며, 발표자료 이해를 돕기위해 필요한 부분에 설명을 넣었습니다.
  2. 퍼즐주주 개발 – for KakaoTalk – @ NEXON PLAY –

    Kindle Fire Zoo Invasion 개발 2012:서울 개발 임석의
  3. 플래그쉽 스마트폰 최초의 보급형 스마트폰 5% 단말기 점유율 (2013년 1월

    기준) 갤럭시S1 Galaxy S1, S2, Note 60% 단말기 점유율
  4. 잠시! 그럼 갤럭시S1 에서 최적화 전의 퍼즐주주는 어떤 상태인가요? 최적화

    전, 갤럭시S1에서 퍼즐주주는 “게임을 원활하게 돌리기 힘들 정도였다. 메모리가 부족하여 ActivityManager 에 의하여 자동으로 죽고, 20~40 프레임이 나오던 상태
  5. Draw Calls VBO Total Textures Memory Meshes Materials Total Objects

    Audio Memory Usage 이전 이후 최적화 후 상대비교 그래프가 높을 수록 좋음
  6. Logic Object Pool Draw Call Font UI Sound [Draw Calls

    의 정의는 사람마다 조금씩 다를 수 있습니다]
  7. Draw Call 화면에 객체를 그리기 위해, CPU 에서 GPU 로

    명령어를 전달하는 비용 화가가 그림을 계속 그리기 위해, 붓 또는 팔레트를 교체하는 비용
  8. 비용을 최소화 해보자! 구퍼즐주주의 Draw Call 은 조금 높은 상태

    제가 생각하는 적정 DrawCall 은 1~20 정도, 최적화 전의 퍼즐주주는 그것보다 많이 높은 상태
  9. • 그림 재활용 하기 • 버튼 스케일 하기 • 색칠

    하기 같은 그림을 최대한 많이 사용!
  10. • 그림 재활용 하기 • 버튼 스케일 하기 • 색칠

    하기 퍼즐주주에서 사용하는 백판 9GRID 로 늘리고 줄이자
  11. 이벤트 안내 일시정지 튜토리얼 하트충전 • 그림 재활용 하기 •

    버튼 스케일 하기 • 색칠 하기 실제로 퍼즐주주에서 사용하고 있는 백판의 모습. 모두 같은 백판을 사용하고 있다.
  12. • 그림 재활용 하기 • 버튼 스케일 하기 • 색칠

    하기 버튼 터치 상태 그림을 따로 사용하지 않기
  13. • 그림 재활용 하기 • 버튼 스케일 하기 • 색칠

    하기 흰색 톤의 그림에 색칠 하기
  14. • 그림 재활용 하기 • 버튼 스케일 하기 • 색칠

    하기 색칠하여 UI 에 다양성 확보
  15. • 그림 재활용 하기 • 버튼 스케일 하기 • 색칠

    하기 이런 방법을 총 동원하여 1024 x 1024 텍스쳐에 127개의 그림넣는데 성공
  16. • 그림 재활용 하기 • 버튼 스케일 하기 • 색칠

    하기 그 결과 Draw Call 이 절반으로 떨어짐!
  17. UI Atlas < 1024 x 1024 Font Atlas 2048 x

    2048 배보다 배꼽이 더 큰 상황!
  18. 그랬던 것이다. 메모리를 절약하고자 압축한 사운드는 CPU 를 잡아 먹고

    있었다... ? 그렇다고 압축을 하지 않으면 메모리가 늘어나고… 진퇴양난
  19. 비압축 사운드 빈도수가 높거나 느리면 안됨 • 우주선 효과음 •

    블록 효과음 • 파괴 효과음 • 동물 효과음 압축 사운드 빈도수가 낮거나 느려도됨 • 배경음악 • 부스터 발동 효과음 • 유아이 효과음
  20. 사운드 자르기 Mono 사운드 스마트폰의 스피커는 모노스피커 2D Sound 퍼즐주주는

    2D Game! 사운드 자르기 - 필요없는 부분은 과감하게 삭제
  21. 필요할 것 같아서 만들어본 요약 로직 큰 개선은 없었다 Object

    Pool 잘 적용하여, 렉을 없앨 수 있었다 Draw Call 9Grid로 그림 재사용 버튼 터치 시 확대 흰색 톤 그림에 색칠 Font PackedFont 를 이용하여, 용량을 1/4로 줄일 수 있었다. UI 한 상태만 보이도록 구성 Sound 압축과 비압축을 적절히 분배 2D Sound, Mono, Trim
  22. 퍼즐주주 관련 섹션 갤럭시S1에서 풀프레임 퍼즐주주 만들기 Speaker: 임석의 수요일

    11:00 포스트모템: 퍼즐주주 개발을 통해 얻은 5가지 교훈 Speaker: 박병림 수요일 17:40 Amazon Web Service를 활용한 모바일 게임 서버 개발 - 퍼즐주주 사례를 중심으로 Speaker: 윤석주 목요일 17:40