게임 제작의 복잡성에 대한 이해

게임 제작에 참여하거나 게임 제작을 관리하는데 있어서 필히 이해하고 넘어가야 하는 것 중 하나가 게임 제작의 복잡성이다. 다들 비디오 게임 개발이 어렵고 복잡하다고 관념적으로 생각하지만, 의외로 이를 충분히 이해하는 모습을 보이는 경우는 찾아보기 어렵다.

게임 제작의 복잡성에 대한 이해도가 낮은 경우 심심치 않게 보이는 입장이 바로, 게임 제작을 파트 혹은 시스템 별로 모듈화 하여 제작할 수 있다는 믿음이다. 모듈화가 성공하기 위해서는 각 모듈에 대한 규격화가 필수지만, 게임 제작에서 파트 혹은 시스템을 규격화 하는 것은 매우 어렵고 개인적으로는 불가능에 가깝다고 여기기도 한다.

게임 제작은 왜 복잡한가?

다들 알다시피 (비디오) 게임은 한가지 요소가 아닌 여러 복합 요소를 조합하여 제작하는 매체이다. 게임 제작을 진행하는 대표적인 파트는 크게 게임 디자인, 프로그램, 아트, 사운드로 나뉘곤 하는데, 이들 파트는 전체적인 게임 비전을 바탕으로 하나의 프로젝트로 묶여서 개발이 진행된다.

각 요소가 유기적으로 연결되기 위해서는 제작 초기부터 각종 사양과 명세를 각 파트가 협의하고 조정하면서 진행되어야 한다. 아트 퀄리티를 높이기 위해서는 이를 받쳐주는 프로그램 파트의 적극적인 기술 지원이 필요하다. 프로그램 역시 게임을 구현하기 위한 리소스 규격과 완성된 리소스를 아트 파트와 사운드 파트로부터 받아야 개발을 진행 시킬 수 있다.

게임 디자인 파트는 모든 파트와의 협력을 통해 게임을 구체화 시켜야 한다. 때문에 파트 간의 커뮤니케이션은 절대적이고, 하나의 목표를 정할 때 어느 한 부서만 독단적인 의사 결정이 불가능하다-캐릭터 디자인 하나를 결정하기 위해서 그다지 필요 없다고 여겨지는 프로그램이나 사운드 파트까지 포함한 모든 파트가 검토하고 조율해야 하는 과정을 거쳐야만 한다.

Bungie Ltd. – videogameschronicle.com

이것만으로도 게임 제작은 복잡성을 띄지만 불난 집에 기름을 붙는 게임 제작의 특수 요인1이 존재한다. 다른 산업 프로젝트와 달리 소프트웨어 개발 프로젝트를 순식간에 난장판으로 만드는 이 요인은 바로 이것이다.

게임 개발의 개발 명세는 프로젝트가 종료 될 때 까지도 확정이 불가능하다

아무리 세부 목표를 잘 잡고, 게임 디자인과 개발 명세가 명확하게 나온 프로젝트라고 하더라도 이는 첫 구현 이후 폐기 될 가능성이 매우 높다 – 그리고 그 이유는 “생각한 만큼 재미가 없어서”가 될 것이다.

게임 제작은 (소프트웨어 개발과 마찬가지로) 구현 → 확인 → 수정을 반복하는 과정의 연속이다. 이 일은 사실 제작자가 스스로 납득할 만한2 상태가 될 때 까지 무한 반복될 수 있다.

단순히 사이클을 반복하는 것 만으로 끝나는 것이 아니다. 작은 수정 하나가 미치는 영향은 모든 파트에서 검토되어야만 한다. 때문에 게임 개발에서 수정을 부담스러워하는 분위기가 팀을 잠식하는 것은 순식간이다.

게임 시스템에 의한 복잡도의 증가

위와 같은 이유로 단순한 게임을 만든다고 해도 복잡도가 상당하다. 하지만 여기서 끝나지 않는다.

