게임 개발 체계와 적용 - 1. 워터폴 (Waterfall) by 김태호

워터폴 (waterfall) 체계는 무엇인가?

말 그대로 폭포 형태로 작업 완성 후 다음 단계로 넘겨주며 일방향으로만 진행하며 개발하는 형태를 뜻합니다.


워터폴의 특징

아주 단순하게 봐서는 공장의 생산 라인처럼 단계마다 작업이 완료 된 후 다음으로 넘어가서 완성 될 때까지 진행되는 방식입니다.


워터폴의 적용

게임 개발 체계 중 가장 흔하다고 볼 수 있는 프로세스가 워터폴입니다. 특히 한국 게임 개발 업계에서는 지배적으로 사용되는 프로세스 입니다. 널리 사용되는 이유는 가장 오래된 방식이라 그렇기도 하지만, 상당히 직관적이기 때문이기도 합니다.

워터폴은 게임 전체나 게임의 일부 부분을 개발하는데에 사용됩니다. 플래쉬, 웹, 모바일 게임 등 규모가 작은 게임은 하나의 워터풀 프로세스로 게임 전체가 완성 될 수 있습니다. 하지만 콘솔, PC 온라인 게임 등 어느정도 규모가 되는 게임은 부분형으로 여러개의 워터폴이 동시에 진행 되고 있다고 보셔야 합니다.


 

위의 도표는 하나의 워터폴 프로세스를 간략화 한것인데, 실질적인 개발 체계는 회사, 팀, 개발 여견 등에 따라 다르기도 하며 훨씬 더 크기 때문입니다. 하지만 위의 4단계는 워터폴의 기본이라 모든 상황에 적용된다고 보시면 되겠습니다.


기획

기획자들이 우선 게임 전체나 게임 일부의 기획을 완료해야 하는 단계입니다. 워터폴 체계에서는 기획자의 작업이 상당히 어렵습니다. 그 이유는 구현 후 단계에서 수정 작업을 최대한 줄이기 위해 모든 것이 감안된 최상의 기획안이 나와야 하기 때문이죠. 재미, 구현 가능성, 정확한 리소스 리스트 등 준비가 완벽해야 구현 단계로 넘어가게 됩니다. 


구현

기획대로 프레임워크상에 게임 시스템을 구축하고 그래픽 개발자들이 완료한 리소스를 구현하여 테스트 버젼이 만들어지게 됩니다. 큰 게임은 프로토타이핑, 작은 게임은 알파 버젼이라고 생각하시면 되겠네요. 구현 한 시스템을 테스트를 하기 위해 필요한 그래픽 리소스부터 적용하여 시스템이 의도대로 구현되었는지를 테스트 합니다.


테스트

리소스를 양산하며 적용시키며 게임의 전반적인 플레이를 테스트합니다. 구현 단계에서의 테스트와는 달리, 이 단계에서는 기본 최소 이상의 많은 리소스와 심도 있는 테스트로 버그가 발생하는지 테스트합니다. 온라인 게임의 경우 동기화, AI 등 네트워크와 서버 테스트도 진행하게 됩니다.


수정

구현 및 테스트 과정에서 발생한 문제점들을 수정하는 단계입니다. 단순한 버그의 경우 수정 단계까지 필요치 않겠지만, 게임 개발이라는 것이 순탄치만은 않기에 큰 문제점들이나 기획적인 이슈와 그래픽 이슈 등을 재고하여 재작업이 필요할 수 도 있습니다. 가장 중요한 기준은 '의도대로 실행되는가?' 그리고 '재미가 있는가?'입니다. 


워터폴의 장점

1, 직관성

앞서 말씀드린대로 워터폴은 상당히 직관적입니다. 마치 공장의 조립 라인처럼 단계별로 더욱 더 완성된 모습을 찾아가는 형식이라 작업, 진행, 검수 등 모든 것이 직관적입니다. 

2. 빠른 적응력

국내 게임 개발 업계의 99%가 사용하는 체계로써 프로세스의 이해도가 상당히 높습니다. 처음이라 해도 직관적이라 배우기도 쉽고요. 워터폴은 개발팀 마다 문화와 방식의 차이 때문에 다양하게 응용될 수 있으니 그런 차이점들만 찾아 적응하면 됩니다.


워터폴의 단점

