게임 개발을 하고 싶지만 무엇부터 시작해야 할 지 막막하시군요.
프로그래밍 언어를 무엇을 배울까, 게임 제작은 어떻게 이루어지는가?..
저도 무엇부터 설명해야 할 지 고민이 됩니다.
일단 상용 게임이 어떻게 만들어지는지 과정부터 한번 짚어봅시다. 그러면 어떤 것을 배워야 게임을 만들 수 있는 지 조금은 감이 잡히리라 생각합니다.
-- 게임 개발 : 게임 개발사에서 만들 때 --
-- 팀원 역할 --
게임을 개발하는 것은 하나의 프로젝트입니다.
학교에서 조별과제를 할 때도 조를 짜서, 그 조 내에서 역할을 분담하지요?
게임 개발에도 마찬가지입니다. 가령 블리자드에서 오버워치를 개발한다고 합시다. 필요한 팀원과, 그 역할은 다음과 같습니다. :
1. 기획자
게임의 전체적인 컨셉을 짜고, 어떻게 하면 게임이 재밌을까, 이 게임이 어떤 장르인지, 어떤 시대적 배경을 갖는지, 지금 개발하려는 게임이 다른 시장에 나와있는 게임들과 어떻게 차별화되고 어떻게 그 차별점이 재미가 있는지 등을 분석해서 아이디어 노트 내지 기획안으로 냅니다. 사실 이거 말고도 기획자가 하는 일은 무궁무진합니다. '게임 기획자'에 대해 공부를 하다 보면 정말 밑도 끝도 없다는 것을 알 수 있습니다. 물론 겁먹지는 마세요, 이 사람들도 어디에선가는 시작했고, 아직 공부가 완전히 끝나지 않았지만 일을 하면서 또 새로 배우는 것도 있으니까요.
2. 프로그래머
프로그래머는 기획자가 제시한 기획서에 맞추어, 기획서에 적혀있는 내용을 컴퓨터가 이해할 수 있는 프로그래밍 언어를 통해 프로그램을 만들어 구현합니다. 가령 기획자가 쓴 기획서에는,
"오버워치는 좌클릭을 통해 자신이 선택한 캐릭터가 가지고 있는 성능에 따라 공격을 한다. 그 중에 솔져:76이란 캐릭터는 좌클릭을 하면 총을 쏘고 총알은 25발이며 25발을 다 쓰면 재장전을 해야 하고 우클릭을 하면 유탄을 쏜다."
라고 써져 있다면, 프로그래머는 솔져:76라는 캐릭터가 좌클릭을 할 때 '공격'을 수행하도록, 좌클릭을 할 때 ' 유탄 발사'를 수행하도록, 좌클릭을 꾹 누르다가 25번 '공격' 이 수행되면 자동으로 재장전하도록 하고, 재장전을 하면 다시 '공격' 할 수 있도록 만듭니다.
3. 그래픽 디자이너
기획서는 계획을 제시했고, 프로그래머는 기계가 이해할 수 있도록 기획자의 언어를 번역해 줍니다. 그래픽 디자이너란 게임을 플레이 하는 사람의 '눈'을 즐겁게 해줄 시각적 요소를 만드는 모든 사람을 통칭합니다.
그래픽 디자이너는 정말 종류가 많은데요, 규모가 작을 수록 한 사람 당 해야 할 작업의 종류는 많아집니다. 한 사람이 일러스트레이터도, 모델 디자이너도 UI디자이너의 역할 3가지를 다 할 수도 있는 것이죠.
어쨌든 직군에 따라 어떤 일을 하는지 대강 알아봅시다.
a) 일러스트레이터 : 게임에 등장할 캐릭터의 컨셉 아트를 그려서 기획자가 제시한 디자인을 그려내는 사람들입니다. 가령, 기획자가 "윈스턴은 엄청 큰 고릴라인데, 커다란 몸집을 가지고 있고 우주복을 입고 있으며 커다란 전기 충격기를 가지고 있다." 라고 말했다면 일러스트레이터는 그러한 묘사에 맞게 "윈스턴은 이런 모습을 할 것이다." 라는 그림을 그려줍니다.
b) 3D 모델 디자이너 : 오버워치는 3D 게임입니다. 그럼 그 게임에 등장하는 캐릭터들, 건물, 오브젝트(상자나 오락기처럼 움직일 수 있는 쪼끄만 물체들 같은거)들도 다 3D 형태를 갖추고 있어야겠죠. 그러한 것들을 3D파일로 제작하는 사람들입니다.
c) UI 디자이너 : 화면에 보이는 체력바, 스킬의 쿨타임을 알려주는 시각적 표시, 점점 줄어드는 타이머의 숫자가 어떤 글꼴, 어느 정도의 크기를 갖고 있는지, 혹은 메인 메뉴에서 플레이-설정-종료 이런 버튼들이 어떻게 배치될 것인지를 디자인 하는 사람들입니다. UI란 User Interface(유저 인터페이스)란 뜻인데, 사람들이 직접 상호작용 하는 버튼이나 화면에 띄워지는 정보들을 이쁘게 가공하는 사람들이라는 뜻입니다.
4. 사운드 디자이너
게임에는 소리가 나와야죠, 테마 송도 있어야지요! 그러한 것들을 디자인하는 사람입니다. 작게는 총알이 날아가는 소리, 로켓이 푸슝~ 하고 머리 옆을 지나가서 펑! 터지는 소리들을 제작하고, 세밀하게 조정하여 게임을 플레이 하는 사람들이 소리가 너무 불편하진 않은지, 너무 작지는 않은지 등을 조정하는 사람들입니다.
앞서 말했다시피 곡을 작곡하는 사람도 크게는 포함할 수 있겠지요. 보통은 오버워치같은 대형 프로젝트에서는 효과음을 만드는 사람도 따로 있고, 노래를 작곡하는 사람도 따로 있습니다.
5. 기타 필요 인력
시나리오작가 : 게임 내용의 생동감 있는 전달을 위해 이야기를 지어내는 사람입니다. 스토리를 짜는 사람이죠.
레벨 디자이너 : 오버워치에서 맵을 디자인할 때, 예쁘기만 한 것이 아니라 양 팀이 공평하게 지형지물을 활용하여 싸울 수 있도록, 궁극적으로는 플레이 하는 것이 재밌는 맵을 만들기 위해, 주어진 오브젝트, 건물을 활용하여 잘 배치함으로써 디자인을 하는 사람들입니다. 싱글 플레이 게임에서도 마찬가지로, 지루하지 않고, 완급조절이 잘 되는 맵을 짜기 위해 계속 레벨을 디자인하는 사람들이죠.
-- 개발의 진행 --
일단 게임의 개발 기간을 정해놓습니다. 2~3년정도를 잡는 것이 보통입니다만, 더 길어질 수도 있습니다.
그 2년동안 총괄 기획자 내지 그런 책임지는 사람이 2~3년간 어떻게 게임을 완성할지 계획을 잡습니다.
오버워치라는 게임을 만들려면 수많은 것들을 만들어내야겠죠.
프로그래머는 3가지 직군(공격, 돌격, 지원)을 만들고, 이들이 각자 다른 체력, 이동속도를 가지도록 구현하고,
그래픽 디자이너는 열 몇가지 캐릭터들의 개성적인 모습을 일러스트로 그리고, 일러스트에 기반하여 3D모델을 만듭니다. 동시에 체력 게이지는 어떻게 생겨야 잘 보이면서 거슬리지 않을까, 고민해야죠.
사운드 디자이너는 그 열 몇가지 캐릭터들의 목소리를 담당한 성우를 찾아 목소리를 녹음하고, 잡음이 없도록 조절하며, 동시에 또 어떤 팀은 겐지의 표창 던지는 소리를 녹음하고, 더욱 더 소리가 귀에 잘 꽂히고 듣기 좋도록 수정합니다.
지금 이러한 작업들을 일주일이면 일주일, 한달이면 한달씩 정리해 나가면서 진도를 맞추어 나갑니다.
그렇게 2년~3년이 되면 게임이 플레이 가능한 수준이 되어가고, 완벽히 출시를 하기 전에 테스트를 진행합니다.
테스트는 몇가지로 나뉩니다.
알파 테스트 : 회사 내에서, 외부사람들에게 공개하지 않은 채로 개발자나 팀원들이 플레이해보면서 버그가 있는지 없는지 테스트합니다.
클로즈드 베타 테스트 : 회사 외부 사람들에게, 몇몇 사람만 지정해서 이 게임을 플레이해보면서 버그가 있는지, 이 게임의 개발과는 상관 없는 사람인데 과연 재미있는지, 재미가 없다면 어디가 재미없어서 개선이 필요한지 등을 그 사람들에게 물어봅니다.
오픈 베타 테스트 : 공개적으로 사람들에게 게임을 공개하여 게임을 플레이하도록 하고, 개선점 등을 찾습니다. 오픈베타는 사실상 실제 게임 발매 했을 때의 상황을 상정하고 테스트하는 것이라고 볼 수 있죠. 이를테면 오버워치에 총 10명의 사람이 접속해 있을 땐 게임이 잘 되지만, 1만명, 10만명이 동시에 접속해 게임을 하고 있을 때도 잘 버틸까요? 오픈 베타 테스트를 통해 알아낼 수 있겠죠.
오픈 베타 테스트에도 특별히 결함이 없다면, 몇가지 자잘한 버그 수정을 더 한 뒤 공식적으로 게임을 발매합니다.
-- 게임 개발 : 1인 내지 소규모 팀일 때 --
1인 게임 개발 내지 소규모 팀이라면 위에 분할된 역할을 더 적은 사람들이 분담합니다.
저같은 경우는 1인 게임 개발을 목표로 프로그래밍, 작곡, 효과음 제작, 간단한 드로잉 연습을 지금까지 해온 상태입니다.
기본적인 과정은 위와 동일합니다. 게임의 규모가 작고, 또한 1인 개발에서는 자기 자신이 기획자이자 프로그래머, 디자이너인 만큼 기획서를 쓸 필요가 상대적으로 적습니다. 왜냐하면 기획서란 보통 자신의 생각을 다른 동업자들에게 이해시켜주기 위해 필요한 내용을 담고 있거든요.
-- 어떤 프로그래밍 언어를 배우고, 어떤 도구를 쓸까? --
크게 말하자면 이것은 정말 무궁무진합니다.
집을 지을 때 콘크리트를 쓸 수도 있지만, 벽돌을 쓸수도, 볏짚이나 나무, 흙을 쓸 수 있는 것과도 같은 맥락입니다.
또 집을 지을 때 삽을 이용해 흙집을 지을 수도 있지만, 포크레인과 같은 중장비를 활용해서 흙집을 지을 수도 있죠.
자신이 원하는 집이 모래성이나 1인 토굴이라면 그냥 삽으로 해도 그럭저럭 됩니다.
하지만 50명 이상이 거주할 수 있는 다인주택을 짓고싶다면 삽만 가지고는 어려울 겁니다. 못 할 건 없겠지만요. 다만 겁나게 어려울 뿐입니다.
본인이 개발하고자 하는 게임의 장르는 어떠한가요?
본인이 개발하고자 하는 게임은 2D인가요, 3D인가요?
본인이 개발할 때, 대규모 팀에서 일하고 싶나요, 소규모 팀을 꾸려서 하고 싶나요, 혼자 힘으로 개발하고 싶나요?
개발하고자 하는 게임의 규모는 어떠한가요?
만약 취미로 개발하고자 한다면, 어느 정도의 시간을 투자할 수 있을까요?
이러한 요소들을 고려해야 합니다.
가령, 본인이 혼자 개발하고 싶고, 프로그래밍 언어를 배우지 않고도 간단한 RPG를 만들어서 이야기를 풀어나가고 싶으며, 노래나 효과음은 다른 데서 혹은 그 도구에서 가져다 쓸 것이다. 라고 하면
EnterBrain 사의 RPG 만들기 시리즈 를 사용할 수 있습니다. 간단하게 만들고자 하면 프로그래밍이 필요하지 않고, 어떤 캐릭터를 놓고 거기에 엔터를 누르면 대화를 할 수 있으며, 골드, 아이템, 이런 것들은 다 만들어져 있습니다.
프로그래밍 언어를 배울 것이라면 조금 선택지는 넓어집니다.
GML이라는 독립적인 언어를 사용하는 GameMakerStudio 시리즈도 있으며(다만 이 도구는 2D 특화이며, 신작 라이선스가 10만원이나 해서 좀 가격의 장벽이 있습니다. 하지만 2D 애니메이션 제작은 나쁘지 않게 잘 됩니다.)
보통 국립학원에서 가르치고 입문이 비교적 쉽다고 평가받는 Unity(유니티) 가 있습니다.
유니티를 다루기 위해서는 프로그래밍 언어 C#에 대한 공부가 필수적입니다.
유니티는 국내뿐만 아니라 세계적으로도 꽤 커뮤니티가 크기 때문에 한글이든 영어로든 많은 도움을 인터넷에서 받을 수 있습니다.
당장 저도 유니티를 사용하고 있고요.
하지만 유니티로 개발하다가도 게임의 규모가 본격적으로 커지면서 언리얼 엔진으로 갈아타는 회사들이 많습니다. 유니티는 대규모 게임 개발에서는 C#이란 프로그래밍 언어 특성 상 부딪히는 최적화 문제 때문에, C++이란 언어를 사용하는 언리얼 엔진으로 갈아타곤 합니다. AAA급 게임을 개발하는 회사라면 유니티보다는 언리얼을 선호하며, 그렇지 않더라도 좀 규모가 크다면 언리얼을 사용하지요.
--
말이 두서없었습니다.
저는 5월에 군대에 전역해서 지금 4개월정도 유니티를 공부하고 있습니다. 유튜브로 독학하는 방법도 있지만 저는 책을 사는 편을 택했습니다. 다시 찾아보기 편하거든요.
4권정도 관련된 책을 구입해 본 결과, 아예 입문하신다면 아래의 두 책을 추천합니다.
1. 유니티 교과서 : 기타무라 마나미 저
http://www.yes24.com/Product/Goods/63348114