게임은 최소 1개에서 수십 가지의 시스템(혹은 룰)이 유기적으로 동작하는 형태로 만들어진다. 게임 시스템은 독립적으로 움직이기 않기 때문에(애초에 독립적으로 움직이는 게임 시스템은 게임 내에서 의미가 없다) 탑재되는 시스템의 수량은 게임 제작의 복잡도에 즉각적인 영향을 미친다.

이는 간단한 수학 공식으로 표현 가능하다. 각 시스템을 Node 로 둔 정방형 형태의 구조를 생각해 보자. 각 Node 는 서로 다른 Node 에 모두 연결이 된다고 가정해 보자(정다각형에 가능한 모든 대각선을 만든다고 생각하면 된다). 이때의 모든 Node 간의 관계선의 수(복잡도) 공식은 아래와 같다.3

# nodes = 게임에 포함 된 게임 시스템의 수
# lines = 관계의 총 수(복잡도)
lines = nodes(nodes-1)/2

게임 시스템이 하나라고 가정 했을 때, 관계 복잡도는 0이지만, 2개일 때는 1, 5개 일 때는 10이 된다, 그리고 100개 일 때의 관계 복잡도는 무려 4,950에 이른다.

게임 시스템125102550100
관계 복잡도0110453001,2254,950
게임 시스템의 수와 관계 복잡도 간의 관계

곧 게임 시스템의 증가는 게임 제작을 어렵게 만드는 매우 큰 요인이 된다. 전체 게임 제작의 난이도를 결정 짓는 것은 결국 게임 제작 파트의 필요 커뮤니케이션 수와 게임 시스템의 관계로 부터 도출되는 복잡도에 기인한다 할 수 있다.

대책은 없는 것인가?

게임 개발이 복잡하다는 것은 대규모 게임 제작을 진행하기 훨씬 전 부터 있어왔던 문제이다. 이를 해결하기 위해 처음에는 크런치 Crunch 같은 지속적이지 못한 극약 처방부터 애자일, 스크럼, 칸반, CI, DevOps 같은 여러 대안들이 십수년 전 부터 나오고 지금도 더 나은 방안을 찾기 위해 모두가 노력 중이며, 결실을 맺은 조직도 많이 존재한다.

필요한 것은 복잡도를 해결하기 위해 노력도 좋지만 복잡도를 상수로 두되, 게임 제작의 결과를 어떻게 만들지에 대해 포커스를 맞추는 것이다. 게임 개발의 복잡성은 일종의 고정 비용으로 인정하자.

복잡도를 줄이기 위해, 혹은 복잡도를 무시하고 게임 개발 프로세스의 모듈화를 가져오는 일은 하면 안된다. 각 파트의 모듈화가 가능한 시점은 규격이 크게 바뀌지 않을 정도로 완성된 이후에나 가능한 일이며, 상기한 여러 이유로 인해 그 규격을 미리 잡는 것은 거의 불가능한 일 중 하나이다 – 규격화 된 공장제 양산 게임을 만든다면 모를까.


  1. 개인적으로 이건 소프트웨어 개발의 전반적인 요인이라 생각한다.

  2. 게임 퀄리티 뿐만 아니라 스튜디오 경영상의 문제 등 온갖 것들에 대한 납득을 의미한다

  3. 이 공식은 조직의 수가 증가함에 따라 커뮤니케이션 복잡도가 증가함을 나타낼 수도 있다

효율적인 게임 프로젝트 운영을 위한 아이디어 정리

(* 주: 개인적으로 여러 프로젝트 경험들의 잘된 점과 잘못된 점을 돌이켜보고, 다음번에는 이렇게 해보고 싶다. 정도로 정리하는 글.)

