PC에 이어 스마트폰이 대중화되면서 어느 때보다도 많은 사람들이 게임을 즐기고 있습니다. 지하철에서 닌텐도DS나 소니 PSP를 하는 사람들을 보면서 신기해하던 기억(그들의 놀라운 집중력과 액션)이 있는데 이제는 스마트폰으로 게임을 하는 모습이 전혀 이상하지 않습니다.

어린아이들로부터 시작된 오락실 놀이문화가 청소년과 학생층을 뛰어넘어 이제는 유아부터 어른들까지 누구나 쉽게 접할 수  있는 문화로 변화되었기 때문입니다. 그러나 몇 년 전만 해도 게임을 누가 만드는지, 혹은 어떻게 만드는지에 대한 호기심 어린 질문은 주로 진로를 고민하는 일부 청소년이나 청년들만의 것이었습니다.

게임개발자로 자신의 진로를 선택한다는 것은 왠지 모를 비장함이나 굉장히 이상한 인생의 여정으로 들어서는 것처럼 여겨졌고,  주변에서도 "뭐?" 라는 반응을 보이면서 이상한 사람으로 취급 받았습니다. 하나의 직업으로서가 아닌 게임이나 하는 철부지 정도로 생각되었는데, 이건 아마도 그들이 어려서부터 게임에 빠져있었고 주변에서도 이를 좋게 보지 않았기 때문일지도 모르겠습니다.

그러나 이제는  게임회사에 다닌다고 하면 왠지 자유분방하고 창의적이며 인센티브로 한 몫 크게 챙기지 않겠냐는 질문을 받고 있습니다. 특히,게임 프로그래머라고 하면 대단한 능력을 가진 사람으로 보기도 하고 도대체 어떤 일을 하는지 호감을 나타내는 분들도 많습니다.

제가 이제는 프로그래머가 아닌 PM의 역할을 하고 있지만 게임개발과 게임 프로그래머의 역할에 대해 살펴보고 이해를 돕는 것도 의미 있을 것 같습니다.가능한 전문적인 내용보다는 일반적인 관점에서 내용을 정리하겠습니다.

예를 들어 간단한 고스톱 게임을 만들 경우에 각각 하는 일은 다음과 같습니다. 우선 게임을 개발하려면 개발팀이 구성되어야 합니다. 팀내에는 크게 기획자, 디자이너, 프로그래머 등으로 나뉘는데 에니메이터, 원화가, 사운드 개발자, 프로젝트메니저, QA 등으로 좀더 세분화할 수도 있습니다.

역할 면에서 보면 기획자는 어떤 게임을 만들어야 하는지 그리고 어떤 내용으로 구성되어야 하는지를 정의하고 설계하는 일을 합니다. 디자이너는 게임에서 보여지는 모든 것을 그리고 디자인합니다. 프로그래머는 기획자가 상상하고 설계한 내용과 디자이너가 그려낸 이미지를 이용해 게임이 실제로 동작하게 만듭니다.

1. 기획자


<photo:filc.kr>

- 게임을 실행하면 고스톱의 난이도(어려움, 보통, 쉬움)을 선택하도록 기획한다.

- 몇 명과 고스톱을 칠지 선택하도록 기획한다.

- 준비가 되면 고스톱 게임을 진행하도록 기획한다.

- 고스톱에 적용되는 모든 룰을 만들고 여러 상황에 따라 게임이 어떻게 돌아가야 하는지 기획한다.

- 게임이 끝나면 계속 고스톱을 칠지 아니면  종료할지를 선택하도록 기획한다.

 

2. 디자이너


<photo:flic.kr>

- 난이도를 선택하는 화면을 디자인한다.

- 인원 수를 선택하는 화면을 디자인한다.

- 게임 진행 시 보여지는 모든 그래픽 이미지를 디자인한다

- 게임을 종료할지 이어서 계속할지 결정하는 화면을 디자인한다.

 

3. 프로그래머


<photo:filc.kr>

- 난이도를 선택하는 화면이 보이도록 하고, 선택된 난이도에 따라 인공지능의 수준을 결정한다.

- 인원 수를 선택하는 화면이 보이도록 하고, 선택된 인원 수에 따라 게임이 진행되도록 만든다.

- 기획된 룰에 따라 사용자와 인공지능간의 고스톱 게임이 이루어지게 만든다.

- 게임 종료 여부를 확인하는 화면이 보이도록 하고, 선택에 따라 종료 또는 계속하기를 진행하게 만든다.

 

물론 위의 예는 매우 복잡한 제작 프로세스를 단순화한 것이고 개발자들의 업무를 분리해서 본 것일 뿐입니다.

프로그래머의 입장에서 본다면, 고스톱 게임의 화면 구성, 게임의 룰 적용, 그래픽 데이터의 제어, 사운드 플레이, 인공지능 구현, 네트워크 구성, 데이터관리 등 다양한 부분을 다루어야 하는데 실제 업무는 이보다 더 세분화됩니다.

개념적으로는 사용자와의 상호 작용에 따라 게임이 살아 움직이도록 만드는 일을 한다고 볼 수 있습니다. 화면에 있는 점 하나를 움직이는 일부터 사용자와의 두뇌싸움까지 모든 부분을 프로그램적으로 구성하고 제어하는 것입니다.