1. 개발 속도

전 단계에서 작업을 완료 해줘야 다음 단계로 넘어가게 되는데, 개발은 순탄치만은 않기에 일정이 연기되거나 작업이 추가되거나 하죠. 그리고 특정 단계별 작업량에 따라 소요되는 시간 또한 상당히 늘어날 수 있습니다.

2. 프로세스적 모순

단계별 설명을 읽으시다가 "흠 이거 뭔가 좀..." 하신 분들 계셨을겁니다. 공장의 비유를 다시 사용하자면, 조립 라인 끝에 QC(Quality Control)가 "이거 뭐야! 잘못 됐잖아!" 이러는 순간 라인 기계 멈추고 문제 파악해서 제품을 폐기시키거나 다시 조립하게되죠. 워터폴도 비슷합니다. 그렇다면 단계별로 QC를 하면 된다? 네, 흔히 사용되는 방법입니다. 다만, 해결팩을 찾아보면 그 전 단계로 돌려보내야할 경우가 생기기 때문에 워터폴이 역흐름을 타게됩니다.

3. 단계 의존도 

워터폴의 성공 여부는 간단합니다. 전 단계에서 얼마나 작업을 꼼꼼하게 잘 해주느냐의 차이입니다. 기획이 완벽하면 구현이 더 원활합니다. 구현이 완벽하면 테스트 과정에서 문제점들이 별로 없겠지요. 마지막으로 테스트가 성공적이었다면 수정의 필요가 낮아지겠죠. 이러한 전 단계의 의존도 때문에 가장 최상위인 기획 단계가 상당히 중요하게 됩니다. 이러한 이유로 기획자의 책임이 크며 기획자들이 가장 욕을 많이 먹게되는 것입니다.



워터폴의 응용

앞서 설명드린 워터폴 체계는 체계의 이해를 위해 간략화했기에 이젠 실질적으로 어떻게 사용되고 있는지에 대해 보겠습니다.

1. 멀티폴 (Multi-Fall)

소규모 게임의 소규모 팀이라면 개발을 유연하게 진행 할 수 있기 때문에 워터폴 체계로 게임을 완성할 수 있지만, 팀과 게임의 규모가 클 경우, 특히 MMO에서는 워터폴을 그대로 사용하기 거의 불가능하다고 봐야합니다. 대규모 게임에서 워터폴이 사용되는 경우는 라이브 개발 밖에 없다고 봐야합니다. 예외는 2번을 참고하시길.

멀티폴이란 다수의 워터폴이 진행되어 하나의 게임이 조합되어 완성되는 방식을 뜻합니다. 자세히 설명드리자면 하나의 워터폴로 게임을 만든다면 다수의 워터폴, 즉 멀티폴로 다수의 게임 요소들이 하나의 게임(강)으로 모여 완성되는 것입니다. 게임 시스템이 많이 개발되야하는 MMO에서는 특히 필수적인 체계입니다.


 



게임 개발 체계와 이해 by 김태호

개발 체계란?

개발 체계는 프로젝트의 전체나 일부 개발의 시작부터 완료까지의 프로세스 방식을뜻합니다.

 

개발 체계의 유형은?

게임 업계에서 가장 흔히 쓰이고 있는 기본적인 개발 체계는 3가지라고 볼 수 있습니다.

워터폴(Waterfall), 이터레이티브(Iterative), 에자일(Agile).

이들은 소프트웨어 개발에서 사용되어 오던 체계들이며 게임 개발에 맞게 변화하고적용되어 사용되고 있습니다플랫폼이나 장르에 따라 성향은 제각기 달라지지만, 각 체계마다의 근본적인 장점들은 그대로 활용합니다모두국가 별로 문화차에 의해 미세한 성향의 차이는 있기도 합니다.

 

개발 체계가 왜 중요한가? 

좋은 개발 체계를 적용한다고 해서 좋은 게임,혹은 상업적으로 성공적인 게임이 나온다고 할 수는 없습니다. 다만, 좋은 개발 체계만이 효율적인(이 악마의 단어!) 개발을 보장해 줄 수 있다고 생각합니다. 똑같은 게임을 개발해도훨씬 더 빨리 완성 할 수 있다는 장점이 우선이겠고, 개발 인력 과잉화를 줄여줄 수 있습니다.

