3.
대규모 모바일 게임 프로젝트
삼국지를 품다(2012)
http://3p.nexon.com/
개발기간 : 3년
개발인원 : 100여명
개발비용 : 약 150억원
플랫폼 : Web, Android, iOS
영웅의 군단(2014)
http://yg.nexon.com/
개발기간 : 4년
개발인원 : 100여명
개발비용 : 미공개
플랫폼 : Android, iOS(개발중)
3
5.
대규모 프로젝트?
대규모
인원
레벨
디자이너 모델링
아티스트
원화
아티스트
모션
아티스트
사운드
아티스트
…
Server
엔지니어
Client
엔지니어
DBA
웹플랫폼
개발
테스터
운영자
5
6.
대규모 프로젝트에서 중요한 요소
개발단계의
{협업 성능}
{Collaboration Performance}
대규모 프로젝트에서는 개발 단계의 협업 성능을 챙겨야 한다!
6
7.
다음과 같이 이야기하고자 합니다.
Collaboration Performance 구현
개발자를 위한 개발 – UnityEditor, Editor, EditorWindow, EditorLayout 활용
플러그인 어셋 활용 – AssetStore, 외부 개발자와의 Collaboration
버전 컨트롤 시스템 – Unity AssetServer & 버전컨트롤 활용 TIP
빌드 자동화 – Unity BatchMode & CC.NET & TIP
패치 자동화 – 누구든, 쉽고 빠르게 패치하게 하자. & TIP
#맺음 : 왜 Collaboration Performance 인가? – 개똥철학
7
8.
Collaboration Performance-1
개발자를 위한 개발
For 레벨디자이너, 아티스트, 프로그래머
8
9.
Collaboration Performance-1
개발자를 위한 개발
# 개발자에게 개발을 위한 도구 필요
# 개발단계 효율성 향상 게임 퀄리티 향상
9
10.
Collaboration Performance-1
개발자를 위한 개발
Unity로 개발도구 만들기
UnityEditor 네임스페이스, EditorLayout 사용
Editor, EditorWindow 상속 구현, 빠른 도구 개발
10
11.
Collaboration Performance-1
개발자를 위한 개발
3d 모델링 단계 개발 효율성 향상
3dMax Script 지원으로 업무 공정 자동화 / 검증화
11
12.
Collaboration Performance-1
개발자를 위한 개발
개발 단계 성능 최적화 게임 성능 최적화 만큼 중요
사례 : <삼품>개발초기, DB & 웹툴 기반 데이터 편집 개발
• 데이터 병합/버전관리 문제를 해결하기 위한 시도.
Export
6분!
2초!
메모리 이해 필요!
StringBuilder로 해결
• 편집하기 쉽도록 TEXT 형식 사용
• 엑셀을 활용하여 편집할 수 있도록
DB & 웹툴 대체
12
13.
Collaboration Performance-1
개발자를 위한 개발
개발 단계에서 동료들을 관찰하자
툴에 대한 다른 시각 - 아티스트/레벨 디자이너
바쁜 일정 - 개발 단계 개선 피드백 가뭄
필요한 건 - 찾아가는 서비스.
개발자를 위한 개발에도 – 성능 관점 필수!
13
14.
Collaboration Performance-1
개발자를 위한 개발
개발도구의 지속적인 개선
개발도구도 지속적으로 업그레이드 – “되니까~” 라는 생각 버리기
재사용 및 유지보수 인계(협업) 등을 위해서 리팩토링 작업 필요 : 대규모 프로젝트 특성
14
15.
Collaboration Performance-2
외부 플러그인 어셋 활용
We Are the “Hello-World”
World
15
16.
Collaboration Performance-2
외부 플러그인 어셋 활용
# 모든 것을 직접 구현해야하는가?! – No~!
개발자들에게 전문화된 도구를 제공
AssetStore 의 전문화된 다양한 외부 어셋들을 활용
필요에 따라 커스터마이징하여 사용
T4M uSequencer 2DToolkit Code Guard EZGUI FAST
Shadows
FX Maker NGUI Prime31 iTween HoTween
16
18.
Collaboration Performance-3
버전 컨트롤 시스템
# 대규모 프로젝트, 산소같은 존재
• 무조건 중요!
• 많은 인원이 공동 작업 – 많은 용량의 데이터!
• 영군/삼품의 총 저장소 사용량 : 약 350 GB
사용중인 버전 컨트롤 시스템
Subversion – 소스, 최종 리소스
Unity AssetServer – 중간 리소스 (아티스트 사용)
18
19.
Collaboration Performance-3
버전 컨트롤 시스템
AssetServer 장점
Meta 파일 guid 충돌을 방지
쉬운 사용방식 : 주 사용자 – 아티스트 (상대적으로, SVN 은 아티스트에게 어려움)
19
20.
Collaboration Performance-3
버전 컨트롤 시스템
AssetServer 단점
좀 느리다… 좀 많이 느리다…
• 최초 HEAD 업데이트에 하루 종일
• 원인 불명으로 비정상적 현상 종종 발생
부가적인 기능이 부족 (SVN과 비교)
• 동기화 이슈 발생 시 어려움
유지 보수 종료
20
21.
Collaboration Performance-3
버전 컨트롤 시스템
다른 버전 컨트롤 시스템 지원 (Unity 4.3 부터)
Plastic SCM
• 장점
– 간단한 조작성
– 직관적인 시각화
• 단점 (대규모 프로젝트에서의 단점)
– 4GB 이상 지원 불가 문제
– 한글 주석 불가
Perforce
• 장점
– 빠른 속도 (Perforce 자체 Client 인 경우)
– 4GB 이상 지원
• 단점 (대규모 프로젝트에서의 단점)
– 유니티 상에서 느림 (유니티 문제인가?)
– 한글 파일이 있는 경우 Lock 현상
21
22.
Collaboration Performance-3
버전 컨트롤 시스템
AssetServer 를 Subversion(이하SVN) 으로 대체 중…
왜?
• 현재 사용중인 시스템
– 지원 비용 측면
• SVN 의 확장성/안정성
• 버전 컨트롤 통일성 유지
22
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.
Collaboration Performance-3
버전 컨트롤 시스템
꾸준한 버전 컨트롤 개선 연구
보다 진보된 버전 컨트롤 시스템
DVCS(distributed version control systems) – 적용 연구 진행중
새 버전 컨트롤 시스템
Education
Migration
Setup
24
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.
Collaboration Performance-4
빌드 자동화
# 빠르고 정확하게 - 빌드 서버에게!
• 빌드 결과물이 배포될 동안, 더 생산적인 일을 하자
• 자동화 시, 예외 처리는 매우 중요
Build
Server
DEPLO
Y
BUILD
SOURCE
UPDATE
27
No
LostTime!
28.
Collaboration Performance-4
빌드 자동화
Unity.exe Batch Mode ★ ★ ★
활용 유형
.APK / .IPA 빌드
Assetbundle 변환 빌드 – 유니티 캐싱 사용을 위한 데이터 형식
AssetServer 로 부터 업데이트 – 속도개선 테스트 연구중
https://docs.unity3d.com/Documentation/Manual/CommandLineArguments.html
28
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.
Collaboration Performance-4
빌드 자동화
Unity.exe Batch Mode 실행을 위한, NUnityBatch.exe 제작
유니티 BatchMode 를 위한 콘솔 프로그램 자체 제작
로그 추적 편의성, 실행 편의성
여러 프로젝트 빌드 설정 구조화
30
31.
Collaboration Performance-4
빌드 자동화
자동화에 필요한 콘솔 프로그램 만들기
콘솔 활용도를 높이자
예외 처리 중요 : 모든 실패 가능성 예측 필요
31
33.
Collaboration Performance-4
빌드 자동화
# CC.NET - 서버 빌드 자동화 : 개발용 서버 [종료 > 빌드 > 재가동]
33
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.
Collaboration Performance-5
패치 자동화
New PM?! – Patch Manager…..
Project Manager
No LostTime!
35
36.
Client
소스업데이트
Client
빌드
Server
소스업데이트
Client
빌드
변경된
리소스 추출
리소스
변환/검사
패치목록
생성
USB으로 복사
(내부망)
USB에서 복사
(외부망)
Client/리소스
업로드
IDC
보안 접속
Server/리소스
복사
서버
내리기
새로운 서버
올리기
Collaboration Performance-5
패치 자동화
36
서버 70 여대, 서버 App 200 여개, 5개 군의 Database
- [영웅의군단] Live -
LostTime!
38.
외부망
Collaboration Performance-5
패치 자동화
# 패치 공정 자세히 보기
Client
소스업데이트
Client
빌드
Server
소스업데이트
Client
빌드
변경된
리소스 추출
리소스
변환/검사
패치목록
생성
USB으로 복사
(내부망)
USB에서 복사
(외부망)
Client/리소스
업로드
IDC
보안 접속
Server/리소스
복사
서버
내리기
새로운 서버
올리기
38
언제 끝나…?
39.
Collaboration Performance-5
패치 자동화
패치 자동화 내부망 빌드 USB 외부망 배포까지
예외 처리 중요 : 모든 실패 가능성 예측 필요
단계 선택 가능
패치 작업자와 로그 기록
39
완료 시
음악!
40.
Collaboration Performance-5
패치 자동화
# 서버 일괄 종료, 복사, 실행
• 네트워크 폴더 공유 방식
• AWS 콘솔 이용
• 서버 에이전트 제작
40
41.
맺음.
왜 Collaboration Performance 가 중요한가?
개똥 철학
41
42.
맺음. 왜 Collaboration Performance 가 중요한가?
기술 범람의 시대
42
43.
맺음. 왜 Collaboration Performance 가 중요한가?
대규모 프로젝트 = 많은 동료
동료들과의 협업 성능을 높여
즐겁게 일할 수 있는 개발 하기
43
44.
UNITY 를 이용한
대규모 프로젝트 개발 이야기 엔도어즈/기술지원팀
beargene@ndoors.net
www.facebook.com/beargene
-END-
44
Los recortes son una forma práctica de recopilar diapositivas importantes para volver a ellas más tarde. Ahora puedes personalizar el nombre de un tablero de recortes para guardar tus recortes.
Crear un tablero de recortes
Compartir esta SlideShare
¿Odia los anuncios?
Consiga SlideShare sin anuncios
Acceda a millones de presentaciones, documentos, libros electrónicos, audiolibros, revistas y mucho más. Todos ellos sin anuncios.
Oferta especial para lectores de SlideShare
Solo para ti: Prueba exclusiva de 60 días con acceso a la mayor biblioteca digital del mundo.
La familia SlideShare crece. Disfruta de acceso a millones de libros electrónicos, audiolibros, revistas y mucho más de Scribd.
Parece que tiene un bloqueador de anuncios ejecutándose. Poniendo SlideShare en la lista blanca de su bloqueador de anuncios, está apoyando a nuestra comunidad de creadores de contenidos.
¿Odia los anuncios?
Hemos actualizado nuestra política de privacidad.
Hemos actualizado su política de privacidad para cumplir con las cambiantes normativas de privacidad internacionales y para ofrecerle información sobre las limitadas formas en las que utilizamos sus datos.
Puede leer los detalles a continuación. Al aceptar, usted acepta la política de privacidad actualizada.