<photo:filc.kr>


게임 프로그래머가 뭔가 대단한 일을 하는 사람처럼 이야기를 했는데, 그럼 게임 프로그래머에게 요구되는 능력은 무엇일까요?

-첫째는 프로그래머로서 기술적인 능력을 가지고 있어야 합니다.

게임을 만들고 싶다는 생각이 들어서 개발자가 되기로 했다면, 특히 프로그래머가 되기로 했다면 우선 프로그래밍 실력을 갖추어야만 합니다. C, C++, Objective C, C# 등의 프로그래밍 언어를 일부라도 다룰 줄 알아야 하는데, 프로그래밍 언어에 나름대로 자신감이 있어야 다음  단계로 넘어갈 수 있습니다.

프로그래밍 공부를 하다 중도에 포기하는 대부분의 이유는 프로그래밍 언어가 자신의 체질과 맞지 않기 때문입니다. 논리적인 사고, 문제해결 능력, 집요함, 창의성, 학습능력 등 여러 요건이 필요하지만 중요한 건 프로그래밍이 체질적으로 맞아야 한다는 것입니다.
그리고 나서  알고리즘, 자료구조, Direct X, OpenGL, 네트워크 등등의 여러 부분에 대해 실력을 쌓아나가게 됩니다.

-둘째는 개발자로서 게임을 좋아하고 게임을 만드는 것에 의미를 가지고 있어야 합니다.

게임 프로그래머가 된 것은 프로그래밍이 너무 좋아서라기 보다는 게임이 좋아서 입니다.그리고 게임을 만드는데 자신이 가진 능력, 즉 프로그래밍 기술을 활용하는 것 뿐입니다.

좋은 게임회사에 들어가 게임을 만들어 성공하고 유저들의 칭송을 받는 것도 좋겠지만 그렇지 못한 경우가 더 많습니다. 현실적인 문제를 무시할 수는 없지만, 어려운 환경에서도 끊임없는 노력과 시도를 하는 것은 대부분의 개발자들이 이런 동기에서 출발했기 때문입니다.

자신의 즐거웠던 경험과 누군가는 내가 만든 게임을 즐겁게 플레이 할 것이라는 생각이 개발자들을 보다 창조적이고 열정을 가진 존재로 만들어 줍니다. 개발자들의 이러한 특징을 이해하고 최대한 활용할 줄 아는 회사가 좋은 개발사가 아닐까 생각합니다.

만약 프로그래머가 수동적인 자세로 주어진 일만 하고 계획된 것들만 하려고 한다면 절대 게임은 출시될  수 없습니다. 프로그래밍을 하다 보면 기획, 그래픽, 기술적인 여러 부분에서 많은 문제를 발견하게 되는데 이를 현명하게 해결하고 아이디어를 제공하는 것도 프로그래머의 역할입니다. 단순한 기술자가 아닌 개발자로서의 창의력과 해결능력은 바로 그 동기 때문입니다.

-셋째는 팀의 일원으로서 팀 작업에 헌신해야 합니다.

혼자서 스마트폰용 게임을 개발하는 것이 아니라면 다른 개발자들과 같이 일을 해야 하고 서로 교감을 나누어야만 합니다. 팀원 모두가 동일하게 높은 수준의 실력을 가지고 있을 수는 없으므로 개인차를 인정하고 자신의 역할에 최선을 다하려는 노력과 서로에 대한 배려, 부족한 부분에 대한 질타보다는 보완해 주려는 자세가 중요합니다.

실력 있는 팀이 게임을 성공으로 이끈다기 보다는 팀웍이 좋고 상호간에 열정을 느끼는 팀이 성공하는 게임을 만들 수 있습니다. 여기서 헌신한다는 말이 자기 희생적인 뜻은 아닙니다. 최선을 다하고 다른 사람의 부족한 부분도 메워줄 수 있는 에너지, 즉 자가 동력적인 의미로 볼 수 있습니다.

 


<photo:filc.kr>

'게임 프로그래머에게 요구되는 능력'은 결국 '게임 프로그래머의 역할'과 같은 말입니다. 게임 개발의 영역이 매우 넓고 다양하기 때문에 프로그래머의 역할에 대해 말을 하고자 한다면 상당히 많은 시간이 필요할 것입니다.

위에서 언급한 내용은 상당히 지엽적인 부분에 불과하고 기술적인 부분은 배제되었습니다.
게임 제작에서 프로그래머가 담당하는 일은 기술적인 측면만이 아니라 창의적인 부분유저 경험적인 부분, 그리고 팀웍에 이르기까지 포괄적입니다. 게임 프로그래머가 어떤 방향으로 얼마만큼의 일을 하든 간에 그 동기가 출발점이고 결과라고 말할 수 있습니다.

프로젝트 매니저 : 문희윤
안녕하세요. 게임스랩 PM 문희윤입니다. 게임을 개발하는 일은 재미있고 개발자로 사는 것도 재미있는 일입니다. 같이 게임을 즐길 수 있다면 더욱 좋겠죠.


RSS 구독하기

댓글을 달아 주세요