"더 적은 인원으로 더 많이!"

위의 문구는 게임 업계만이 아니라 개발이 필수인 어떤 업계든지 한번쯤은 어떤형식으로도 나오는 말이죠.ㅜㅜ More With Less 철학은 다소 불투명한 개발의 비용에 대한 개발의 이해도가낮은 경영권의 불안감에서 발생하기도 합니다하지만 때로는 개발 상황과 여건이 이것을 필수 조건으로 만들어버리는 상황도 있죠. 특히 인디 스투디오들이나 작은 개발사들조직의 몸집이 작을 수록 개발 체계가 뚜렷해야 한다고 생각하는데, 그 이유는 돈이나 인력으로 해결할 수 없는 한계 때문입니다짧은 시간과 소수의 인력으로 프로세스의 실수나 반복적이거나 불필요한 작업을 최대한줄여야하기 때문입니다.

 

그럼 개발 체계만 적용하면 다 잘되겠네?

개발 체계가 적용, 활용되기 위해선 3가지의 추가 요소들의 영향이 미치게 됩니다.

1. 체계에 대한 팀원들의 의지

2. 팀 내 커뮤니케이션

3. 통합된 자료와 분석

개발 체계를 적용하는 단계이든, 같이일해본 경험이 없는 신규 팀이든, 개발 체계를 유지하고 있는 팀이든, 3가지의 요소의 시너지 효과가 없으면 오래 못가 무너지고 맙니다.

위의 도표와 같이 시작/적용/유지 중 어떤 상황이여도 개발 체계 속에 의지, 커뮤니케이션, 분석은 필수입니다.

1. 의지

팀원 전원이 개발 체계가 왜 중요하며, 어떻게도움이 될 것이며, 왜 필요한 것인지를 이해하고 있어야 합니다. 잊었다면상기 시켜주고, 아직 모른다면 교육을 제공해야합니다. "그냥회사에서 하래", "그냥 프로덕션 상 필요한가보다"등의 인식은 문제 발생 시 극복할 수 있는 에너지를 소진시켜버립니다. 초기에 공감을 얻고시작은 할 수 있되, 유지는 어떻게 하느냐? 이건 읽다 보시면이해되실겁니다!

2. 커뮤니케이션

팀 내 커뮤니케이션은 어떤 팀에게든 중요하겠지만, 원활한 개발 체계를 위해서는 필수입니다. 프로세스 간에 커뮤니케이션이없으면 서서히 단계를 한 두개씩 건너 뛰거나, 당장 편의를 위해 바꾸게 되는 상황을 초래할 수 있습니다. 그것이 무조건 나쁜 것이 아니라, 충분한 커뮤니케이션을 통해 변화를적용하지 못하면 반대 의견들이 속출되거나 일방적인 변화의 대한 반발, 심지어는 체계 자체를 너무 가볍게보게 되어 의지가 사라지는 상황을 초래할 수 있습니다.

3. 분석

정보를 수집하고 분석하는 것이 쉬운 일이 아니여서 흔히 따로 담당자가 필요한상황이 되기도 하는데, 문제는 많은 팀들은 인력 부족이나 필요성 판단 미스로 PD PM, 실장 등의 관리자가 자신의 임무 외로 병행하게 되는경우가 많습니다. 거기서 함정카드가 주로 발동하게 됩니다. 개발체계 진행 중에 발생하는 문제, 해결 방안, 대응의 결과, 교훈 등을 모두 기록하고 분석하며 반복적으로 팀 전테에서 수집을 해야하는데,병행 작업으로 쉽게 볼일이 아닙니다

"에이~ 뭘 그렇게까지"라고생각하셨나요? 이러한 정보는 앞서 말했던 의지를 유지 시켜주는데에 아주 중요한 역활을 하게 됩니다. 팀 전체가 이런 자료를 보며 우리 팀에게 개발 체계가 어떻게 도움이 되었으며,예상치 못한 문제 발생들을 통해 어떤 교훈을 얻었는지 등 세분화 되어 체감하지 못한 부분들까지 알려준다면 의지는 유지 될 것입니다

 

체계 체계 하는데 좀 더 정확히 설명은?

업계 내 적용과 각 체계에 대한 자세한 정보는 게임 개발 체계와 적용이라는 글에서 보실 수 있습니다.

1