코끼리를 냉장고에 넣는 법 - 최부호, NDC2013

1,599 views

Published on

코끼리를 냉장고에 넣는 법, NDC2013
모바일 MMORPG 개발하기
- 모바일팀 최부호 팀장

Published in: Software
0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,599
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
0
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

코끼리를 냉장고에 넣는 법 - 최부호, NDC2013

  1. 1. 코끼리를 냉장고에 넣는 법 모바일 MMORPG 개발하기. 엔도어즈 모바일팀 최 부호 Sk8geenie@gmail.com
  2. 2. 2009년 8월 엔도어즈 기술개발팀 입사. … 이펙트및 업무자동화, 서드파티 엔진 인터그레이션등등..PC개발자 … 2012~ “삼국지를 품다" 모바일팀…. 모바일개발을 하고자 하는 PC개발자를 위해 작성했습니다.
  3. 3. -멀티 플랫폼 MMORPG “삼국지를 품다“- 머릿말 오늘도 유니티용 이펙트 스크립트를 열심히 제작하고 있었어요. 그러던, 어느날~~~~
  4. 4. -멀티 플랫폼 MMORPG “삼국지를 품다“- 머릿말 유니티가 멀티플랫폼지원 엔진이잖아.. 모바일에도 넣어줘…ㅎㅎ 쉽지? 빨리빨리
  5. 5. -멀티 플랫폼 MMORPG “삼국지를 품다“- 머리말 PC용으로 이미 어느정도 개발되고 있으니 이거 줄여서 쓰면 쉽게 될꺼야…
  6. 6. -멀티 플랫폼 MMORPG “삼국지를 품다“- 머릿말 저…저기 저는 모바일 개발은 처음이에요.. 어쩌지….괜찮을까?.....
  7. 7. -멀티 플랫폼 MMORPG “삼국지를 품다“- 머릿말 저…저기 저는 모바일 개발은 처음이에요.. 어쩌지….괜찮을까?..... 일단은…
  8. 8. 멀티 플랫폼 MMORPG “삼국지를 품다“- 머릿말 - 이렇게 간단하게(?) 시작된 “삼국지를 품다“ (이하 삼품) 모바일 프로젝트.
  9. 9. 멀티 플랫폼 MMORPG “삼국지를 품다“- 머릿말 - 이렇게 간단하게(?) 시작된 “삼국지를 품다“ (이하 삼품) 모바일 프로젝트 - 코끼리(PC용)를 냉장고(모바일용)에 넣는 작업이 진행
  10. 10. 멀티 플랫폼 MMORPG “삼국지를 품다“- 머릿말 - 이렇게 간단하게(?) 시작된 “삼국지를 품다“ (이하 삼품) 모바일 프로젝트. - 코끼리(PC용)를 냉장고(모바일용)에 넣는 작업이 진행. (사실…저도 간단하게 되는 줄 알았어요….ㅠㅠ)
  11. 11. 목차 1.유니티 엔진 업데이트? 2.유니티가 다 해주나요? 3.박대리(배터리)가 조기 퇴근 하는 이유… 4.모바일 플랫폼의 제한된 메모리 5.PC와는 다른 모바일 네트워크. 6.심의? 그게 뭔가요?
  12. 12. 1. 유니티 엔진 업데이트? 1. 유니티 엔진 업데이트? 2. 유니티가 다 해주나요? 3. 박대리(배터리)가 조기 퇴근 하는 이유… 4. 모바일 플랫폼의 제한된 메모리 5. 모바일 WIFI이야기. 6. 심의? 그게 뭔가요?
  13. 13. 업데이트? 헬게이트! 유니티가 멀티플랫폼 엔진이니 다 해주나요?
  14. 14. 업데이트? 헬게이트! 유니티가 멀티플랫폼 엔진이니 다 해주나요? 네~ 거의 다해 줍니다. 멀티 플랫폼 엔진인걸요..
  15. 15. 업데이트? 헬게이트! 유니티가 멀티플랫폼 엔진이니 다 해주나요? 네~ 거의 다해 줍니다. 멀티 플랫폼 엔진인걸요.. 하지만..
  16. 16. 업데이트? 헬게이트!
  17. 17. 업데이트? 헬게이트!
  18. 18. 업데이트? 헬게이트! 안드로이드OS 업데이트의 역사 2008년 9월 23일 안드로이드 1.0 발표 2009년 2월 안드로이드 1.1 발표 … 2010년 5월 20일 안드로이드 2.2 발표 2010년 12월 6일 안드로이드 2.3 발표 2011년 2월 22일 안드로이드 3.X 발표 2011년 10월 18일 안드로이드 4.0 발표
  19. 19. 업데이트? 헬게이트! 안정화 및 기능 추가를 위한 잦은 OS업데이트.
  20. 20. 업데이트? 헬게이트! 안정화 및 기능 추가를 위한 잦은 OS업데이트. OS의 업데이트를 지원하기 위한 필연적인 엔진 업데이트.
  21. 21. 업데이트? 헬게이트! 유니티 업데이트 역사
  22. 22. 업데이트? 헬게이트! 유니티 업데이트 역사
  23. 23. 업데이트? 헬게이트! 유니티 업데이트 역사 2012년4월12일 unity 3.5.1 2012년5월23일 unity 3.5.2 2012년6월29일 unity 3.5.3 2012년7월31일 unity 3.5.4
  24. 24. 업데이트? 헬게이트! 유니티 업데이트 역사 2012년4월12일 unity 3.5.1 2012년5월23일 unity 3.5.2 2012년6월29일 unity 3.5.3 2012년7월31일 unity 3.5.4 어떻게 보면…당연한 결과!
  25. 25. 업데이트? 헬게이트! 모바일OS의 최신버전 지원과 엔진의 안정화를 위해 가능하면 유니티의 최신 버전을 유지해주세요.
  26. 26. 업데이트? 헬게이트! 모바일OS의 최신버전 지원과 엔진의 안정화를 위해 가능하면 유니티의 최신 버전을 유지해주세요. 하지만..
  27. 27. 업데이트? 헬게이트! 팀장님!!!! 유니티 업데이트를 했더니 어셋번들 로드에 실패하고있습니다!!
  28. 28. 업데이트? 헬게이트! 팀장님!!!! 유니티 업데이트를 했더니 어셋번들 로드에 실패하고있습니다!! 어셋번들을 다시 배포했더니,유저가 190메가 패치 받다가 떠나고 있습니다!!!
  29. 29. 업데이트? 헬게이트! Unity3D 3.x는 버전은 버전간 어셋번들 호환을 지원하지 않음 (라이브 서비스 중 최신 엔진버전을 적용하기 위해서는 큰 결심이 필요..)
  30. 30. 업데이트? 헬게이트! 유니티 4.x부터 어셋번들 호환기능 지원
  31. 31. 업데이트? 헬게이트! 유니티 4.x부터 어셋번들 호환기능 지원 이런 이유로.. 개발중인 프로젝트라면 유니티 4.x 사용을 추천
  32. 32. 2. 유니티가 다 해주나요….(?!) 1. 유니티 엔진 업데이트? 2. 유니티가 다 해주나요? 3. 박대리(배터리)가 조기 퇴근 하는 이유… 4. 모바일 플랫폼의 제한된 메모리 5. 모바일 WIFI이야기. 6. 심의? 그게 뭔가요?
  33. 33. 유니티가 다 해줘요…?! 팀장님!!!! 애플제품 처럼 진동에 감성(?)이 느껴지지 않습니다!!
  34. 34. 유니티가 다 해줘요…?! 유니티는 많은 모바일 API(안드로이드/IOS)를 지원합니다. 하지만 지원하더라도 미세한 컨트롤이 불가능합니다. (예를 들어..진동컨트롤..?)
  35. 35. 유니티가 다 해줘요…?! 유니티에서 제공하는 IPhoneUtils 클래스, 디바이스의 고유 컨트롤기능을 제공.
  36. 36. 유니티가 다 해줘요…?! 유니티에서 제공하는 IphoneUtils 클래스 디바이스의 고유 컨트롤기능을 제공. 간단하게 ON/OFF로 기능을 제공.
  37. 37. 유니티가 다 해줘요…?! 유니티가 많은 모바일 API를 지원하지만, 100%지원은 하지 않습니다. (지원하더라도 미세한 컨트롤이 안되는 경우도 많구요.)
  38. 38. 유니티가 다 해줘요…?! 유니티가 많은 모바일 API를 지원하지만, 100%지원은 하지 않습니다. (지원하더라도 미세한 컨트롤이 안되는 경우도 많구요.) Plug-in을 별도 제작해야, 입맛에 맞는 섬세한 제어가 가능. (유니티를 사용한다고 해서 모바일개발을 전혀 몰라도 되는건 아닙니다.)
  39. 39. 유니티가 다 해줘요…?! 여기서~ 잠깐… 저희 팀원을 소개합니다. 매번 멘붕오는 팀원은..
  40. 40. 유니티가 다 해줘요…?! 여기서~ 잠깐… 저희 팀원을 소개합니다. 매번 멘붕오는 팀원은.. 실존 인물이에요..
  41. 41. 유니티가 다 해줘요…?! 여기서~ 잠깐… 저희 팀원을 소개합니다. 매번 멘붕오는 팀원은.. 실존 인물이에요.. 앞으로 PT에 몇 번 더 등장 할 예정인데 실존 인물이라고 생각해주시면 더 와 닿으실지도..
  42. 42. 3.박대리(배터리)가 조기 퇴근 하는 이유… 1. 유니티 엔진 업데이트? 2. 유니티가 다 해주나요? 3. 박대리(배터리)가 조기 퇴근 하는 이유… 4. 모바일 플랫폼의 제한된 메모리 5. 모바일 WIFI이야기. 6. 심의? 그게 뭔가요?
  43. 43. 유니티가 다 해줘요…?! 팀장님!!!! 충전중에도 배터리 부족으로 휴대폰이 종료됩니다.
  44. 44. 유니티가 다 해줘요…?! 팀장님!!!! 충전중에도 배터리 부족으로 휴대폰이 종료됩니다. 휴대폰이 손난로 만큼 뜨겁습니다!!!! 불만이 폭발하고 있습니다!!!!!
  45. 45. 박대리(배터리) 조기퇴근 방지법 배터리 조기 퇴근을 하게 만드는 주범들.
  46. 46. 박대리(배터리) 조기퇴근 방지법 배터리 조기 퇴근을 하게 만드는 주범들. - 디스플레이
  47. 47. 박대리(배터리) 조기퇴근 방지법 배터리 조기 퇴근을 하게 만드는 주범들. - 디스플레이 - 데이터 통신모듈(3G/LTE)
  48. 48. 박대리(배터리) 조기퇴근 방지법 배터리 조기 퇴근을 하게 만드는 주범들. - 디스플레이 - 데이터 통신모듈(3G/LTE) - AP(Application Processor)연산
  49. 49. 박대리(배터리) 조기퇴근 방지법 게임을 플레이 하기 위한 최소 조건
  50. 50. 박대리(배터리) 조기퇴근 방지법 게임을 플레이 하기 위한 최소 조건 디스플레이는 항상 출력되어야 한다.
  51. 51. 박대리(배터리) 조기퇴근 방지법 게임을 플레이 하기 위한 최소 조건 디스플레이는 항상 출력되어야 한다. 온라인게임이기 때문에 항상 온라인상태를 유지해야 한다.
  52. 52. 박대리(배터리) 조기퇴근 방지법 그래서!
  53. 53. 박대리(배터리) 조기퇴근 방지법 그래서!
  54. 54. 박대리(배터리) 조기퇴근 방지법 그래서! AP연산을 줄이기로.. (fps제한을 거는 수밖에는..)
  55. 55. 박대리(배터리) 조기퇴근 방지법 30분 플레이후 배터리 잔량을 측정
  56. 56. 박대리(배터리) 조기퇴근 방지법 70 90 0 10 20 30 40 50 60 70 80 90 100 PC의 FPS 최적화 FPS 배터리 잔량(%) 30분 플레이후 배터리 잔량을 측정
  57. 57. 박대리(배터리) 조기퇴근 방지법 70 90 0 10 20 30 40 50 60 70 80 90 100 PC의 FPS 최적화 FPS 배터리 잔량(%) 30분 플레이후 배터리 잔량을 측정 생각 보다 효과가 좋음!
  58. 58. 박대리(배터리) 조기퇴근 방지법 70 90 0 10 20 30 40 50 60 70 80 90 100 PC의 FPS 최적화 FPS 배터리 잔량(%) 30분 플레이후 배터리 잔량을 측정 생각 보다 효과가 좋음! 거기다….
  59. 59. 박대리(배터리) 조기퇴근 방지법 배터리 발열측정
  60. 60. 박대리(배터리) 조기퇴근 방지법 34 36 37 39 40 41 42 34 35 36 37 37 37 38 30 32 34 36 38 40 42 44 0 5 10 15 20 25 30PC의 FPS 최적화 FPS 배터리 발열측정
  61. 61. 박대리(배터리) 조기퇴근 방지법 덤으로 발열까지 해결! (휴대폰이 뜨거워져서 터질것 같아요!! ..라는 소리는 더 이상 안듣게 됐어요 ㅋ)
  62. 62. 박대리(배터리) 조기퇴근 방지법 하지만!
  63. 63. 박대리(배터리) 조기퇴근 방지법 하지만! 얻는 것이 있으면, 잃는 것도 있는 법. (등가교환의 법칙처럼..공짜가 어딨담..)
  64. 64. 박대리(배터리) 조기퇴근 방지법 얻은 것. 발열 문제에서 효과적. 배터리 절약으로 인한 플레이타임 증가.
  65. 65. 박대리(배터리) 조기퇴근 방지법 잃은 것. 프레임 스킵으로 인한 감성(?)적인 UI반응. 부드러운 움직의 애니메이션,이펙트 불가능.
  66. 66. 박대리(배터리) 조기퇴근 방지법 개발사는 적당한 선에서 타협이 필요! 선택은 게임장르에 맞춘 개발자의 몫! (액션게임을 15fps으로 만들수는 없죠..)
  67. 67. 4. 모바일 플랫폼의 제한된 메모리 1. 유니티 엔진 업데이트? 2. 유니티가 다 해주나요? 3. 박대리(배터리)가 조기 퇴근 하는 이유… 4. 모바일 플랫폼의 제한된 메모리 5. 모바일 WIFI이야기. 6. 심의? 그게 뭔가요?
  68. 68. 효율적인 메모리 관리 제어가 쉽지 않은 유니티의 메모리 관리 방식.
  69. 69. 효율적인 메모리 관리 0 200 400 600 800 1000 1200 1400 1600 1800 유니티의 메모리 사용 그래프
  70. 70. 효율적인 메모리 관리 유니티의 기본 메모리 블럭
  71. 71. 효율적인 메모리 관리 메모리 블럭 유니티의 기본 메모리 블럭
  72. 72. 효율적인 메모리 관리 메모리 블럭 Object
  73. 73. 효율적인 메모리 관리 Object
  74. 74. 효율적인 메모리 관리 Object Object
  75. 75. 효율적인 메모리 관리 Object Object Object
  76. 76. 효율적인 메모리 관리 Object Object Object Object
  77. 77. 효율적인 메모리 관리 Object Object Object Object
  78. 78. 효율적인 메모리 관리 Object Object Object Object
  79. 79. 효율적인 메모리 관리 메모리 블럭
  80. 80. 효율적인 메모리 관리 최초의 메모리 블럭 확장된 메모리 블럭
  81. 81. 효율적인 메모리 관리 메모리 최대치를 초과 하지 않도록 메모리 Pool을 사용.
  82. 82. 효율적인 메모리 관리 메모리 최대치를 초과 하지 않도록 메모리 Pool을 사용.
  83. 83. 효율적인 메모리 관리 메모리 최대치를 초과 하지 않도록 Object Pool을 사용. 네,당연한 듯하지만, 굉장히 중요합니다.
  84. 84. 효율적인 메모리 관리 메모리 Pool = 적당한 컨테이너를 생성. 자주 사용되는(될것 같은) 리소스 로드. 컨테이너에 담아두고 다음 요청시 재사용.
  85. 85. 효율적인 메모리 관리 전투에서 사용되는 이펙트를 Pool에 담고 유니티의 메모리 사용량을 테스트.
  86. 86. 효율적인 메모리 관리
  87. 87. 효율적인 메모리 관리 메모리의 사용이 제한적인 모바일 플랫폼 (PC의 확장성을 기대하기는 어렵습니다..)
  88. 88. 효율적인 메모리 관리 메모리의 사용이 제한적인 모바일 플랫폼. 개발 초기부터 재사용될 것을 잘 분류하여 Pool을 적극 활용하면 보다 효율적인 개발.
  89. 89. 5.모바일 WIFI이야기 1. 유니티 엔진 업데이트? 2. 유니티가 다 해주나요? 3. 박대리(배터리)가 조기 퇴근 하는 이유… 4. 모바일 플랫폼의 제한된 메모리 5. 모바일 WIFI이야기. 6. 심의? 그게 뭔가요?
  90. 90. PC와는 다른 모바일 네트워크. <- 아까 그팀원…
  91. 91. PC와는 다른 모바일 네트워크. 팀장님!!!유저가 패치를 받은 뒤 게임접속을 못하고 있습니다!!! 원인을 찾을 수가 없습니다..ㅠㅠ
  92. 92. PC와는 다른 모바일 네트워크. 이번엔 나도 무슨 일인지 모르겠다….
  93. 93. PC와는 다른 모바일 네트워크. 원인을 모르니,최후의 방법을 생각했습니다.
  94. 94. PC와는 다른 모바일 네트워크. 그래서! 직접 찾아갔습니다…
  95. 95. PC와는 다른 모바일 네트워크. 유저가 받은 패치파일을 수집해와서 정상파일과 비교
  96. 96. PC와는 다른 모바일 네트워크. 유저가 받은 패치파일을 수집해와서 정상파일과 비교
  97. 97. PC와는 다른 모바일 네트워크. 분명히 같은 파일인데…..
  98. 98. PC와는 다른 모바일 네트워크. 분명히 같은 파일인데…..
  99. 99. PC와는 다른 모바일 네트워크. 분명히 같은 파일인데….. <HTML><HEAD><TITLE> Web Authentication Redirect</TITLE><META http-equiv="Cache- control" content="no-cache"><META http- equiv="Pragma" content="no- cache"><META http-equiv="Expires" content="-1"><META http-equiv="refresh" content="1; URL=https://1.1.1.1/login.html?redirect=sa mpoom.gscdn.com/mobile_and/2078/asse tbundles/xml/quest_reward_mobile_and.a ssetbundle"></HEAD></HTML>
  100. 100. PC와는 다른 모바일 네트워크. Web Authentication Redirect….? 왠 웹오류메세지가 번들파일에.. 404 Not Found는 알겠는데…
  101. 101. PC와는 다른 모바일 네트워크. 모바일에서 WIFI를 켜고 다녔을때 흔히 보게 되는…
  102. 102. PC와는 다른 모바일 네트워크. 모바일에서 WIFI를 켜고 다녔을때 흔히 보게 되는…
  103. 103. PC와는 다른 모바일 네트워크. 모바일에서 WIFI를 켜고 다녔을때 흔히 보게 되는… 인터넷은 되는 상태지만, 권한획득에 실패 하였을 경우.
  104. 104. PC와는 다른 모바일 네트워크. 유저가 WIFI를 켠상태로 유저도 모르는 사이에 이통사 AP에 붙게 되면 심심치 않게 발견됩니다. (PC에서는 볼 수 없는 문제..온라인상태에서 권한을 잃는경우가…=_=)
  105. 105. PC와는 다른 모바일 네트워크. 유저가 WIFI를 켠상태로 유저도 모르는 사이에 이통사 AP에 붙게 되면 심심치 않게 발견됩니다. (PC에서는 볼 수 없는 문제..자리에 앉아서 권한을 잃는경우가…흔치는..=_=) 패치 시간을 좀 더 사용 하더라도, 패치 후 CRC체크등을 통한 안정성 확보를 추천합니다.
  106. 106. 6. 심의? 그게 뭔가요? 1. 유니티 엔진 업데이트? 2. 유니티가 다 해주나요? 3. 박대리(배터리)가 조기 퇴근 하는 이유… 4. 모바일 플랫폼의 제한된 메모리 5. 모바일 WIFI이야기. 6. 심의? 그게 뭔가요?
  107. 107. 심의? 그게 뭔가요? 팀장님!!! IOS 1.2.77버전이 심의 반려되었습니다!!
  108. 108. 심의? 그게 뭔가요? 팀장님!!! IOS 1.2.77버전이 심의 반려되었습니다!! 일부 패킷에서 오류로 인해 게임진행이 안됩니다!!!! 유저의 항의가 너무 많습니다!!!
  109. 109. 심의? 그게 뭔가요? PC의경우 게임물 등급 위원회에서 게임 오픈전 심의절차를 진행
  110. 110. 심의? 그게 뭔가요? PC의경우 게임물 등급 위원회에서 게임 오픈전 심의절차를 진행 모바일의 경우 설치파일(APK/IPA)이 업데이트 될때마다 각 유통사에서 심의절차 진행.
  111. 111. 심의? 그게 뭔가요? 유통사에 대해 간단하게 이야기하면
  112. 112. 심의? 그게 뭔가요? 유통사에 대해 간단하게 이야기하면
  113. 113. 심의? 그게 뭔가요? 유통사에 대해 간단하게 이야기하면
  114. 114. 심의? 그게 뭔가요? 유통사에 대해 간단하게 이야기하면
  115. 115. 심의? 그게 뭔가요? 모바일 심의 기간은?
  116. 116. 심의? 그게 뭔가요? 모바일 심의 기간은? Google은 후심사 체제로 사전심의가 없음
  117. 117. 심의? 그게 뭔가요? 모바일 심의 기간은? Google은 후심사 체제로 사전심의가 없음 국내 유통사(T스토어등)는 만 하루정도의 심의기간
  118. 118. 심의? 그게 뭔가요? 앱스토어의 경우 최초 심의등록 시 2주 이상. 업데이트 심의 시 5~10일 정도의 심의기간이 필요.
  119. 119. 심의? 그게 뭔가요? 앱스토어의 경우 최초 심의등록 시 2주 이상. 업데이트 심의 시 5~10일 정도의 심의기간이 필요. 문제는 심의 반려 시 심의 절차를 무한 반복.
  120. 120. 심의? 그게 뭔가요? 버그가 없으면 좋겠지만.. 버그발생시 PC/안드로이드는 즉각 대처가 가능.
  121. 121. 심의? 그게 뭔가요? 버그가 없으면 좋겠지만.. 버그발생시 PC/안드로이드는 즉각 대처가 가능. IOS의 경우 최악의 경우 잠시 서비스를 중단 해야 할지도….
  122. 122. 심의? 그게 뭔가요? 멀티 플랫폼 서비스시 가장 큰 걸림돌 심의!
  123. 123. 심의? 그게 뭔가요? 멀티 플랫폼 서비스시 가장 큰 걸림돌 심의! PC와 안드로이드에 비해 IOS는 심의기간/결과가 서비스의 방향을 결정. (심지어 심의 기준도 다름.)
  124. 124. 심의? 그게 뭔가요? 서비스를 위해 진행하는 IOS심의에는 항상 반려(Reject)될 수 있음을 염두
  125. 125. 심의? 그게 뭔가요? 서비스를 위해 진행하는 IOS심의에는 항상 반려(Reject)될 수 있음을 염두 패킷버전을 사용, 리젝등 돌발상황에서 새로운 컨텐츠가 동작하지 않도록 대처 (구버전의 클라이언트에서 무리 없이 플레이 가능하도록 염두하고 제작)
  126. 126. 맺음 말
  127. 127. 맺음 말 PC개발자가 유니티를 이용하여 모바일을 개발할때 염두할 점.
  128. 128. 맺음 말 PC개발자가 유니티를 이용하여 모바일을 개발할때 염두할 점. - 유니티 외에도 모바일 개발기술 필요. - 모바일 네트워크 환경(언제나 불안) - 배터리, 인풋 시스템등 PC에는 없는 하드웨어. - PC에는 없는 심의 절차. - 텍스쳐나 버텍스를 줄이는 리소스 다이어트는 필수.
  129. 129. 맺음 말 모바일은 PC와 비슷한듯 다릅니다.
  130. 130. 맺음 말 감사합니다. Special Thank you Ndoors 모바일팀 손석민 이근종 장건희 김용태 전 용 이동하 TS팀 박현우 조명근 공현구 김평곤
  131. 131. Q & A Q & A

×