게임 개발
게임 개발이란 게임을 만들고 춢시 하는것을 의미한다. 분야로는 게임 기획자, 게임 디자이너, 게임 프로그래머 등 3가지 직종이 있다. 이 세 가지 분야팀들이 협력을 통해 게임이라는 하나의 결과물을 만들어 내는 것을 게임 개발이라고 한다.
목차
게임 기획자
게임은 다양한 분야의 영역들이 믹스된 영화의 영역에서 보다 진보된 현대적 프러덕션이라고도 할수있다. 그래픽, 음악, 연기, 스토리, 촬영, 컴퓨터 사이언스, 경제등 다양한 영역이 필요에 따라 게임에 반영된다. 이러한 영역들이 서로 잘 섞여 게임이라는 결과물로 바뀌도록 관리해나가는 사람이 기획자다.[1]
요구 능력과 담당 직무
기획자에게 요구되는 역량은 게임마다 달라진다. 기본적으로 프로젝트 관리 역량을 갖추어야 하며, 추가적으로 개발할 게임에 필요한 능력 전반에 대해 알아야 한다.
- 시스템: 게임에 기반이 되는 시스템 및 프로그램적으로 개발되는 요소를 책임진다. 프로그래밍 관련 지식이 필요하다.
- 시나리오: 게임에 기반이 되는 스토리, 캐릭터, 퀘스트 등 text와 등장할 캐릭터요소를 책임진다. 문화 예술 관련 지식이 필요하다.
- 레벨 디자인: 게임에 기반이 되는 맵에 사이즈, 배치요소를 담당한다. 건축과 크기에 따른 공간적 지식과 플레이타임 등을 계산할 게임적 지식이 필요하다.
- 운영: 게임내 운영 업무로 기획한 내용에 반영 되었을때 운영에 관련 내용을 담당한다. 라이브 기획자가 주로 다른 기획업무와 병행하는 업무이다.
- 밸런싱: 게임에 수치들을 담당하며, 데이터와 수학지식, 게임룰에 따른 수치화에 대한 통찰력이 필요한다.
- 게임 내 경제: 게임 내 경제를 시뮬레이션 할 능력과 지식이 필요하다. 게임 내 몬스터 드랍, 획득 게임머니 등 요소를 담당한다.[1]
게임 그래픽 디자이너
컴퓨터게임 등에 등장하는 각종 캐릭터와 배경, 아이템 등을 디자인하는 역할을 한다.
배경, 캐릭터 원화가
기본적으로 포토샵만 알고있으면 되는 분야라 알아야 되는 툴은 제일 적지만 본인실력과 디자인에 취업이 크게 결정되는 파트 원화가는 컨셉 아티스트(concept artist)라고도 불리며 컨셉, 즉 게임에서 드러내려는 이미지를 그려내는 직업군이다. 배경 원화가는 건물, 자연 등의 도안과 디자인을 담당하며 배경을 그릴 때 설계 구도가 굉장히 중요한 요소로 작용한다. 캐릭터 원화가는 캐릭터의 전반적인 설정을 담당하는 역할을 하며 무기 원화가, 몬스터 원화가 등으로 나뉘기도 한다. 캐릭터 원화가에게는 기본적으로 드로잉 실력이 요구되며 이를 위해 인체구조에 대한 이해가 필요하다. 또 캐릭터 원화가는 인체만 그리는 것이 아니라 의복, 몬스터, 무기 등 다양한 영역의 그림들을 그려야 하므로 다양한 자료들을 바탕으로 보다 많은것들을 그릴 수 있는 능력을 키워야한다.[2]
배경, 캐릭터 모델러
캐쥬얼이냐 반실사냐 실사냐에 따라 제작방식이 조금씩 달라질 뿐 다룰 줄알아야되는 프로그램은 거의 동일하다. 3Dmax 또는 마야, BodyPainter, Zbrush가 기본적이며 최근 실사풍이 중요해지면서 서브스텐스 3DO 등 PBR 쪽도 어느정도 알아야 한다. 다른 파트에 비해 새로운 프로그램과 트렌드가 등장했을때 심하게 타격 받는 파트이다. 모델러는 원화에 있는 캐릭터, 아이템, 건물, 배경 등 게임에서 보이는 모든 것들을 3D 이미지로 구현한다. 이른바 게임의 뼈대(원화)에 3D로 살을 붙이는 작업이라 할 수 있다. 배경 모델러는 원화에 있는 제품, 건물, 도로나 전체적인 지형을 그래픽으로 만들며 원화의 전체구도 및 원근감 등의 관련된 부분을 3d로 만들어야 한다. 캐릭터 모델러는 인체 구조를 기반으로 모델링을 진행해야 한다. 따라서 구조 이해도를 위한 정물, 인물 등을 잘 그려야 하며 원화가 못지않은 이해도를 가져야 한다. 게임 툴인 3D 스튜디오 max와 애니메이션 툴인 마야등을 다룰 줄 알아야하며 포토샵으로 컬러, 질감, 표정들을 입히는 맵핑 작업 및 다양한 맵핑 소스들을 활용할 수 있어야 한다. 또, 세밀한 표현을 위해 2d와3d의 중간을 표현할 수 있는 지브러시 머드박스와 같은 프로그램을 다룰 수 있으면 좋다. 3d 그래픽 디자이너들의 작업 과정을 간략히 설명하자면 다음과 같다.
- 원화 분석: 먼저 원화가로부터 컨셉 원화를 받아 분석한다. 참고로 3D로 구현해야 하기 때문에 구조의 움직이는 부분이 따로 필요하며, 다양한 시점으로 표현된 원화또한 필요하다. 모델러는 넘겨받은 원화에서 만들어야 할 이미지의 컨셉을 파악하고 특징을 어떻게 표현할 것인지 결정한다.
- 모델링: 원화를 3D로 조형한다. 최대한 원화의 느낌을 살리는 것이 중요하지만 3D로 구현할 수 없거나, 고쳐야 할 부분이 있을 경우 수정해 가며 모양을 만든다.
- 텍스쳐 작업: 완성된 모델링 이미지는 색이 존재하지 않거나 단색이다. 여기에 색과 표면의 질감을 살리기 위해 텍스쳐를 입힌다.
- 게임엔진 적용: 텍스쳐를 마무리하고 완성된 3D 이미지를 게임에서 쓰기 위해 게임엔진에 적용한다.[2]
이펙터
타격, 스킬, 움직임, UI 등 게임 화면상의 나타나는 모든 효과를 다루는 일이다. 대부분 먼저 만들어 놓고 차후에 타이밍이나 색감, 길이 등을 맞춰보는 튜닝 작업으로 이루어진다. 이펙터는 원화를 참고하여 그리기도 하지만 이미지가 전부 제시된 것은 아니기 때문에 어느 정도 감각이 있어야 한다. 이펙터는 단순히 효과만을 만드는 것이 아니라 캐릭터의 동작과 연계된 효과도 생각해야 하기에 애니메이션과 모델링 등 전반적인 작업을 모두 할 수 있어야 한다. 포토샵 애프터 이펙트 3Dmax의 초,중급은 되어야되며 추가로 각 회사에서 요구하는 엔진의 이펙트 툴도 같이 알아야 된다.어찌보면 이펙터가 다룰 줄 알아야되는 프로그램은 제일 많을 것이다. 그만큼 귀한 직업군이기도하고 제일 화려하고 게임의 타격감에 지대한 영향을 끼치는 분야이기도 하다.
애니메이터
완성된 캐릭터나 몬스터 등에게 행동력을 주는 사람이다. 모든 입력 장치에 들어가는 애니메이션을 각각 만들고 이 애니메이션을 부드럽게 연결하는 작업을 한다. 애니메이터는 작업할 때 포즈와 타이밍이 서로 어긋나지 않도록 연결해야 하며 모든 동작은 기획서, 세계관, 캐릭터의 성격에 맞게 각각 구현 되어야 한다. 때리는 동작과 사운드, 리액션을 타격감이라고 하는데, 타격감을 맞춰 주는 것도 애니메이터의 역할이다. 게임 애니메이터는 원화가가 작업한 작업물을 바탕으로 모델링한 각각의 캐릭터에 움직임을 줄 수 있는 부분(관절과 표정 등)을 넣어 명령에 맞춰 움직일 수 있도록 만드는 작업을 한다고 볼 수 있다. 애니메이터의 역량을 키우려면 크로키를 통해 순간적으로 인체의 구조를 파악하는 훈련을 하면 좋다. 2D냐 3D냐에 따라 그리고 회사에서 어떤 엔진으로 게임을 제작해느냐에 따라 다룰 줄 알아야되는 툴이 조금씩 틀리다. 2D는 live2D, Spine이 기본적이라 봐야되며 3D는 3Dmax가 제일 압도적이며 그다음 마야를 알아야 한다. 캐릭터와 배경의 소품 등 움직이는 것들을 움직이게 해준다.[2]
게임 프로그래머
게임 프로그래머는 프로그래밍을 통해 맵 디자인, 캐릭터 디자인, 사운드, 각종 시스템 등을 뒤섞어, 게임이라는 하나의 결과물을 만드는 직군이다. 게임을 만드는 데 있어 가장 귀중한 인력이다. 실제로도 게임 업계에서 프로그래머의 연봉이 기획자나 그래픽 디자이너보다 높은 경우가 많다.[3]
유형
수십, 수백명의 개발자들이 필요한 AAA 게임들은 다양한 분야의 전문가들을 필요로 한다. 아직도 수많은 사람들이 게임 프로그래밍의 대해서 착각하는 것 중 하나인데, 같은 게임 프로그래머라고 해도 전문 분야가 다르면 필요한 지식, 경력, 성격, 등등이 완벽하게 달라진다.
- 게임플레이 프로그래머
- 이쪽은 만능형 프로그래머 (Generalist Programmer)가 많다. 간단한 설명은 다른 프로그래머들은 게임 엔진 쪽으로 더 가깝고 게임플레이는 말 그대로 "유저들이 게임이라고 느끼는" 부분. 카운터 스트라이크를 예로 들면 플레이어의 움직임, 총기의 작동 원리, 폭탄이 폭파하면 테러리스트가 승리한다는 규칙 등이 다 게임플레이다. 게임을 사랑해서 게임 프로그래머가 됐다면 웬만하면 이쪽으로 간다. 게임 규모가 작으면 난이도가 다른 분야보다 낮다. 수학의 경우 방향 관련 계산을 하기 위한 선형대수학의 기초만 대충 알면 괜찮다. 하지만 게임 규모가 커지면 접하게 되는 코드의 분야가 너무 넓어지기 때문에 다른 분야보다 쉽지 않다. 이러면 전혀 모르는 분야라도 기초적인 부분을 공부해서 대강 이해를 할 줄 알아야 한다. 그러려면 '컴퓨터 게임'을 이해를 하고 사랑을 해야만 일이 된다. 트리플 에이 규모쯤 가보면 어느 날은 엔피씨(NPC)의 비행 능력을 위해서 팔진트리로 3D 최단 경로 찾기 알고리즘을 공부하고, 그 다음 날은 두명의 플레이어 캐릭터들의 잡기 공격을 어떻게 코딩해야 렉이 있는 상태에서 두 명이 동일한 상황을 보게 만드나 생각해야 한다. 결론은 특정 분야에 많은 지식이 필요하지는 않지만, 프로그래머로서의 눈치와 해석력이 많이 요구된다.
- 물리 엔진 프로그래머
- 게임에 필요한 물리 계산을 빠르게, "필요한 만큼 정확하게" 하는 개발을 한다. 프로그래머 항목에 프로그래머들은 거창한 알고리즘 연구를 안한다고 하지만, 이쪽은 그런 짓을 할만한 인간들이 필요하다. 유저들은 매년 상향되는 그래픽, 물리 엔진을 보고 싶어하고, 만족할만한 게임을 만들기 위해서 더 새로운 그래픽 기술들의 효율적인 계산이 필요하다. 그래서 이쪽은 컴공보다 물리학자, 수학자들이 더 많이 보인다. 수학의 경우 사원수, 오일러 각 등의 3D 수학을 기초로 알아야 인턴쉽이 잡힌다.
- 그래픽/랜더링 프로그래머
- 3D 그래픽이나 애니메이션을 빠르게 계산하고, 효율적으로 유저의 모니터로 출력하는 개발을 한다. 위와 비슷하게 순수한 프로그래밍보다 수학, 물리쪽 지식을 더 많이 필요로 한다. 위와 비슷하게 비쥬얼적으로 나쁘지 않다라고 생각될정도면 계산을 단순화하거나 수학적인 알고리즘으로 최적화를 한다. 난이도가 높아질 수록 최소 수학과 또는 물리학과 3~4학년 수준 지식을 요구하기도 한다. 인터넷에 친절하게 알려주는 기법도 왕왕 있지만 최신기술을 사용하거나, 최신기술이라고 보긴 힘들지만 구현 난이도가 상당히 높은 축에 해당하는 기술, 또는 색다른 느낌의 비실사주의 셰이더의 최신기법을 구현하고자 할려면 인터넷 검색으로는 답이 없다. 영어로 된 논문과 인용된 논문을 읽어가며 그 논문에서 말하고자 하는 수학 물리공식을 이해하고 그것을 프로그래밍적으로 구현할 줄 알아야 한다. 정말 독특하고 유니크한 것은 논문으로도 발표된 사례가 없어 바닥부터 직접 만드는 경우가 왕왕 존재한다. 수학이 싫거나 자신이 없다면 가장 멀리해야 하는 분야. 그런고로, 여기 나열 된 분야중에, 독보적으로 난이도가 높으며, 그에 비례해 대우가 좋다. 규모가 작은 곳에서는 상용 엔진을 쓰기 때문에 비주얼 셰이더 툴을 이용해 적당히 셰이더 만들어서 쓰는 경우가 많아 이 포지션이 없는 경우도 많다. 다만 AAA급으로 가면 반드시 필요하며, 제대로만 하면 여기저기서 모셔가려고 용을 쓴다. 유독 이 분야의 사람들이 다른 포지션의 일을 겸하는 경우가 많은데, 그 만큼 다른 기술의 밑바탕이 확실해야 할 수 있는 분야라는 뜻이다.
- 개발 도구 프로그래머
- "게임" 개발에서는 동떨어져 있는 직무로, 대규모 회사 아니면 절대 못 볼 직무이다. 대부분 프로그래머가 아닌 개발자들이 프로그래머들의 도움이 없이 개발에 참여를 하게 해주는 도구들을 개발한다. 아티스트 직군을 위한 배치 툴을 짜기도 한다. 그게 아니면 엔진을 뜯어고치는 경우도 있다. 무엇이 되건간, 비 프로그래머 직군과의 융화를 보다 윤택하기 위한 목적이 있다. 게임 디자이너들이 아주 기초적인 코딩 실력으로 게임을 완벽하게 바꿀수 있게 하는게 주 목적이다. 회사 규모가 더 크면 게임이랑 전혀 관련 없는 직원, 빌드 관리 소프트웨어도 만들게 된다. 이 정도까지 되면 상당히 고수준의 프로그래밍 지식이 필요한 경우이다.
- 네트워크/서버 프로그래머
- 온라인 게이밍의 핵심이라고 볼수 있다. 클라이언트와 서버 간의 데이터 송수신을 다루고, 렉을 줄이기 위해서 최소한의 정보를 보낼 방법과, 심한 렉, 서버 다운, 디도스 공격 등의 문제를 해결할 방법을 연구한다. 데이터 사용량을 줄이는 동시에 클라이언트의 시점에서 렉이 안보여야 하는데, 잘못된 디자인은 0.1초의 렉으로도 유저와 유저 밖의 세상이 따로 노는 느낌을 줄 수 있다. 한국사람으로서 상상하기 어려울수도 있겠지만 세계의 평균 인터넷 속도는 낮은 편이고, 구형 모뎀 인터넷으로 지구 반대쪽에 있는 서버를 통해서 게임을 해야 할 사람도 있으니, 세계적인 온라인 게임을 만들기 위해서는 1바이트의 추가 데이터도 신중히 다뤄야 한다. 또한 대부분의 게임 개발사는 DBA를 따로 두지 않으므로, 사실상 데이터베이스 지식까지 요구되는 직군이다.[3]
게임 개발 프로세스
개발 프로세스는 크게 준비 단계와 개발 단계 2단계로 분류할 수 있다.
준비 단계
- 게임 콘셉트 회의 : 개발하고자 하는 게임의 전반적이 사항들을 결정하는 데 목적이 있으며 개발팀에서 진행한다. 참가자는 기획자, 프로그램 팀장(클라이언트, 서버), 그래픽 팀장(원화, 캐릭터, 배경) 정도가 될 수 있다.
- 게임 시스템 기획 : 개발하고자 하는 게임에 들어갈 핵심적인 시스템들을 개발자들이 이해할 수 있도록 결정하는 데 목적이 있으며 기획팀에서 진행한다. 참가자는 기획자, 시나리오 작가, 시스템 디자인, 레벨 디자인 정도가 될 수 있다.
- 일정 및 리소스 관리 : 실질적 게임 구현에 필요한 리소스 양과 개발 일정, 그에 따른 인력구성 등의 세부적인 계획을 수립하는 데 목적이 있다. 참가자는 기획자, 프로그램 팀장, 그래픽 팀장 정도가 될 수 있다.
개발 단계
그래픽 작업
- 시나리오 작업 : 게임의 세계관 설정, 캐릭터 설정, NPC 설정, 몬스터 설정, 작업 일정 결정 등을 한다.
- 원화 작업 : 시나리오 결과물을 가지고 원화 작업을 진행한다.
- CG 작업 : 원화 결과물을 가지고 그래픽 디자이너가 원화를 그래픽 툴을 이용하여 3D 또는 2D로 모델링 한다.
- 애니메이션 작업 : 시나리오 결과물을 애니메이션(캐릭터 이동, 몬스터 피격, 이동) 작업을 진행한다.
시스템 기획
- 시스템 디자인 : 시스템을 어떻게 기획할 지 생각하고 구현이 가능한지에 대해 생각하여 기획서를 만든다.
- 레벨 디자인 : 최종 기획서를 바탕으로 수치 디자인을 수정, 보완한다.
레벨 디자이너, 서버 프로그래머 작업
- 스탯 및 테이블 구성 : 게임에 적용되는 모든 스탯 및 테이블을 구현 가능한지에 대해 파악하고 최종적으로 스탯 및 테이블을 완성시키는 단계이다.[4]
각주
참고자료
같이 보기