대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014

8,414 views
7,811 views

Published on

대규모 프로젝트 개발이야기- 이승헌, 유나이트 코리아 2014

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

No Downloads
Views
Total views
8,414
On SlideShare
0
From Embeds
0
Number of Embeds
361
Actions
Shares
0
Downloads
0
Comments
0
Likes
70
Embeds 0
No embeds

No notes for slide

대규모 프로젝트 개발이야기 - 이승헌, 유나이트 코리아 2014

  1. 1. Unity 를 이용한 대규모 프로젝트 개발 이야기 Collaboration Performance for Big scale Game-project 1
  2. 2. #연사 소개 이승헌 - 현) 엔도어즈, 기술지원팀장 「영웅의 군단」 (2014~) 기술지원, – Unity 「삼국지를 품다」 (2012~) 기술지원, – Unity - 데이터파서/ 모니터링시스템/패치시스템/패치자동화/모듈최적화…Etc 「아틀란티카」 (2008~) 기술지원, – Gamebryo - 3D맵/오브젝트시스템(맵에디터/오브젝트에디터)/ 거점시스템/패치시스템/로컬라이징관리도구(TMTool) … Etc. 2006.05~ NDOORS , 기술개발팀 창단 멤버 2005.10~ NDOORS , 「군주」 해외개발팀 입사 업무분야 : 성능최적화, 자동화, 규약화, 모듈화, 통합, 툴, 기술연구, 솔루션 적용, 업무조율, 개발환경개선 2
  3. 3. 대규모 모바일 게임 프로젝트 삼국지를 품다(2012) http://3p.nexon.com/ 개발기간 : 3년 개발인원 : 100여명 개발비용 : 약 150억원 플랫폼 : Web, Android, iOS 영웅의 군단(2014) http://yg.nexon.com/ 개발기간 : 4년 개발인원 : 100여명 개발비용 : 미공개 플랫폼 : Android, iOS(개발중) 3
  4. 4. 무엇을 이야기할까? in 20min Big Project! 4
  5. 5. 대규모 프로젝트? 대규모 인원 레벨 디자이너 모델링 아티스트 원화 아티스트 모션 아티스트 사운드 아티스트 … Server 엔지니어 Client 엔지니어 DBA 웹플랫폼 개발 테스터 운영자 5
  6. 6. 대규모 프로젝트에서 중요한 요소 개발단계의 {협업 성능} {Collaboration Performance} 대규모 프로젝트에서는 개발 단계의 협업 성능을 챙겨야 한다! 6
  7. 7. 다음과 같이 이야기하고자 합니다. Collaboration Performance 구현 개발자를 위한 개발 – UnityEditor, Editor, EditorWindow, EditorLayout 활용 플러그인 어셋 활용 – AssetStore, 외부 개발자와의 Collaboration 버전 컨트롤 시스템 – Unity AssetServer & 버전컨트롤 활용 TIP 빌드 자동화 – Unity BatchMode & CC.NET & TIP  패치 자동화 – 누구든, 쉽고 빠르게 패치하게 하자. & TIP #맺음 : 왜 Collaboration Performance 인가? – 개똥철학 7
  8. 8. Collaboration Performance-1 개발자를 위한 개발 For 레벨디자이너, 아티스트, 프로그래머 8
  9. 9. Collaboration Performance-1 개발자를 위한 개발 # 개발자에게 개발을 위한 도구 필요 # 개발단계 효율성 향상  게임 퀄리티 향상 9
  10. 10. Collaboration Performance-1 개발자를 위한 개발 Unity로 개발도구 만들기 UnityEditor 네임스페이스, EditorLayout 사용 Editor, EditorWindow 상속 구현, 빠른 도구 개발 10
  11. 11. Collaboration Performance-1 개발자를 위한 개발 3d 모델링 단계 개발 효율성 향상 3dMax Script 지원으로 업무 공정 자동화 / 검증화 11
  12. 12. Collaboration Performance-1 개발자를 위한 개발 개발 단계 성능 최적화  게임 성능 최적화 만큼 중요 사례 : <삼품>개발초기, DB & 웹툴 기반 데이터 편집 개발 • 데이터 병합/버전관리 문제를 해결하기 위한 시도. Export 6분! 2초! 메모리 이해 필요! StringBuilder로 해결 • 편집하기 쉽도록 TEXT 형식 사용 • 엑셀을 활용하여 편집할 수 있도록 DB & 웹툴 대체 12
  13. 13. Collaboration Performance-1 개발자를 위한 개발 개발 단계에서 동료들을 관찰하자 툴에 대한 다른 시각 - 아티스트/레벨 디자이너 바쁜 일정 - 개발 단계 개선 피드백 가뭄 필요한 건 - 찾아가는 서비스. 개발자를 위한 개발에도 – 성능 관점 필수! 13
  14. 14. Collaboration Performance-1 개발자를 위한 개발 개발도구의 지속적인 개선 개발도구도 지속적으로 업그레이드 – “되니까~” 라는 생각 버리기 재사용 및 유지보수 인계(협업) 등을 위해서 리팩토링 작업 필요 : 대규모 프로젝트 특성 14
  15. 15. Collaboration Performance-2 외부 플러그인 어셋 활용 We Are the “Hello-World” World 15
  16. 16. Collaboration Performance-2 외부 플러그인 어셋 활용 # 모든 것을 직접 구현해야하는가?! – No~! 개발자들에게 전문화된 도구를 제공 AssetStore 의 전문화된 다양한 외부 어셋들을 활용 필요에 따라 커스터마이징하여 사용 T4M uSequencer 2DToolkit Code Guard EZGUI FAST Shadows FX Maker NGUI Prime31 iTween HoTween 16
  17. 17. Collaboration Performance-3 버전 컨트롤 시스템 O2 17
  18. 18. Collaboration Performance-3 버전 컨트롤 시스템 # 대규모 프로젝트, 산소같은 존재 • 무조건 중요! • 많은 인원이 공동 작업 – 많은 용량의 데이터! • 영군/삼품의 총 저장소 사용량 : 약 350 GB 사용중인 버전 컨트롤 시스템 Subversion – 소스, 최종 리소스 Unity AssetServer – 중간 리소스 (아티스트 사용) 18
  19. 19. Collaboration Performance-3 버전 컨트롤 시스템 AssetServer 장점 Meta 파일 guid 충돌을 방지 쉬운 사용방식 : 주 사용자 – 아티스트 (상대적으로, SVN 은 아티스트에게 어려움) 19
  20. 20. Collaboration Performance-3 버전 컨트롤 시스템 AssetServer 단점 좀 느리다… 좀 많이 느리다… • 최초 HEAD 업데이트에 하루 종일 • 원인 불명으로 비정상적 현상 종종 발생 부가적인 기능이 부족 (SVN과 비교) • 동기화 이슈 발생 시 어려움 유지 보수 종료 20
  21. 21. Collaboration Performance-3 버전 컨트롤 시스템 다른 버전 컨트롤 시스템 지원 (Unity 4.3 부터) Plastic SCM • 장점 – 간단한 조작성 – 직관적인 시각화 • 단점 (대규모 프로젝트에서의 단점) – 4GB 이상 지원 불가 문제 – 한글 주석 불가 Perforce • 장점 – 빠른 속도 (Perforce 자체 Client 인 경우) – 4GB 이상 지원 • 단점 (대규모 프로젝트에서의 단점) – 유니티 상에서 느림 (유니티 문제인가?) – 한글 파일이 있는 경우 Lock 현상 21
  22. 22. Collaboration Performance-3 버전 컨트롤 시스템 AssetServer 를 Subversion(이하SVN) 으로 대체 중… 왜? • 현재 사용중인 시스템 – 지원 비용 측면 • SVN 의 확장성/안정성 • 버전 컨트롤 통일성 유지 22
  23. 23. Collaboration Performance-3 버전 컨트롤 시스템 TIP : 유니티에서 SVN 을 제대로 사용하기 Version Control > Mode > Meta Files 로 설정 Asset Serialization > Mode > Visible Force Text 로 설정  SVN 의 <pre-commit hook> 을 구현하자 : Meta File 커밋 관리 “대응하는 메타파일이 같이 커밋되지 않았습니다!” “다음 메타파일은 저장소에 추가될 필요가 없습니다!” 23
  24. 24. Collaboration Performance-3 버전 컨트롤 시스템  꾸준한 버전 컨트롤 개선 연구  보다 진보된 버전 컨트롤 시스템  DVCS(distributed version control systems) – 적용 연구 진행중 새 버전 컨트롤 시스템 Education Migration Setup 24
  25. 25. Collaboration Performance-4 빌드 자동화 2rd Workmate, Build-Server No LostTime! 25
  26. 26. Collaboration Performance-4 빌드 자동화 # 왜 필요한가? • 빌드Tasks x 구성요소 x 플랫폼 x 개발자수 x 배포 단계 • x Source (Resource) 업데이트 수  대규모 프로젝트 : 컨텐츠 규모 • 협업 지연 발생 요소 증가 • ex) (전체요소)빌드Tasks M 분 x N 명 x I 회 업데이트 = NIM !!!! DEPLO Y BUILD SOURCE UPDATE Server Client Resource 프로그래머 레벨 디자이너 아티스트 테스터 26
  27. 27. Collaboration Performance-4 빌드 자동화 # 빠르고 정확하게 - 빌드 서버에게! • 빌드 결과물이 배포될 동안, 더 생산적인 일을 하자 • 자동화 시, 예외 처리는 매우 중요 Build Server DEPLO Y BUILD SOURCE UPDATE 27 No LostTime!
  28. 28. Collaboration Performance-4 빌드 자동화 Unity.exe Batch Mode ★ ★ ★ 활용 유형 .APK / .IPA 빌드 Assetbundle 변환 빌드 – 유니티 캐싱 사용을 위한 데이터 형식 AssetServer 로 부터 업데이트 – 속도개선 테스트 연구중 https://docs.unity3d.com/Documentation/Manual/CommandLineArguments.html 28
  29. 29. Collaboration Performance-4 빌드 자동화 Unity.exe Batch Mode TIP ★ ★ ★ 1) 빌드 서버 필수 옵션 : -nographics 2) Unity.exe 프로세스 중복 실행 : -logfile 3) BatchMode 코드 작성시, 실행 실패 처리 : EditorApplication.Exit(에러레벨) 4) Windows 에서 iPhone 플랫폼 빌드하기 : x-code 빌드를 iOS 에 맡긴다 29
  30. 30. Collaboration Performance-4 빌드 자동화 Unity.exe Batch Mode 실행을 위한, NUnityBatch.exe 제작 유니티 BatchMode 를 위한 콘솔 프로그램 자체 제작 로그 추적 편의성, 실행 편의성 여러 프로젝트 빌드 설정 구조화 30
  31. 31. Collaboration Performance-4 빌드 자동화 자동화에 필요한 콘솔 프로그램 만들기 콘솔 활용도를 높이자 예외 처리 중요 : 모든 실패 가능성 예측 필요 31
  32. 32. Collaboration Performance-4 빌드 자동화 # CC.NET - Unity 클라이언트 빌드 -> 업로드까지 32
  33. 33. Collaboration Performance-4 빌드 자동화 # CC.NET - 서버 빌드 자동화 : 개발용 서버 [종료 > 빌드 > 재가동] 33
  34. 34. Collaboration Performance-4 빌드 자동화 # CC.NET –모든 자동화 통합 관리 장점1 : DEBUG / RELEASE & WIN32 / WIN64 / …ETC 일괄 빌드 테스트 장점2 : 공통 라이브러리의 적용 상태 판단 빌드 문제 발생 여부  빠르게 진단 Project-A Project-B Project-C Library Update Project-A 에 필요하여, Library 를 수정했는데, B-C에 영향이 있는가?34
  35. 35. Collaboration Performance-5 패치 자동화 New PM?! – Patch Manager….. Project Manager No LostTime! 35
  36. 36. Client 소스업데이트 Client 빌드 Server 소스업데이트 Client 빌드 변경된 리소스 추출 리소스 변환/검사 패치목록 생성 USB으로 복사 (내부망) USB에서 복사 (외부망) Client/리소스 업로드 IDC 보안 접속 Server/리소스 복사 서버 내리기 새로운 서버 올리기 Collaboration Performance-5 패치 자동화 36 서버 70 여대, 서버 App 200 여개, 5개 군의 Database - [영웅의군단] Live - LostTime!
  37. 37. Collaboration Performance-5 패치 자동화 37
  38. 38. 외부망 Collaboration Performance-5 패치 자동화 # 패치 공정 자세히 보기 Client 소스업데이트 Client 빌드 Server 소스업데이트 Client 빌드 변경된 리소스 추출 리소스 변환/검사 패치목록 생성 USB으로 복사 (내부망) USB에서 복사 (외부망) Client/리소스 업로드 IDC 보안 접속 Server/리소스 복사 서버 내리기 새로운 서버 올리기 38 언제 끝나…?
  39. 39. Collaboration Performance-5 패치 자동화  패치 자동화 내부망 빌드  USB  외부망 배포까지  예외 처리 중요 : 모든 실패 가능성 예측 필요  단계 선택 가능  패치 작업자와 로그 기록 39 완료 시 음악!
  40. 40. Collaboration Performance-5 패치 자동화 # 서버 일괄 종료, 복사, 실행 • 네트워크 폴더 공유 방식 • AWS 콘솔 이용 • 서버 에이전트 제작 40
  41. 41. 맺음. 왜 Collaboration Performance 가 중요한가? 개똥 철학 41
  42. 42. 맺음. 왜 Collaboration Performance 가 중요한가? 기술 범람의 시대 42
  43. 43. 맺음. 왜 Collaboration Performance 가 중요한가? 대규모 프로젝트 = 많은 동료 동료들과의 협업 성능을 높여 즐겁게 일할 수 있는 개발 하기 43
  44. 44. UNITY 를 이용한 대규모 프로젝트 개발 이야기 엔도어즈/기술지원팀 beargene@ndoors.net www.facebook.com/beargene -END- 44

×