게임개발과 게임공정관리
1. 담당부서와 역할분담
전체 게임개발팀은 다음과 같이 각각의 작업에 기준한 부서들로 구성된다.
(가) 게임 디자인/관리 부서
이 부서는 게임제작에 직접적으로 연관되는 관리분야를 담당한다. 규모가 작은 회사의 경우 낮은 레벨의 관리팀이 종종 높은 레벨의 프로그램·디자인팀과 중복되기도 한다.
1)소프트웨어 기획자의 역할=소프트웨어 기획자의 역할은 디자인된 게임의 내용을 기술적인 기능 리스트로 나눈 후 각각의 내용을 구현하는 데 시간과 노력이 얼마나 필요한지를 계산하는 것이다.
2)선임 아키텍트의 역할=선임 아키텍트의 역할은 소프트웨어 기획과 함께 게임제작에 필요한 기능 리스트를 가지고 프로그램 모듈의 사양서를 만드는 것이다. 이 경우 선임 아키텍트는 프로젝트의 기초적인 구조를 잡아야 한다. 각 모듈의 상세 디자인은 일반적으로 선임 프로그래머가 담당한다. 가끔 상세 디자인은 선임 프로그래머 밑에 있는 프로그래머가 담당하기도 한다.
3)프로젝트 매니저의 역할=프로젝트 매니저의 역할은 소프트웨어 기획과 선임 아키텍트가 만들어 놓은 일을 잘 조합해 효율적인 스케줄을 구성하는 것이다. 프로젝트 매니저는 팀 멤버간 의견을 조율하고 개발팀과 관리팀, 마케팅팀 사이의 창구가 된다.
4)게임디자이너의 역할=게임디자이너의 역할은 개발팀이 제작할 게임을 디자인하는 것이다. 게임디자이너는 먼저 게임의 개요문서를 작성하고 그 다음 이를 구체적인 게임기획서로 만들어 나간다. 게임디자이너는 자신이 디자인한 요소들의 실현 가능성을 검토하기 위해 항상 소프트웨어 기획자와 함께 일하게 된다.
(나) 프로그래밍 부서
일반적으로 전체적인 구조를 담당하는 한 명의 선임 프로그래머와 그래픽 시스템, AI엔진, 인터페이스시스템 프로그래머 등 제각기 특기분야를 가지는 4명 정도로 구성된다.
1)선임 프로그래머의 역할=선임 프로그래머의 역할은 프로그래머들의 일을 체크하고 정리해서 스케줄대로 일을 진행시켜 나가는 것이다. 그리고 이 과정에서 드러나는 문제를 적절하게 처리할 수 있도록 한다. 선임 프로그래머는 일반적으로 팀 내에서 가장 뛰어난 프로그래머이며 프로그램의 전체적인 완성도에 대한 책임자다.
2)프로그래머의 역할=프로그래머의 역할은 선임 아키텍트와 소프트웨어기획자로부터 전달받은 프로그램 상세 사양서를 구현하는 것이다. 프로그래머의 임무는 모듈개발·함수테스트·종합테스트·버그처리 등과 같은 일반적인 프로그램 관련 업무를 맡는다.
(다) 그래픽 부서
대부분의 경우에 아티스트 그룹은 두 가지 이상의 게임에 필요한 그래픽 업무에 투입된다.
1)선임 아티스트의 역할=선임 아티스트의 주된 업무는 선임 프로그래머나 게임디자이너와 함께 현재 작업하고 있는 그래픽 자원들이 게임에 적합한 것인가를 검토하는 것이다. 또한 선임 아티스트는 모든 아티스트들이 만들어 내는 그래픽 자원이 서로 조화를 이루고 그래픽의 방향성이 프로젝트의 방향성과 일치하도록 관리해야 한다.
2)아티스트의 역할=아티스트의 역할은 게임에 사용될 그래픽 업무를 담당하는 것이다. 여기서 그래픽 업무라 함은 캐릭터 그림, 배경 그림, 매뉴얼 디자인, 홍보 포스터, 패키지 디자인 등을 가리킨다.
(라) 음악·기타 부서
이 부서에는 음악·효과음 등 게임 자체나 게임개발에 필요한 기타 요소를 만들어 내는 사람들이 속해 있다.
1)음악가의 역할=음악가는 일반적으로 게임개발 프로세스와는 따로 떨어져서 일하게 된다. 음악을 만드는 작업은 대단히 개인적인 것이므로 대부분의 경우 음악가들은 게임의 데모나 동영상, 심할 경우에는 필요한 음악의 분위기가 적혀 있는 문서만 가지고 게임에 필요한 음악을 만들게 된다. 게임내의 상황에 따라 템포나 분위기가 변화하는 인터랙티브 뮤직의 경우에는 음악가와 다른 팀 멤버간 보다 긴밀한 관계가 필요해진다. 인터랙티브 뮤직을 만들 경우 필요에 따라 변하는 테마나 그 테마의 반복에 대한 상세한 문서가 필요하다.
2)음향효과 제작의 역할=모든 게임에는 음향효과가 있다. 음향효과 제작의 역할은 총소리, 버튼 클릭 소리, 몬스터가 죽을 때 내는 소리 등 게임에 사용되는 모든 종류의 음향을 제작하는 것이다. 이는 일반적으로 상당히 독립적인 일이다. 음향효과 목록은 게임디자이너가 만들며 이를 참조해 게임에서 필요한 형태의 자원을 만들어 내는 것이 음향효과 제작이다.
3)기타 전문가들의 역할=전문가들 중 몇몇은 개발 프로세스에 직접적으로 관여하며 다른 사람들은 외주 형식으로 관여한다. 예를 들어 모션캡처 배우는 캐릭터의 동작제작에 깊이 관여한다. 모션캡처된 애니메이션은 외부 전문업체에서 제작하고 아티스트가 개발에 필요한 캐릭터 동작의 샘플을 제작한 후 나중에 삽입시키는 것이 일반적이다. 이외에도 회사 안에서 처리할 수 없는 일들은 외부 스튜디오에서 작업한다.
(마) 개발지원·품질관리 부서
이 부서는 게임을 테스트해 판매가능한 정도의 수준인지를 판단하는 테스트팀을 포함한다.
1)품질관리팀장의 역할=품질관리팀장의 역할은 팀을 관리하고 프로젝트 매니저나 게임디자이너와 함께 게임을 플레이적인 측면에서부터 각각의 기능이 사양서대로 잘 작동하는가에 이르기까지 모든 것을 검사하는 것이다.
2)품질관리기술자의 역할=품질관리기술자의 역할은 프로그램팀이 만든 코드를 테스트하는 것이다. 품질관리기술자는 각 코드의 기능이 필요기능 리스트에 있는 모든 것을 수용하는지를 테스트하는데 이는 팀장으로부터 받은 계획서에 따라 코드의 모든 분기점을 추적하는 작업이다. 이러한 테스트는 높은 기술적 지식이 필요하기 때문에 프로그래머 그룹이 대신하기도 한다. 이러한 테스트를 ‘테스터가 테스트 품목의 내부구조를 알고 있다’라는 의미에서 클리어박스 테스트라고 부른다. 클리어 박스 테스트의 반대의미로 블랙박스 테스트가 있다.
3)플레이테스트 요원의 역할=플레이테스트 요원의 역할은 게임을 실제로 하면서 테스트를 하는 것이다. 플레이테스트의 종류에는 다음의 네 가지가 있다.
첫번째 방법은 팀원들을 그대로 플레이테스트 요원으로 활용하는 것인데 대부분의 경우에 팀원들은 이미 자신들이 만들고 있는 게임에 대해 너무 친숙해서 객관적이기 어렵기 때문에 그리 좋은 방법은 아니다.
두번째 방법은 고정적인 플레이테스트 요원을 고용하는 것이다. 이 방법은 대부분 규모가 큰 조직을 위한 방법이지만 몇가지 프로젝트가 동시에 진행되고 있는 회사라면 충분히 효율적인 방법이기도 하다.
세번째 방법은 일의 양이 불규칙적이어서 고정적인 플레이테스트 요원을 고용하는 것이 효율적이지 못하다고 생각한다면 플레이테스트 전문업체에 외주를 주는 방법이다. 또한 전문업체는 블랙박스 테스트에 아주 적합하다. 하지만 방식 자체가 외주이기 때문에 거의 완성된 제품의 하드웨어 호환성이나, 다른 방법으로는 찾아내기 힘든 버그를 찾기 위한 방법으로 사용하게 된다.
네번째 방법은 사용자에게 직접 베타테스트를 맡기는 것이다. 이 방법은 회사의 크고 작음에 관계없이 상당히 좋은 방법이다. 베타테스트란 거의 완성된 게임을 사용자들이 직접 테스트하도록 하는 것이다. 이 경우 베타테스트용 프로그램은 실제 제품에 비해 베타버전에서는 작동하지 않는 기능을 포함하도록 하는 제약을 주는 것이 일반적이다. 베타테스트는 회사측의 관리가 쉽도록 미리 신청을 받은 일정 수의 사용자만을 대상으로 하는 클로즈 베타와 웹이나 잡지부록으로 베타를 배포해 누구나 테스터에 참가하도록 하는 오픈 베타가 있다.
4)시스템엔지니어의 역할=SE(System Engineer)라는 약칭으로 흔히 부르는 시스템엔지니어의 역할은 회사내의 컴퓨터 작업환경을 관리하는 것이다.
2. 게임개발 단계
(가) 디자인 단계
1)초기 개념(Initial Concept):초기 개념은 순수하게 창조적인 부분으로 프로젝트의 시작단계에 위치하게 된다.
△결과물:아이디어, 어떤 게임인지를 묘사하는 노트, 기본 개념 스케치와 도표
△추천절차:관계자들(경영진·개발팀·유통사·동업자 등)에게 아이디어에 대한 프레젠테이션을 통해 이해 증진
2)개요 문서:개요 문서는 게임의 주요한 특징을 정의하고 팀원들이 이해할 수 있도록 게임의 분위기를 그려줘야 한다.
△결과물:게임을 묘사하는 정형화(스토리·모양새·기본적인 기교)된 문서
△추천절차:문서, 게임 디자인은 관계자들(초기 개념을 검토했던 사람들)에 의해 검토 단계에서 충분히 논의돼야 하며 다음 단계로 넘어가기 전에 완결
3)전체 디자인:전체 디자인은 구체적인 게임 디자인에 들어가기 전에 먼저 대강의 개요를 잡아보는 것이다.
△결과물:모든 유닛·캐릭터·줄거리·외관·분위기·배경·조작 등 게임과 관련된 모든 것에 대한 자세한 정의(게임 설명서를 만드는 기초)
△추천절차:전체 팀원 혹은 최소한 대표자들이 문서를 검토
4)아키텍처:아키텍처 문서는 초기단계의 기술문서로 프로젝트를 어떻게 구성할 것인지에 대해 모듈 수준에서 서술하게 된다.
△결과물:게임을 구성하는 모듈, 이들의 관계를 정의하는 문서
△추천절차:프로그램팀과 각 파트의 책임자가 문서를 검토
5)모듈 디자인:모듈의 라이브러리에 대한 정보를 제공하기 위해 주로 사용된다.
△결과물:특정 모듈의 기능과 목적, 사용처의 예제 등을 포함한 자세한 지침이 담긴 문서(모듈과 함께 유지보수)
△추천절차:선임 프로그래머, 소프트웨어 아키텍트, 소프트웨어 기획자, 두 사람 이상의 프로그래머들이 기술문서를 검토. 가능하면 검토자 중 한 사람을 재사용 담당자로 지명해서 소프트웨어를 최대한 재사용
(나) 개발단계
개발단계는 전체 게임개발 주기에 있어서 가장 중요한 단계다.
1)세부 기술 디자인:모든 모듈은 세부 기술 디자인 문서를 가지고 개발해야 한다.
△결과물:인터페이스, 알고리듬, 디자인의 선택, 테스트 스크립트, 테스트 도구 등의 특정모듈에 대한 자세한 기술사양이 담긴 문서
△추천절차:개발자와 소프트웨어 아키텍트가 디자인을 검토
2)개발:모듈은 보통 일정한 형식의 디자인 문서를 바탕으로 개발된다.
△결과물:프로젝트의 모듈, 코드파일, 3D모델, 2D작화, 텍스트환경 설정 파일, 프로젝트와 관련된 모든 것
△추천절차:개발자가 코드를 검토
3)단위 테스트:단위 테스트는 개발자가 작성한 코드를 개발자 자신이 테스트하는 것이다.
△결과물:단위 테스트의 결과
△추천절차:단위 테스트 결과 발견된 오류는 프로젝트 관리자에게 보고하고 해당 개발자가 수정
4)통합 테스트:일반적으로 개발자가 수행하는 마지막 테스트다.
△결과물:통합 테스트의 결과
△추천절차:단위 테스트와 동일하게 수행
5)마무리:마무리를 하려면 모든 테스트를 성공적으로 끝내야 한다.
△결과물:테스트가 끝나서 오류가 없음이 확인된 프로젝트 모듈
△추천절차:소스관리 프로그램에 등록
(다) 테스트 단계
테스트 단계에서는 세 가지의 중요한 작업을 하게 된다.
1)시스템 테스트:테스터로 하여금 시스템 테스트, 품질확인, 플레이 테스트 등을 여러 번 반복 수행하도록 한다.
△결과물:시스템 테스트 보고서
△추천절차:오류를 프로젝트 관리자에게 보고하고 수정
2)품질:품질확인의 목적은 미학적으로 게임의 분위기, 메뉴 스크린, 설명서 등이 사용자에게 친근하고 일관성이 있는지를 확인하는 것이다.
△결과물:품질확인 보고서
△추천절차:품질을 평가할 수 있도록 프로젝트관리자와 게임디자이너 모두에게 결과를 보고
3)플레이테스트:테스트의 마지막 단계로서 게임에서 할 수 있는 모든 것을 테스트한다.
△결과물:게임플레이 보고서
△추천절차:추가적인 검토를 위해 게임디자이너와 프로젝트관리자에게 문제를 보고
<김순기기자 soonkkim@etnews.co.kr>
유승호 (shryu@gameinfinity.or.kr)
한국전산원 선임연구원, 한국문화정책개발원 책임연구원
한국게임산업개발원 산업진흥본부장
게임벤처기업평가위원장
명지대 여가정보학과 겸임교수
저서:디지털시대와 문화콘텐츠, 사이버커뮤니케이션론 외 다수
관련 통계자료 다운로드 단계별 게임 디자인 요소