애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (agile game development: dealing...

69
애애애 애애 애애 애애애 애애 애애 : : 애애 애애애 애애애 애애애 애 애애 애애애 애애애 애애애 애 ( ( Agile Game Development: Agile Game Development: Dealing with Chaos in the Real World Dealing with Chaos in the Real World ) ) 강강 : Noel Llopis, Lead Technical Architect, Sammy Studios [email protected] http://www.gamesfromwithin.com 2004 강 11 강 03 강 강강 : 강강강 ([email protected] ) http://betterways.wo.to 2007 강 05 강 31 강

Upload: kay-kim

Post on 24-Jan-2015

2.059 views

Category:

Documents


8 download

DESCRIPTION

MIGS 2004에서, Noel Llopis가 발표한 "애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World)의 한글 슬라이드 http://betterways.tistory.com/139 참조.

TRANSCRIPT

Page 1: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

애자일 게임 개발애자일 게임 개발 ::현실 세계의 혼돈을 다루는 법현실 세계의 혼돈을 다루는 법

((Agile Game Development:Agile Game Development:Dealing with Chaos in the Real WorldDealing with Chaos in the Real World))

강연 : Noel Llopis, Lead Technical Architect, Sammy Studios

[email protected]://www.gamesfromwithin.com

2004 년 11 월 03 일

번역 : 김기웅 ([email protected])http://betterways.wo.to2007 년 05 월 31 일

Page 2: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

오늘의 주제는오늘의 주제는 ??

Agile developmentAgile development 를 게임 개발에 응용하기를 게임 개발에 응용하기 .. 왜왜 ?? Agile development Agile development 은 게임 산업에서 은 게임 산업에서

사용되는 대부분의 방법론들에 대한 좋은 사용되는 대부분의 방법론들에 대한 좋은 대안이기 때문임대안이기 때문임 ..

목차목차 :: 제 제 1 1 부부 : : 위험과 방법론위험과 방법론 ((Risk and Risk and

methodologies)methodologies) 제 제 2 2 부부 : Agile development: Agile development 제 제 3 3 부부 : Scrum: Scrum 제 제 4 4 부부 : Extreme programming: Extreme programming

Page 3: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

제 제 1 1 부부

위험과 방법론위험과 방법론((Risk and Methodologies)Risk and Methodologies)

Page 4: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

방법론이란 무엇인가방법론이란 무엇인가 ??

개발 방법론이란개발 방법론이란 , , 기업이 프로젝트를 개발하기 기업이 프로젝트를 개발하기 위해서 인력과 자원을 어떻게 조직하는가를 위해서 인력과 자원을 어떻게 조직하는가를 말한다말한다 ..

Page 5: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

위험과 방법론위험과 방법론

방법론은 프로젝트의 위험을 감소시키는 것을 방법론은 프로젝트의 위험을 감소시키는 것을 목표로 한다목표로 한다 ..

어디에나 적용 가능한 최적의 방법론이란 어디에나 적용 가능한 최적의 방법론이란 존재하지 않으며존재하지 않으며 , , 프로젝트와 팀에 따라 프로젝트와 팀에 따라 달라진다달라진다 ..

Page 6: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 산업에서 우리가 두려워 하는 게임 산업에서 우리가 두려워 하는 것은것은 ??

Page 7: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 산업에서 우리가 두려워 하는 게임 산업에서 우리가 두려워 하는 것은것은 ??

일정이 지연되었다일정이 지연되었다 (( 이런이런 , , 성탄절을 놓쳤잖아성탄절을 놓쳤잖아 ..))

Page 8: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 산업에서 우리가 두려워 하는 게임 산업에서 우리가 두려워 하는 것은것은 ??

일정이 지연되었다일정이 지연되었다 .. (( 이런이런 , , 성탄절을 놓쳤잖아성탄절을 놓쳤잖아 ..))

프로젝트가 중단되었다프로젝트가 중단되었다 .. (( 지금 겪고 계시려나지금 겪고 계시려나 ??))

넌 해고야 (You’re Fired)!

Page 9: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 산업에서 우리가 두려워 하는 게임 산업에서 우리가 두려워 하는 것은것은 ??

일정이 지연되었다일정이 지연되었다 .. (( 이런이런 , , 성탄절을 놓쳤잖아성탄절을 놓쳤잖아 ..))

프로젝트가 중단되었다프로젝트가 중단되었다 .. (( 지금 겪고 계시려나지금 겪고 계시려나 ??))

게임이 재미가 없다게임이 재미가 없다 .. (( 저조한 실적과 나쁜 평가들저조한 실적과 나쁜 평가들 ..))

Page 10: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 산업에서 우리가 두려워 하는 게임 산업에서 우리가 두려워 하는 것은것은 ??

일정이 지연되었다일정이 지연되었다 .. (( 이런이런 , , 성탄절을 놓쳤잖아성탄절을 놓쳤잖아 ..))

프로젝트가 중단되었다프로젝트가 중단되었다 .. (( 지금 겪고 계시려나지금 겪고 계시려나 ??))

게임이 재미가 없다게임이 재미가 없다 .. (( 저조한 실적과 나쁜 평가들저조한 실적과 나쁜 평가들 ..))

기술적인 결함이 있거나기술적인 결함이 있거나 , , 채택한 기술이 채택한 기술이 한물갔다한물갔다 ..

(( 저조한 판매 실적과 나쁜 평가들저조한 판매 실적과 나쁜 평가들 ..))

Page 11: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 산업에서 우리가 두려워 하는 게임 산업에서 우리가 두려워 하는 것은것은 ??

일정이 지연되었다일정이 지연되었다 .. (( 이런이런 , , 성탄절을 놓쳤잖아성탄절을 놓쳤잖아 ..))

프로젝트가 중단되었다프로젝트가 중단되었다 .. (( 지금 겪고 계시려나지금 겪고 계시려나 ??))

게임이 재미가 없다게임이 재미가 없다 . . (( 저조한 실적과 나쁜 평가들저조한 실적과 나쁜 평가들 ))

기술적인 결함이 있거나기술적인 결함이 있거나 , , 채택한 기술이 채택한 기술이 한물갔다한물갔다 . . (( 저조한 실적과 나쁜 평가들저조한 실적과 나쁜 평가들 ))

시장 상황이 바뀌었다시장 상황이 바뀌었다 . . (( 우리 게임이 한물가버렸우리 게임이 한물가버렸군군 .).)

Page 12: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 산업에서 우리가 두려워 하는 게임 산업에서 우리가 두려워 하는 것은것은 ??

일정이 지연되었다일정이 지연되었다 .. (( 이런이런 , , 성탄절을 놓쳤잖아성탄절을 놓쳤잖아 ..))

프로젝트가 중단되었다프로젝트가 중단되었다 .. (( 지금 겪고 계시려나지금 겪고 계시려나 ??))

게임이 재미가 없다게임이 재미가 없다 . . (( 저조한 실적과 나쁜 평가들저조한 실적과 나쁜 평가들 ))

기술적인 결함이 있거나기술적인 결함이 있거나 , , 채택한 기술이 채택한 기술이 한물갔다한물갔다 . . (( 저조한 실적과 나쁜 평가들저조한 실적과 나쁜 평가들 ))

시장 상황이 바뀌었다시장 상황이 바뀌었다 . . (( 우리 게임이 한물가버렸우리 게임이 한물가버렸군군 .).)

팀원이 그만두었다팀원이 그만두었다 . . (( 출시는 더욱더 늦어진다출시는 더욱더 늦어진다 .).)

Page 13: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

어디서 많이 들어본 이야기죠어디서 많이 들어본 이야기죠 ??

게임 기획이 완료되었다게임 기획이 완료되었다 .. 배급사와의 계약이 성사되었다배급사와의 계약이 성사되었다 .. 연관 관계에 따른 상세한 일정표를 작성했다연관 관계에 따른 상세한 일정표를 작성했다 .. 상세한 기술 설계가 만들어졌다상세한 기술 설계가 만들어졌다 .. 처음 몇 번의 마일스톤은 일정대로 흘러갔다처음 몇 번의 마일스톤은 일정대로 흘러갔다 .. 그러고 나자그러고 나자 ......

Page 14: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

어디서 많이 들어본 이야기죠어디서 많이 들어본 이야기죠 ??

전체 일정을 되돌릴 만큼 치명적인 기술적인 전체 일정을 되돌릴 만큼 치명적인 기술적인 난관에 봉착했다난관에 봉착했다……

또는또는 , , 핵심 개발자가 그만두었다핵심 개발자가 그만두었다…… 또는또는 , , 개발하고 있는 장르를 재정의할만한 개발하고 있는 장르를 재정의할만한

끝내주는 게임끝내주는 게임 (GTA3)(GTA3) 이 나와버렸다이 나와버렸다 ...... 또는또는 , , 배급사가 변경을 요구했다배급사가 변경을 요구했다…… 또는또는 ,, < < 당신이 현재 겪고 있는 상황당신이 현재 겪고 있는 상황 .>.>

Page 15: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

어디서 많이 들어본 이야기죠어디서 많이 들어본 이야기죠 ??

그 다음에는 어떤 일들이그 다음에는 어떤 일들이 벌어질까벌어질까 ?? 쓰레기가 된 일정쓰레기가 된 일정 .. 연이은 철야연이은 철야 . . 압박감압박감 . . 여기저기서 발생하는 오류들여기저기서 발생하는 오류들 . . 품질 저하품질 저하 .. 팀원들이 탈진해버린 후팀원들이 탈진해버린 후 , , 떠나버림떠나버림 .. ........

반드시 없어져야 할 악순환반드시 없어져야 할 악순환 ..

Page 16: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

방법론방법론 : : 임기응변임기응변 ((Ad-hoc)Ad-hoc)

이걸로 정말 문제가 해결되기나 할까이걸로 정말 문제가 해결되기나 할까 ?? 낮은 공정 유지비낮은 공정 유지비 ((Low process overhead).Low process overhead). 저비용저비용 .. 당장은 일이 진행되게 해줌당장은 일이 진행되게 해줌 .. 매우 독립적이거나매우 독립적이거나 //이질적인 성격을 가진 이질적인 성격을 가진

사람들끼리도 자신들이 원하는 방법으로 일을 사람들끼리도 자신들이 원하는 방법으로 일을 할 수 있게 해준다할 수 있게 해준다 . (. (Allows very Allows very independent/different personalities to independent/different personalities to "work" however they want.)"work" however they want.)

Page 17: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

방법론방법론 : : 폭포수폭포수 ((Waterfall)Waterfall)

프로젝트 후반의 변경 사항을 최소화함프로젝트 후반의 변경 사항을 최소화함 .. 원래 고객이 원했던 바 그대로 개발하려고 원래 고객이 원했던 바 그대로 개발하려고

함함 .. 임계 경로들임계 경로들 ((critical paths)critical paths) 을 파악하고을 파악하고 , ,

개발 완료일을 예측하고자 함개발 완료일을 예측하고자 함 .. 가시성과 이력 파악가시성과 이력 파악 ((tracking)tracking) 을 극대화함을 극대화함 .. 광범위한 문서화와 서류 더미광범위한 문서화와 서류 더미 .. ““ 효율성효율성 ((efficiency)“efficiency)“ 을 극대화함을 극대화함 ..

Page 18: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

방법론방법론 : : 반복반복 ((Iterative)Iterative)

RUP (Rational Unified Programming), RUP (Rational Unified Programming), Evo (Evolutionary development)Evo (Evolutionary development)

매 주기마다 전달 가능한 버전을 계속적으로 매 주기마다 전달 가능한 버전을 계속적으로 만듦으로써만듦으로써 , , 제품을 출시하지 못할 위험을 제품을 출시하지 못할 위험을 최소화함최소화함 ..

잘 정의된 아키텍처잘 정의된 아키텍처 .. 게임 개발이랑 많이 비슷하게 들리지만게임 개발이랑 많이 비슷하게 들리지만 , ,

정말 그럴까정말 그럴까 ??

Page 19: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

제 제 2 2 장장

Agile DevelopmentAgile Development

Page 20: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Agile Agile 기법들기법들

AgileAgile 에는 다양한 기법들이 존재한다에는 다양한 기법들이 존재한다 :: CrystalCrystal Adaptive software developmentAdaptive software development Dynamic solution delivery modelDynamic solution delivery model Feature-driven developmentFeature-driven development

그리고 그리고 EExtreme Programmingxtreme Programming 과 과 SScrumcrum..

Page 21: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Agile developmentAgile development 의 기본 의 기본 원리원리

아마도 다음 도표가 눈에 익을 것이다아마도 다음 도표가 눈에 익을 것이다 ::

변경에 소요되는

비용

요구사항 작성 분석 및 설계 코딩 대규모 테스트 생산

시간

Page 22: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Agile developmentAgile development 는 대신 이걸 제안한다는 대신 이걸 제안한다 ::

Agile developmentAgile development 의 기본 의 기본 원리원리

변경에 소요되는

비용

시간

Page 23: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Agile Agile 기법의 기초는기법의 기초는 ??

(( 공정과 도구보다공정과 도구보다 ) ) 개인과 상호 소통개인과 상호 소통 (( 포괄적인 문서화포괄적인 문서화 ) ) 제대로 동작하는 소프트웨어제대로 동작하는 소프트웨어 (( 계약 협상보다계약 협상보다 ) ) 고객과의 협력고객과의 협력 (( 계획을 따르는 것보다계획을 따르는 것보다 ) ) 변화에 대응하는 것변화에 대응하는 것

Page 24: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Agile DevelopmentAgile Development

개인과 상호 소통개인과 상호 소통 제대로 동작하는 제대로 동작하는

소프트웨어소프트웨어 고객과의 협력고객과의 협력 변화에 대응하는 것변화에 대응하는 것

일정 지연일정 지연 프로젝트 취소 프로젝트 취소 재미없는 게임재미없는 게임 기술적인 난관기술적인 난관 시장 변화시장 변화 팀원의 이탈팀원의 이탈

특징특징 개발상의 공포개발상의 공포

Page 25: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

무엇이 다를까무엇이 다를까 ??

전통적인 방법론전통적인 방법론 :: “ “앞으로 어떤 일이 있을지 앞으로 어떤 일이 있을지 모르기 때문에모르기 때문에 , , 가능한 모든 것을 조사하고가능한 모든 것을 조사하고 , , 모든 경우에 대비해 계획을 세워야만 한다모든 경우에 대비해 계획을 세워야만 한다 .”.”

Agile:Agile: “ “ 우리는 바로 앞에 있는 것에만 집중할 우리는 바로 앞에 있는 것에만 집중할 것이며것이며 , , 지금까지지금까지 배운 것을 바탕으로 배운 것을 바탕으로 진행하면서 계속적으로 결정을 내릴 것이다진행하면서 계속적으로 결정을 내릴 것이다 .”.”

Page 26: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

어떻게 가능할까어떻게 가능할까 ??

신속한 피드백신속한 피드백 ..

사후 분석사후 분석 (Postmortem)(Postmortem) 을 기다리지 말 것을 기다리지 말 것 . . 다양한 수준에서 즉각적인 피드백을 받는다다양한 수준에서 즉각적인 피드백을 받는다 ..

단위 검사단위 검사 (( 수회수회 //11 분분 )) 구축과 기능 검사 구축과 기능 검사 (( 수회수회 /1/1 시간시간 )) 작업 상황 파악 및 일일 회의작업 상황 파악 및 일일 회의 (1(1회회 /1/1 일일 )) 길이가 고정된 주기길이가 고정된 주기 ((11 주기주기 //몇주몇주 ))

Page 27: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

이것은 자동차 여행을 계획하는 것과 같다이것은 자동차 여행을 계획하는 것과 같다 ..

Page 28: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

제 제 3 3 장장

ScrumScrum

Page 29: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

ScrumScrum 이란이란 ??

이게 아니다이게 아니다 !!

Page 30: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

ScrumScrum 이란이란 ??

ScrumScrum 은은 , , 반복적이고 점진적인 실천 방법들반복적이고 점진적인 실천 방법들((iterative, incremental practices)iterative, incremental practices) 을 을 사용하여사용하여 소프트웨어와 제품 개발을 관리하고 소프트웨어와 제품 개발을 관리하고 통제하는통제하는 ,, 기민하고 가벼운기민하고 가벼운 공정공정 (an agile, (an agile, lightweight process)lightweight process) 이다이다 ..

중요중요 : Scrum: Scrum 은 은 프로젝트 관리적인 측면프로젝트 관리적인 측면의 의 접근법접근법 (a management approach)(a management approach) 의 의 일종이다일종이다 ..

다른 반복적인 접근법과 함께 사용 가능하다다른 반복적인 접근법과 함께 사용 가능하다 ..

Page 31: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

ScrumScrum 의 주기의 주기 ((A scrum A scrum iteration)iteration)

Product backlogProduct backlog 3030 일 주기일 주기 (S(Sprint)print) 각 목표들의 우선순위각 목표들의 우선순위

설정설정 작업의 예측작업의 예측 자율적인 팀자율적인 팀 매일 팀의 상태를 측정 매일 팀의 상태를 측정 한 주기가 끝날 때마다 검토한 주기가 끝날 때마다 검토

Page 32: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임 개발에 게임 개발에 ScrumScrum 을 사용하는 을 사용하는 회사는회사는 ??

Sammy StudiosSammy Studios 는 는 66 개월 전부터 개월 전부터 Darkwatch (PS2/Xbox Darkwatch (PS2/Xbox 액션 게임액션 게임 )) 에 에 ScrumScrum 을 사용을 사용 ..

Page 33: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

영국에 위치한 영국에 위치한 Awesome Studios Awesome Studios (http://www.awesome.uk.com/).(http://www.awesome.uk.com/).

다른 곳이 있다면 다른 곳이 있다면 EmailEmail 로 알려 주십시요로 알려 주십시요 ..

게임 개발에 게임 개발에 ScrumScrum 을 사용하는 을 사용하는 회사는회사는 ??

Page 34: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

ScrumScrum 과 게임 개발과 게임 개발

일반적으로 팀들이 너무 크다일반적으로 팀들이 너무 크다 ..

ScrumScrum 은 은 5~85~8 명일 때명일 때 , , 가장 효과가 좋다가장 효과가 좋다 .. 팀을 더 작은 하위의 팀들팀을 더 작은 하위의 팀들 ((subteams)subteams) 로 쪼갠다로 쪼갠다 .. ““ScrumScrum 들로 구성된 들로 구성된 Scrum(a Scrum(a scrum of scrum of

scrums)scrums)”” 을 유지한다을 유지한다 .. Sammy StudiosSammy Studios 에서는 에서는 ““기능 제작팀들기능 제작팀들

(functional teams)”(functional teams)” 로 구분로 구분 : : 캐릭터캐릭터 , , 탈 것탈 것 , , 멀티플레이어멀티플레이어 , , 맵 제작맵 제작 , , 도구도구 등등등등 ..

프로그래머들로만 시작했으나프로그래머들로만 시작했으나 , , 현재는 현재는 아티스트들과 기획자들도 합류아티스트들과 기획자들도 합류 ..

Page 35: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

고객고객 ((the customer)the customer) 의 역할은 누가 하는가의 역할은 누가 하는가 ?? 프로젝트 전반프로젝트 전반 : : 기획 팀장기획 팀장 ((Lead designer)Lead designer) 혹은 기획 감독혹은 기획 감독 ((creative director).creative director).

각 각 subteamsubteam 을 위한 고객을 선별한다을 위한 고객을 선별한다 .. Sammy StudiosSammy Studios 에는 심지어 다른 모든 에는 심지어 다른 모든

팀들을 고객으로 하는 팀들을 고객으로 하는 ““주기 전문주기 전문((iteration)”iteration)” 팀이 존재한다팀이 존재한다 ..

ScrumScrum 과 게임 개발과 게임 개발

Page 36: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

오류들오류들 ((bugs)bugs) 을 어떻게 처리할 것인가을 어떻게 처리할 것인가 ?? ScrumScrum 에서는 오류에 대한 언급이 없다에서는 오류에 대한 언급이 없다 .. backlog tasksbacklog tasks 에 포함시키거나에 포함시키거나 ,, 장애물장애물 ((impedimenimpediment)t) 로 취급하여 즉시 로 취급하여 즉시

제거할 수도 있다제거할 수도 있다 ..

ScrumScrum 과 게임 개발과 게임 개발

Page 37: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

“ 상황실 (The war room)”

Page 38: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]
Page 39: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

소멸 차트 (A burn-down chart): 매일 기록

Page 40: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

우리가 얻은 교훈들우리가 얻은 교훈들

ScrumScrum 은 현재 공정의 결점들을 즉시 드러낸다은 현재 공정의 결점들을 즉시 드러낸다 .. 순식간에 반복적인 개발을 하게 된다순식간에 반복적인 개발을 하게 된다 . (You're . (You're

iterating very quickly.)iterating very quickly.) 개발 진척도를 추적하는데 매우 유용하다개발 진척도를 추적하는데 매우 유용하다 .. 팀의 팀의 ““ 속도속도 ((speed)”speed)” 를 측정할 수 있다를 측정할 수 있다 .. 소멸 차트는 현황을 파악하게 해주는 더 없이 소멸 차트는 현황을 파악하게 해주는 더 없이 귀중한 자료가 된다귀중한 자료가 된다 ..

작업들작업들 (tasks)(tasks) 을 완료하기 위해 필요한 잔여 을 완료하기 위해 필요한 잔여 시간을 추정하라시간을 추정하라 . (Estimate _remaining_ . (Estimate _remaining_ hours left in tasks.)hours left in tasks.)

Page 41: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

장애물장애물 ((impediment)impediment) 을 보고하는 것은 중요하지만을 보고하는 것은 중요하지만 , , 매우 어렵다매우 어렵다 ..

아무런 장애물도 보고되지 않는 경우를 조심하라아무런 장애물도 보고되지 않는 경우를 조심하라 .. 모든 사람이 장애물을 수면 위로 끌어올리도록 장려모든 사람이 장애물을 수면 위로 끌어올리도록 장려

(( 혹은 강제혹은 강제 )) 하라하라 .. 장애물이 없다는 것은 아마도 팀이 그 부분이 아직 장애물이 없다는 것은 아마도 팀이 그 부분이 아직

AgileAgile 을 충분히 시행하고 있지 않다는 것을 의미한을 충분히 시행하고 있지 않다는 것을 의미한다다 . (Lack of impediments probably means lack . (Lack of impediments probably means lack of buy-in in the part of the teams.)of buy-in in the part of the teams.)

우리가 경험한 전형적인 장애물들우리가 경험한 전형적인 장애물들 : : 간밤에 빌드가 다시 간밤에 빌드가 다시 엉망이 되었고엉망이 되었고 , PC, PC 가 계속 다운되고가 계속 다운되고 , , 어떤 맵은 작업을 하기에 너무 어떤 맵은 작업을 하기에 너무 느리고 등등느리고 등등 ..

우리가 얻은 교훈들우리가 얻은 교훈들

Page 42: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

우리가 얻은 교훈들우리가 얻은 교훈들

팀들간의 상호 의존을 피한다팀들간의 상호 의존을 피한다 .. 때때로 쉽지 않지만때때로 쉽지 않지만 , , 한 주기한 주기 (Sprint)(Sprint) 에서 에서

팀들끼리 상호의존하는 것은 피하라팀들끼리 상호의존하는 것은 피하라 .. 그렇지 않으면그렇지 않으면 , , 해당 팀이 자기 작업의 우선 해당 팀이 자기 작업의 우선

순위를 매기거나순위를 매기거나 , , 어떻게 처리할 것인가를 어떻게 처리할 것인가를 결정하는 게 매우 어려워진다결정하는 게 매우 어려워진다 ..

예예 : : 멀티플레이어 팀이 멀티플레이어 팀이 Xbox Live Xbox Live 메뉴를 메뉴를 추가하기 위해 프론트추가하기 위해 프론트 -- 엔드엔드 ((front-end)front-end) 팀에 의존하는 경우팀에 의존하는 경우 ..

Page 43: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

제 제 4 4 장장

Extreme ProgrammingExtreme Programming

Page 44: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

++ != XP!= XP

Page 45: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Extreme Programming(XP)Extreme Programming(XP)이란 무엇인가이란 무엇인가 ??

Extreme ProgrammingExtreme Programming 은 소프트웨어 은 소프트웨어 개발의 개발의 한한 규범규범 ((a a disciplinediscipline)) 이며이며 , , 다음 다음 44 가지 가치들에 기초하고 있다가지 가치들에 기초하고 있다 ::

단순함단순함 ((Simplicity)Simplicity) 의사소통의사소통 ((Communication)Communication) 피드백피드백 ((Feedback)Feedback) 용기용기 ((Courage)Courage)

Page 46: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

핵심적인 실천사항들핵심적인 실천사항들((Core practices)Core practices)

포괄적인 팀포괄적인 팀

계획 게임계획 게임

작고 빈번한 출시작고 빈번한 출시

고객에 의한 테스트고객에 의한 테스트

단순한 설계단순한 설계

짝 프로그래밍짝 프로그래밍

테스트테스트 -- 주도 개발주도 개발(TDD)(TDD)

설계 개선설계 개선

지속적인 통합지속적인 통합

코드 공동 소유코드 공동 소유

코딩 표준코딩 표준

메타포메타포

안정적인 속도안정적인 속도

Page 47: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

뭐가 그렇게 극단적뭐가 그렇게 극단적 (extreme)(extreme)이길래이길래 ??

뭔가 효과가 좋다면뭔가 효과가 좋다면 , , 그걸 극단적으로 그걸 극단적으로 시행한다시행한다 ..

코드를 상호 검토하는 게코드를 상호 검토하는 게 ((Code review)Code review) 좋아좋아 ? ? 그러면 항상 짝 프로그래밍을 해야지그러면 항상 짝 프로그래밍을 해야지 ..

잦은 통합이라고잦은 통합이라고 ?? 지속적인 통합을 하자지속적인 통합을 하자 !! 테스트는테스트는 ? ? 모든 것에 단위 검사를 작성하고모든 것에 단위 검사를 작성하고 , ,

구축을 할 때마다구축을 할 때마다 테스트한다테스트한다 ..

Page 48: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

XPXP 의 실천 사항들의 실천 사항들

각각의 실천 사항들이 다른 실천 사항들을 각각의 실천 사항들이 다른 실천 사항들을 보완해준다보완해준다 ..

리팩토링은 단위 검사를리팩토링은 단위 검사를 필요로 하고필요로 하고 ,, 짝 프로그래밍은 코딩 표준을짝 프로그래밍은 코딩 표준을 필요로 하고필요로 하고 ,, 단순한 설계는 리팩토링을 필요로 하고단순한 설계는 리팩토링을 필요로 하고 ,, 등등등등 ......

일부만 골라서 채택하지 않도록 주의할 것일부만 골라서 채택하지 않도록 주의할 것 . . 실천 사항들이 서로 조화와 균형을 이루도록 실천 사항들이 서로 조화와 균형을 이루도록 해야만 한다해야만 한다 ..

Page 49: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

XPXP 와 게임 개발와 게임 개발

가능하냐고가능하냐고 ? ? 당연당연 !!

게임 개발이라고 소프트웨어 개발과 크게 게임 개발이라고 소프트웨어 개발과 크게 다르지 않다다르지 않다 ..

차이점은 그래픽 소스의 양차이점은 그래픽 소스의 양 ((amount of amount of binary assets)binary assets) 일 따름이다일 따름이다 ..

코드코드 //데이터간의 상호작용은 신속한 기능 데이터간의 상호작용은 신속한 기능 검사와 지속적인 통합에 장애가 될 수 있다검사와 지속적인 통합에 장애가 될 수 있다 ..

Page 50: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

짝 프로그래밍은 언제나 논란거리이다짝 프로그래밍은 언제나 논란거리이다 .. 게임 산업에는 각양각색의 전문가들이 게임 산업에는 각양각색의 전문가들이

존재한다존재한다 .. ““ 홀로 작업하는홀로 작업하는 천재 프로그래머들천재 프로그래머들 (Prima (Prima

Donnas)”Donnas)” 은 짝 프로그래밍을 좋아하지 은 짝 프로그래밍을 좋아하지 않는다않는다 ..

짝 프로그래밍이 두 명이 따로 작업하는 것과 짝 프로그래밍이 두 명이 따로 작업하는 것과 같은 속도를 내는가같은 속도를 내는가 ? ? 사실 그렇지는 않지만사실 그렇지는 않지만 , , 품질은 더 좋다품질은 더 좋다 ..

XPXP 와 게임 개발와 게임 개발

Page 51: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

TDDTDD 는 어떻게 이루어지는가는 어떻게 이루어지는가 ??

커다란 한 기능커다란 한 기능 ((a larger feature)a larger feature) 를 구성하는 작은 를 구성하는 작은 작업작업 (task)(task) 을 구현할 필요가 있다을 구현할 필요가 있다 ..

먼저 그 기능먼저 그 기능 ((feature)feature) 을 사용하는 가장 간단한 을 사용하는 가장 간단한 테스트를 작성한다테스트를 작성한다 ..

테스트는 분명 실패하거나 심지어는 컴파일조차 되지 테스트는 분명 실패하거나 심지어는 컴파일조차 되지 않을 것이다않을 것이다 ..

이제 그 테스트를 통과하는 가장 간단한 코드이제 그 테스트를 통과하는 가장 간단한 코드 ((the the simplest possible code)simplest possible code) 를 작성한다를 작성한다 ..

테스트를 리팩토링한다테스트를 리팩토링한다 ..

불필요한 것을 제거하고 반복한다불필요한 것을 제거하고 반복한다 . (Rinse and . (Rinse and repeat.)repeat.)

Page 52: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

TDDTDD 의 장점의 장점

44 가지 주요 장점들가지 주요 장점들 :: 필요하면 언제든지 리팩토링할 수 있다는 필요하면 언제든지 리팩토링할 수 있다는

자신감자신감 ((Confidence).Confidence). 단위 검사로 어떤 문제든 즉시 잡아낸다단위 검사로 어떤 문제든 즉시 잡아낸다 .. 테스트 자체가 유효 기간이 없는테스트 자체가 유효 기간이 없는 문서문서 (a (a

documentation that is never out of documentation that is never out of date)date) 역할을 한다역할을 한다 ..

결과 지향적인 설계를 다른 어떤 것들보다 결과 지향적인 설계를 다른 어떤 것들보다 효과적이다효과적이다 !!

Page 53: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

CodebaseCodebase 의 품질은 그것을 얼마나 쉽게 의 품질은 그것을 얼마나 쉽게 리팩토링리팩토링 (refactor)(refactor) 할 수 있냐에 달려있다할 수 있냐에 달려있다 ..

어떤 일이 일어날지 몰라 감히 코드를 수정하길 어떤 일이 일어날지 몰라 감히 코드를 수정하길 두려워한다면두려워한다면 , , 그 그 codebasecodebase 는 죽은거나 는 죽은거나 다름없다다름없다 ..

광범위한 단위 검사는 불상사를 예방한다광범위한 단위 검사는 불상사를 예방한다 . . ((Extensive unit tests prevent that from Extensive unit tests prevent that from ever happening.)ever happening.)

TDDTDD 의 장점의 장점

Page 54: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

TDDTDD 를 게임 개발에 적용하기를 게임 개발에 적용하기

어떻게 테스트어떻게 테스트 -- 주도 개발을 게임 개발에 주도 개발을 게임 개발에 적용할 수 있을까적용할 수 있을까 ??

한 번에 하나씩 개발하고 테스트한다한 번에 하나씩 개발하고 테스트한다 .. 이게 이게 단위 검사라는 것을 명심할 것단위 검사라는 것을 명심할 것 ..

그래픽과 전혀 관련 없는 것들 대부분을 그래픽과 전혀 관련 없는 것들 대부분을 테스트한다테스트한다 ..

고도로 모듈화된 라이브러리를 구축해서고도로 모듈화된 라이브러리를 구축해서 , , 오직 오직 필요한 것만 가져다가 사용한다필요한 것만 가져다가 사용한다 ..

Page 55: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

TDDTDD 를 실행하라를 실행하라

유니트유니트 -- 테스팅 프레임워크를 사용한다테스팅 프레임워크를 사용한다 .. 새로운 테스트를 추가하기 정말 쉬워야 한다새로운 테스트를 추가하기 정말 쉬워야 한다 .. 코드가 컴파일되자 마자 테스트가 구축되고 코드가 컴파일되자 마자 테스트가 구축되고

실행되어야 한다실행되어야 한다 .. 테스트는 매우 빨리 실행한다테스트는 매우 빨리 실행한다 .. C++C++ 의 경우의 경우 , CppUnitLite, CppUnitLite 를 체크 를 체크

아웃한다아웃한다 . (. ( 또한 또한 CppUnitCppUnit 와 와 Boost Test Boost Test FrameworkFramework 를 펴볼 것를 펴볼 것 .).)

Page 56: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임에 게임에 TDDTDD 를 적용하자를 적용하자

작업작업 (Task)(Task): HP : HP 회복약 위로 걸어가기회복약 위로 걸어가기 ..

TEST (HealthPowerup, AddsHealth) {TEST (HealthPowerup, AddsHealth) { Player player; // Created at the originPlayer player; // Created at the origin HealthPowerup powerup; // same hereHealthPowerup powerup; // same here int beforeHealth = player.GetHealth();int beforeHealth = player.GetHealth(); player.Update();player.Update(); CHECK (player.GetHealth() > beforeHealth); CHECK (player.GetHealth() > beforeHealth); }}

Page 57: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임에 게임에 TDDTDD 를 적용하자를 적용하자TEST (HealthPowerup, AddsCorrectAmountOfHealth) {TEST (HealthPowerup, AddsCorrectAmountOfHealth) {

Player player; // Created at the originPlayer player; // Created at the origin HealthPowerup powerup; // same hereHealthPowerup powerup; // same here int beforeHealth = player.GetHealth();int beforeHealth = player.GetHealth(); player.Update();player.Update(); CHECK_INT_EQUALS (player.GetHealth() == CHECK_INT_EQUALS (player.GetHealth() == beforeHealth + powerup.GetHealthAmount()); beforeHealth + powerup.GetHealthAmount()); }}

중복된 코드가 너무 많음중복된 코드가 너무 많음 : : 리팩토링할 것리팩토링할 것 !!

Page 58: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임에 게임에 TDDTDD 를 적용하자를 적용하자SETUP (HealthPowerup) {SETUP (HealthPowerup) { Player player; // Created at the originPlayer player; // Created at the origin HealthPowerup powerup; // same hereHealthPowerup powerup; // same here int beforeHealth = player.GetHealth();int beforeHealth = player.GetHealth(); player.Update();player.Update();}}

TEST (HealthPowerup, AddsHealth) {TEST (HealthPowerup, AddsHealth) { CHECK (player.GetHealth() > beforeHealth); CHECK (player.GetHealth() > beforeHealth); }}TEST (HealthPowerup, AddsCorrectAmountOfHealth) {TEST (HealthPowerup, AddsCorrectAmountOfHealth) { CHECK_INT_EQUALS (player.GetHealth() == CHECK_INT_EQUALS (player.GetHealth() == beforeHealth + powerup.GetHealthAmount()); beforeHealth + powerup.GetHealthAmount()); }}

TEARDOWN (HealthPowerup) {TEARDOWN (HealthPowerup) {}}

Page 59: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임에 게임에 TDDTDD 를 적용하자를 적용하자

최대값 이상의 최대값 이상의 HPHP 를 획득하지 않는지 를 획득하지 않는지 확인한다확인한다 ..

HP HP 회복약이 사라지는지 확인한다회복약이 사라지는지 확인한다 ..

PCPC 가 회복약 근처에 있을 경우에만 작동하는지 가 회복약 근처에 있을 경우에만 작동하는지 확인한다확인한다 ..

등등등등 ......

Page 60: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임에 게임에 TDDTDD 를 적용하자를 적용하자

그러면 그래픽은그러면 그래픽은 ??

대부분의 개발자들은 대부분의 개발자들은 pixel pixel 수준의 것을 수준의 것을 테스트할 필요가 없다테스트할 필요가 없다 ..

렌더러 계층과 하드웨어 사이의 통신을 렌더러 계층과 하드웨어 사이의 통신을 테스트한다테스트한다 ..

Page 61: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

게임에 게임에 TDDTDD 를 적용하자를 적용하자AIAI 의 경우는의 경우는 ??

이것은 단위 검사이지이것은 단위 검사이지 , , 기능 검사가 아님기능 검사가 아님 ..

예예 : ‘: ‘캐릭터가 총에 맞아서 캐릭터가 총에 맞아서 HPHP 가 매우 낮아지면가 매우 낮아지면 , , 엄폐물을 찾는다엄폐물을 찾는다 .’.’

여러 가지 작업들이 관련되어 있지만여러 가지 작업들이 관련되어 있지만 , , 각각 따로 각각 따로 테스트한다테스트한다 .. 총에 맞았을 때총에 맞았을 때 , HP, HP 가 감소해야 한다가 감소해야 한다 .. HPHP 가 특정 수준 이하가 되면가 특정 수준 이하가 되면 , flag, flag 들이 켜진다들이 켜진다 .. 총에 맞아서총에 맞아서 ,, HPHP 가 낮아지면가 낮아지면 , , 엄폐물을 찾는다엄폐물을 찾는다 .. 엄폐 탐색 상태가 되면엄폐 탐색 상태가 되면 , , 엄폐물로 가는 적합한 경로엄폐물로 가는 적합한 경로 ((the the

right path nodes)right path nodes) 를 찾는다를 찾는다 ..

Page 62: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

TDDTDD 요령요령

구축을 할 때마다 테스트가 시행되도록 한다구축을 할 때마다 테스트가 시행되도록 한다 ..

오류가 나타나면오류가 나타나면 ,, 먼저 그 오류를 검출할 테스트먼저 그 오류를 검출할 테스트 (a (a test that fails because of the bug)test that fails because of the bug) 를 작성한 를 작성한 다음다음 , , 오류를 고친다오류를 고친다 ..

단위 검사가단위 검사가 코드의 코드의 50~75%50~75% 를 차지하더라도 를 차지하더라도 놀라지 마라놀라지 마라 . . 시간이나 코드의 낭비가 아니다시간이나 코드의 낭비가 아니다 . . 오히려 단위 검사가 잘 쓰여지고 리팩토링하기 쉬운 오히려 단위 검사가 잘 쓰여지고 리팩토링하기 쉬운 것이 중요하다것이 중요하다 ..

코드가 단위 검사를 많이 포함할수록코드가 단위 검사를 많이 포함할수록 , , 리팩토링하기가 더욱 쉬워진다리팩토링하기가 더욱 쉬워진다 ..

Page 63: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

지속적인 통합지속적인 통합

하나의 작업이 완료될 때마다 몇 번씩하나의 작업이 완료될 때마다 몇 번씩 , , 시스템을 시스템을 통합하고 구축하라통합하고 구축하라 ..

그래픽 자원그래픽 자원 (asset)(asset) 을 구축하는 것은 오랜 시간이 을 구축하는 것은 오랜 시간이 들기 때문에들기 때문에 , , 데이터 주도형데이터 주도형 (data-driven) (data-driven) 게임들에서는 조금 힘들 수 있다게임들에서는 조금 힘들 수 있다 ..

코드를코드를 제출하기제출하기 (commit) (commit) 전에전에 , , 변경한 것들이 변경한 것들이 제대로 작동하는지 확인하고 싶어할 것이다제대로 작동하는지 확인하고 싶어할 것이다 . . 단위 단위 검사는 시작에 불과하며검사는 시작에 불과하며 , , 아마도 몇 번의 간단한 기능 아마도 몇 번의 간단한 기능 검사도 필요할 것이다검사도 필요할 것이다 ..

이것은 추구할만한 가치가 있는 위대한 목표이다이것은 추구할만한 가치가 있는 위대한 목표이다 . . 단단 , , 여러 분기점들여러 분기점들 (branches)(branches) 에서 동시 개발하는 에서 동시 개발하는 경우에는 좀 괴로울 것이다경우에는 좀 괴로울 것이다 ..

Page 64: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

정리정리 ((Wrap Up)Wrap Up)

Page 65: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Agile developmentAgile development 를 를 시작하기시작하기

처음부터 처음부터 AgileAgile 을 입맛에 맞게 뜯어고치고 을 입맛에 맞게 뜯어고치고 싶은 유혹을 떨쳐버려라싶은 유혹을 떨쳐버려라 ..

먼저 먼저 Scrum, XPScrum, XP 혹은 원하는 다른 기법부터 혹은 원하는 다른 기법부터 시작하고시작하고 , , 그것을 그대로 따른다그것을 그대로 따른다 ..

실천 사항들 중 어떤 것이 효과가 있고실천 사항들 중 어떤 것이 효과가 있고 , , 어떤 어떤 것이 효과가 없는지 확실해진 다음에것이 효과가 없는지 확실해진 다음에 ,, 자신의 자신의 팀에 맞게 고친다팀에 맞게 고친다 ..

Page 66: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

Agile developmentAgile development 를 를 시작하기시작하기

배급사를 합류시키는 것이 어려울 수도 있다배급사를 합류시키는 것이 어려울 수도 있다 .. 배급사를 이해시키고배급사를 이해시키고 ,, 그들을 고객으로 받아들인다그들을 고객으로 받아들인다 .. 프로젝트에 대해서 여러 가지 의견을 갖고 프로젝트에 대해서 여러 가지 의견을 갖고

있을 테고있을 테고 , , 그것은 어쨌든 프로젝트에 그것은 어쨌든 프로젝트에 도움이 될 것이다도움이 될 것이다 ..

만약 이 모든 시도들이 실패한다면만약 이 모든 시도들이 실패한다면 , Agile , Agile developmentdevelopment 를 이해하는 새로운 배급사를 를 이해하는 새로운 배급사를 물색한다물색한다 ..

Page 67: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

참고 자료참고 자료

필독서필독서 ::

Agile and Iterative Development, Craig Larman, Craig Larman

Agile Software Development with Scrum, Ken Agile Software Development with Scrum, Ken SchwaberSchwaber

익스트림 프로그래밍익스트림 프로그래밍 , Kent Beck, , Kent Beck, 김창준 역김창준 역추천서추천서 ::

Questioning Extreme Programming, Pete McBreenQuestioning Extreme Programming, Pete McBreen

RefactoringRefactoring, Martin Fowler, , Martin Fowler, 윤성준 역윤성준 역테스트 주도 개발테스트 주도 개발 , Kent Beck, , Kent Beck, 김창준 역김창준 역소프트웨어 프로젝트에서의 리스크 관리소프트웨어 프로젝트에서의 리스크 관리 , Tom , Tom

DeMarco, DeMarco, 김준식 역김준식 역

Page 68: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

참고 자료참고 자료

웹 사이트웹 사이트 ::

Control Chaos (http://www.controlchaos.com). ScrumControl Chaos (http://www.controlchaos.com). Scrum 에 에 관한 웹 사이트관한 웹 사이트 ..

Mountain Goat Software Mountain Goat Software (http://www.mountaingoatsoftware.com/scrum/index.php). (http://www.mountaingoatsoftware.com/scrum/index.php). ScrumScrum 에 대한 추가 정보에 대한 추가 정보 ..

Extreme Programming: A Gentle Introduction Extreme Programming: A Gentle Introduction (http://www.extremeprogramming.org)(http://www.extremeprogramming.org)

Extreme Programming Resources Extreme Programming Resources (http://www.xprogramming.com)(http://www.xprogramming.com)

Agile developmentAgile development 와 게임와 게임 ::

Agile MethodologyAgile Methodology 와와 ScrumScrum 을 이용한 게임 개발을 이용한 게임 개발 . Clinton . Clinton Keith (Sammy StudiosKeith (Sammy Studios 의 기술 이사의 기술 이사 )) 의 의 GDC 2005 GDC 2005 강연강연 ..

Page 69: 애자일 게임 개발: 현실 세계의 혼돈을 다루는 법 (Agile Game Development: Dealing With Chaos In The Real World) [MIGS 2004]

질문질문 ??

이 슬라이드는 다음의 주소에서 찾을 수 있습니이 슬라이드는 다음의 주소에서 찾을 수 있습니다다 : : http://www.gamesfromwithin.comhttp://www.gamesfromwithin.com

오역이나 수정에 대한 의견은 아래의 주소로 언제든지 연락주십시요오역이나 수정에 대한 의견은 아래의 주소로 언제든지 연락주십시요 ::

[email protected]@gmail.com