프리 프로덕션 단계의 강화

  1. 프로젝트 관리는 결국 시간 관리가 핵심. 자원의 소모는 시간에 종속적.
  2. 게임 프로젝트에서 시간의 병목이 걸리는 이유
    • 확고한 비전 수립이 안되어 있음
    • 비전을 실현하기 위한 구체적인 방안이 미흡
  3. 비전 수립이 확고하지 않고 구체적인 방안이 미흡한 원인
    • 무엇을 만들 것인지가 없는 경우(가장 위험 – 답이 없음)
    • 비전에 대한 확신이 없는 경우(비전에 대한 검수 확인 필요)
    • 구체적인 방안에 대한 확신이 없는 경우(방안에 대한 검수 확인 필요)
  4. 확고한 비전 수립과 방안 결정에 많은 시간이 소요 되는 것은 어쩔 수 없는 일
    • 애초에 확고하더라도 프로토타이핑 등을 통한 검수 작업에서 흔들리는 일은 부지기수.
    • 고객의 요구 사항은 변화무쌍하고 언제든지 바뀐다: 예상(기획)과 실제 돌아가는 것의 갭은 어쩔 수 없는 일이라고 인정한다. 갭을 얼마나 빨리 발견하고 이를 최소한으로 줄일 방법은 항상 찾아야 한다.
  5. 충분한 프리 프로덕션 Pre Production 단계의 도입
    • 이 단계는 시간을 줄일 수 없다 – 물론 줄일 수 없는 건 아니다. 품질을 희생하면 그만. 최대한 부여.
    • 프로젝트의 파트 (사업, 게임 디자인, 프로그래밍, 아트, 음악) 별 핵심 개발 인력만 투입. 비용을 최소화.
    • 비전 및 비전 실현 방안에 대한 반복적인 검증 작업 진행. 빠른 프로토타이핑, 애자일 등의 짧고 반복적인 이터레이션 수행이 가능한 프로세스를 도입.
    • 비전이 확고해지고 이를 실현할 수 있는 구체적인 방안이 마련될 경우에만 프리 프로덕션을 종료. 이 허들을 넘지 못하면 프로젝트를 정리하는 것이 옳은 결정임.

프로덕션 단계의 효율화

  1. 본격적인 프로젝트 구현 단계.
    • 이 때 프리 프로덕션에서 확정한 큰 밑그림은 훼손해서는 안됨.
    • 절대란 건 없음. 필요하다면 수정해도 되겠지만, 하지 않는 것을 권고함. 하나를 변경함으로써 각 방안 전체가 흔들리는 경우가 대부분.
  2. 인력 증원
    • 각 파트에 대한 본격적인 인력 충원.
    • 프로덕션 단계 돌입 때 마다 외부에서 신규 인력을 충원하는 것 보다는 내부 인력 풀을 관리하고 이를 활용하는 것이 중요.
    • 또한 개발 프로세스의 표준화 및 꾸준한 교육을 통해 각 구성원들의 프로젝트 운영의 질을 일정 수준 이상 유지하는 것이 효율적.
    • 프로젝트 마다 외부에서 신규 인력을 충원하는 것은 임산부의 딜레마1의 가장 큰 원인.
  3. 지속적인 비전 공유와 비전 강화
    • 자신과 팀의 결정을 믿어라. 이 확신을 위해 장시간의 프리 프로덕션 과정을 거친 것.
    • 비전은 시간이 지날 수록 약해지고 희미해진다. 반복적인 공유와 강화가 필요한 이유.
    • 비전을 흔들지 말라는 이야기. 의심스러운 것이 있다면 계속적으로 확인하고 이를 비전에 맞게 바꾸기 위한 노력은 계속 진행해야 한다.
  4. 지체 없이 빠른 진행을 위해 노력 할 것
    • 프로덕션 단계는 워터폴을 수행하는 것이 더 효율적일 수 있다 생각(이 생각이 확정적이지는 않다).
    • 기계적인 작업을 통해 효율을 최대한 끌어올리는 노력이 필요. 지속적인 프로세스 개선이 필요한 이유.

끝.


  1. 사람이 늘어난다고 일이 빨리 끝나는 것은 아니다.