테크니컬 포스트-모템
㈜넥슨코리아 N스퀘어 개발본부 개발1실 GTR팀 엔진유닛
김 재석
개발 TD 개인의 관점
• 개발 프로듀서/디렉터/팀,
라이브 프로듀서/디렉터/팀,
회사 공식 견해와는 일치하지 않습니다.
• 발표를 승인해주신 책임자 분들께 감사드립니다.
프로젝트 참여 기간 : 2006-01-02/2009-12-31
대상
• 프로그래머 기반 프로젝트 이해 관계자
• 게임을 만들어내야 하는 사람
목적
• 시작할 때 알았으면 좋았을 경험 공유
• 부검 (post-mortem) 양식을 지키려고 함
• 서비스 중이므로 오해를 살 수 있어 이제야 발표
• 3년은 라이브 게임이 환골탈태할 기간
목적
• 시작할 때 알았으면 좋았을 경험 공유
• 부검 (post-mortem) 양식을 지키려고 함
• 서비스 중이므로 오해를 살 수 있어 이제야 발표
• 3년은 라이브 게임이 환골탈태할 기간
개요
양적 분석
질적 분석
잘 된 점 5가지
잘 안 된 점 5가지
결론
김 재석
수석연구원
마비노기2:아레나
마비노기 영웅전 테크니컬 디렉터
마비노기
프로젝트 T2
오즈
라이브로 전환
신규개발을 다시
시작하던 시기
http://thisisgame.com/board/?board=116&n=58631
2005년 12월
http://thisisgame.com/board/?board=116&n=58631
2005년 12월
개인적으로도
전환기
2007 하반기 출시 목표
같이 만들 사람을
찾던 개발디렉터 (30)
2007 하반기 출시 목표전세계 단일 서버
MMO 마을 없는 MO
온라인 액션 RPG
© http://game.donga.com/37002/
G-STAR 2007
지스타 어워드 장려상
MORPG 빅3
G-STAR 2008
오픈 첫날 PC방 RPG 순위
6위 진입
단일 서버로 동시접속자수 5만 돌파
개발 도중
빌드머신 디스크
2회 고장
(HDD/SSD 각 1회)
개발 도중
빌드머신 디스크
2회 고장
(HDD/SSD 각 1회)
개발 도중
저장소 디스크
1회 고장
(RAID 1+0 모두 동시)
데이터 손실이 있었으나
사후 복구
2010 대한민국 게임대상 대상
동시접속자수 5만5천 상회
잘 된 점
5가지
© http://www.wpclipart.com
채용
채용 잘 하는 법
회사 시스템에만 의존하지 말 것
프로젝트 초중반 인력 수급은
자원 관리 중 가장 어려운 과제
시간과 비용을 써야 좋은 결과
© CJ E&M
아웃 소싱
이은석, 마비노기 영웅전 포스트모템 2부, NDC2010
아웃 소싱
이은석, 마비노기 영웅전 포스트모템 2부, NDC2010
게임 피처
개발에 집중
아웃 소싱
이은석, 마비노기 영웅전 포스트모템 2부, NDC2010
게임 피처
개발에 집중
가져올 수 있는
비개발적 이득도
가급적 모두 취함
심지어 포트번호까지
P2P 네트워크
“모든 종류의 공유기 테스트”와 같은 사례야말로
경험을 돈으로 구매해야 하는 경우
사용자 인터페이스
스튜디오 내 다른 프로젝트에서 먼저 검증
Source Engine의VGUI를 사용해서는
얻을수 없는 시간대비 품질로 제작 가능해짐
게임 메신저/패치 에이전트
배포나 패치 방법에 대한 고민을 줄여줌
공용 라이브러리
신규 프로젝트들이 겪는
공통적인 문제 및 해결책을 공유
자잘한 빌드 최적화를 통해
일반적인 경우 5분 이내에 빌드가 끝나도록
리소스도 종속성 검사를 최대한 강하게
지속적인 통합
© http://xkcd.com
빌드를 깨지 않도록 강력하게 압박
© http://totheno1.egloos.com
처음에는
실행 가능한 상태로
유지되지 않아
빌드 넘버를 정해놓고
공포 분위기 조성
빌드를 깨지 않도록 강력하게 압박
© http://totheno1.egloos.com
처음에는
실행 가능한 상태로
유지되지 않아
빌드 넘버를 정해놓고
공포 분위기 조성
조건 달성 시
사비 털어서 파티
실제로는
매번 털렸음
루프백 서버 사용 금지
© http://www.thinkgeek.com/product/6806/
루프백 서버 사용 금지
이터레이션 속도를 떨어트릴 수 있지만
내부 개발용 서버에서 통합되는 것을
작업 기준으로 놓고 작업
© http://www.thinkgeek.com/product/6806/
루프백 서버 사용 금지
이터레이션 속도를 떨어트릴 수 있지만
내부 개발용 서버에서 통합되는 것을
작업 기준으로 놓고 작업
제 자리에서는 괜찮은데요?
리파지터리에
제출된 데이터는
서버에 자동 적용
© http://www.thinkgeek.com/product/6806/
© http://heroes.nexon.com/news/devstory.aspx?no=22&mode=view
개발자의
도전과제
© http://heroes.nexon.com/news/devstory.aspx?no=22&mode=view
개발자의
도전과제
작업자에게
고양감
© http://heroes.nexon.com/news/devstory.aspx?no=22&mode=view
개발자의
도전과제
시장 진입
기폭제
작업자에게
고양감
시장에서
생존하려면
안 하는 것을
해야 한다
핵심 기능에만 집중
노리진 않았지만
Wizards of the Coast, Magic:The Gathering, and their logos are trademark of Wizards of the Coast LLC in the United States and other countries.
© 1995-2013 Wizards of the Coast LLC, a subsidiary of Hasbro, Inc.All Rights Reserved
This presentation is not affiliated with, endorsed, sponsored, or specifically approved by Wizards of the Coast LLC.
핵심 기능에만 집중
노리진 않았지만
라이브에서는
기적이 일어난다
Wizards of the Coast, Magic:The Gathering, and their logos are trademark of Wizards of the Coast LLC in the United States and other countries.
© 1995-2013 Wizards of the Coast LLC, a subsidiary of Hasbro, Inc.All Rights Reserved
This presentation is not affiliated with, endorsed, sponsored, or specifically approved by Wizards of the Coast LLC.
잘 안 된 점
5가지
© http://ramboruiz.com/what-happens-if-your-va-do-it-wrong/
1년에
한 번
전력으로
승부
매 3개월의 전력질주
© http://joynews.inews24.com/php/news_view.php?
g_menu=702500&g_serial=598811
© 전병헌 블로그
허들=단거리 단기목표를 넘어야 다음 기회
1년에
한 번
전력으로
승부
매 3개월의 전력질주
© http://joynews.inews24.com/php/news_view.php?
g_menu=702500&g_serial=598811
© 전병헌 블로그
허들=단거리 단기목표를 넘어야 다음 기회
1년에
한 번
전력으로
승부
매 3개월의 전력질주
© http://joynews.inews24.com/php/news_view.php?
g_menu=702500&g_serial=598811
© 전병헌 블로그
Deadline Driven Development
목조 건물을 의도하고 만들었으면 상관 없지만
거푸집은?
© http://www.scaffoldformwork.com© Peter Eckert
© http://michaelwoodside.blogspot.com/2011/03/animation-mentor-dump.html
정말 필요할 때
스태미너가
바닥난다
© http://michaelwoodside.blogspot.com/2011/03/animation-mentor-dump.html
정말 필요할 때
스태미너가
바닥난다
photograph by 김동건
1차 테스트 한 달여 전
낙관적 예측
© http://www.wallpaperdev.com/wallpaper/1600x1200/emotions-smile-hd-wallpapers-49479.html
온라인 물리의 구현
온라인 물리의 구현
2000년에 구입한 Ipion
기대했던 최신 물리 엔진 아님
.NET Framework & C#
네이티브 코드에서 발생하는 관리 이슈는 사라졌지만
매니지드 코드 특유의 문제를 다루기 위해 별도의 학습이 필요
자이언트 서버
하드웨어 발전 속도를 과신한 아키텍처
부하가 집중됐을 때 사내의 구형 서버들을
동원해서 스케일-아웃에 성공했지만
평균 성능이 기대에 많이 못미침
양승명, 마비노기 영웅전 자이언트 서버의 비밀, NDC11
섀도우 채널
P2P 오버레이 네트워크 위에서 채널을 구성
자이언트 서버와 마찬가지로 단일 서버를 최대한 크게
유지하기 위한 목적으로 고안됐지만,
핸드오버 처리에서 난항을 겪었음
© http://tppnotforprofit.blogspot.com/2010/12/writing-effective-job-descriptions-and.html
직무 분석
© http://tppnotforprofit.blogspot.com/2010/12/writing-effective-job-descriptions-and.html
일정 산정의 근거
직무 분석
© http://tppnotforprofit.blogspot.com/2010/12/writing-effective-job-descriptions-and.html
업무 위임의 근거
일정 산정의 근거
직무 분석
© http://tppnotforprofit.blogspot.com/2010/12/writing-effective-job-descriptions-and.html
신입 교육의 근거
업무 분장의 근거
업무 위임의 근거
일정 산정의 근거
직무 분석
© http://tppnotforprofit.blogspot.com/2010/12/writing-effective-job-descriptions-and.html
신입 교육의 근거
업무 분장의 근거
업무 위임의 근거
일정 산정의 근거
직무 분석
따라서
만능형 인재가 필요
© http://uccommunity.org.au/isa/referral-process
기준
코딩 기준
엔진 코드에 역사와 전통을 자랑하는
다양한 코딩 기준이 이미 혼재
Quake logo is a registered trademark of Id Software Inc.
코딩 기준
엔진 코드에 역사와 전통을 자랑하는
다양한 코딩 기준이 이미 혼재
C# 서버와 연결되는 부분은
.NET 스타일로 작성된 C++
Quake logo is a registered trademark of Id Software Inc.
품질 기준
문서 및 테스트 기준
단언문을 깨는 결과물이
마감 기간에 발생하면
복구하기 어렵다
코드 검토를 강제했으면 하는 아쉬움
© http://insureblog.blogspot.com/2012/07/dominos-part-deux.html
아웃 소싱의 한계
© http://seekingalpha.com/article/453921-sirius-xm-there-s-no-such-thing-as-a-free-lunch
소스코드 자체가 엔진
엔진사업이 주력이 아님
근래에는 게임 개발도
공용 라이브러리
공용 라이브러리
C# 서버라 외부 라이브러리를
(HackShield, ProudNet 등)
바로 붙이기 번거로움
공용 라이브러리
C# 서버라 외부 라이브러리를
(HackShield, ProudNet 등)
바로 붙이기 번거로움
라이브러리에 깔린 가정들이
개별 프로젝트와 일치하지 않음
파편화
공용 라이브러리
C# 서버라 외부 라이브러리를
(HackShield, ProudNet 등)
바로 붙이기 번거로움
라이브러리에 깔린 가정들이
개별 프로젝트와 일치하지 않음
파편화
.NET 경험이 불충분해서 생기는 문제
공용 라이브러리
담당자 퇴사
C# 서버라 외부 라이브러리를
(HackShield, ProudNet 등)
바로 붙이기 번거로움
라이브러리에 깔린 가정들이
개별 프로젝트와 일치하지 않음
파편화
.NET 경험이 불충분해서 생기는 문제
최초로 제공됐던
.NET 라이브러리는
프레임워크 디자인 가이드라인
문서를 따르지 않음
초기 버전에는 .NET
라이브러리를 제공하지 않음
사용자 인터페이스
자유도가 지나치게 높음
클라이언트에 부하를 심각하게 걸어
시스템 재기동을 유발한 사례도 있음
넥슨 플러그
많은 기능이 카트라이더와 함께 만들어졌다
분산 다운로드를 지원하지 않아 CDN 비용 감수
차분 생성을 빠르게 하기 위해서는 많은 튜닝이 필요
넥슨 정기 점검 시간에는 내부 개발 서버도 점검
결론
긴 개발 기간동안
예상 밖의 문제는
계속 발생한다
불확실한 위험 예측보다
이미 발생한 위기 응답으로
생존하는 경험을 늘려갑시다
제가 이걸 잘 했다는 것은 아니고
EO
F

NDC 2013, 마비노기 영웅전 개발 테크니컬 포스트-모템