게임 프로그래머의 마인드

게임업계로 들어와 일하기 전까지 게임 프로그래머란 "게임을 만드는 사람"으로 생각하고 히였었습니다.
2년 6개월 동안 고누소프트에서 빌드매니져 겸 패쳐 클라이언트 개발자로 일해본 지금
게임 프로그래머란 "팀원들이 작업을 어떻게 하면 편하게 해줄 수 있을까? 재미있는 게임을 만들려면 어떻게 해야 할까? 란 생각을 해야 하는 사람"으로 생각이 바꿨습니다.

불과 몇 년 전만 하더라도 10명 내외의 인원이 하나의 프로잭트를 진행하고 성과를 내였습니다.
지금은 하드웨어와 소프트웨어의 발달로 몇 기가의 파일들은 우습게 다룰 수 있게 되었습니다.
그만큼 팀도 비대해져 대형 게임 회사의 경우 하나의 프로젝트를 수십 명에서 수백 명까지 다양하게 조직화 되어있습니다.
또 프로젝트 기간도 1년 미만에서 3년 이상으로 늘어나 버렸습니다.
인원도 많아지고 기간도 길어지면서 회사가 하나의 프로젝트에 들이는 비용도 늘어나게 되었습니다.
프로젝트 1개가 실패하게 되면 회사로서도 자금적으로 엄청난 타격을 입게 되었습니다.
그럼 이렇게 대형화된 프로젝트에서 게임 프로그래머는 어떠한 마인드로 업무를 해야 할까요?

스포츠에서 팬들은 골을 많이 넣는 사람을 좋아합니다. 감독들은 득점에 도움(어시스트)을 준 사람을 더 좋아한다고 합니다.
득점을 많이 올린 팀보다 어시스트가 많은 팀이 우승확률이 더 높다고 합니다.
게임회사도 마찬가지라고 생각됩니다.
조직이 커지고 비대해 질수록 팀원간의 어시스트가 필요합니다.
특히 게임프로그래머는 그 조직은 중심에 있기 때문에 더더욱 "어시스트 마인드"가 필요합니다.

게임이란 유저에게 재미를 주는 것에 목적이 있습니다.
재미를 느끼는 유저가 많을 수록 성공한 프로젝트이며, 회사도 그만큼 돈을 많이 벌게 되고,
또 차기 프로젝트에도 많은 돈을 투자할 수 있습니다.
재미있는 게임을 만들기 위해서는 프로젝트에 속한 모든 팀원들의 아이디어와 노력이 베어 나야 하고,
팀원들의 모든 아이디어들은 모두 신중하게 검토되고 히스토리를 남겨야 합니다.
이번 프로젝트에서 실패한 아이디어들이 다음 프로젝트에서 성공할 수도 있기 때문입니다.

게임프로그래머는 "어시스트 마인드"를 가지고 신중히 검토된 아이디어를 구현해 주어야 합니다.
애니메이션을 예로 들어봅시다.
어시스트 마인드를 가지고 있지 않는 프로그래머라면 if-else문과 switch문으로 현재의 애니메이션을 출력해주는 프로그램를 만들 것입니다.
현재의 애니메이션이 맘에 들지 않거나, 새로운 종류의 애니메이션을 추가하고 싶을 때는 애니메이터들은 매번 프로그래머에게 도움을 요청할 것입니다.
만일 애니메이터들이 프로그래머의 도움 없이(별다른 코딩 없이) 게임 내에서 새로운 애니메이션을 실험해 볼 수 있다면, 어떻게 될까요?
분명 좀 더 재미있고 많은 유저들을 유혹? 할 수 게임이 되지 않을까요?
또 프로그래머도 if-else문과 switch문의 노가다에서 벗어나 그 시간을 자신의 스킬 업그레이드나 혹은 내일을 위한 휴식시간으로 사용할 수 있습니다.
게임 프로그래머라면 당장 자신이 편하기 위한 if-else, swicth 코딩보다는 다른 팀원을 위한, 재미있는 게임을 만들기 위한 코딩을 하려는 마인드를 가져야 합니다.

지금까지 TCP/IP와 STL, AI 프로그래밍에 치어 정신을 못차리고 있는 초짜 프로그래머였습니다.