멘토지원
파트너스
현직자 클래스
멘토 찾기
Best 질문답변
게임 개발자, 무엇을 어떤 순서로 공부해야 할까요?
AST홀딩스 · 디지털리얼리티 연구소
약 5년 전
💬 멘티의 질문
안녕하세요, 멘토님. 이제 2학년이 되는 컴퓨터공학부 학생입니다. 저는 게임 개발자가 되고 싶은데요. 무엇을 공부하고 준비해야 할지 막연하던 와중에 잇다를 알게 되었고, 현직에서 일하시는 멘토님을 찾게 되었습니다. 
 

ⓒCraig Garner


1. 게임 개발자가 되기 위해서는 C, C++, C#, JAVA, 자료구조, 알고리즘, 라이브러리, API, 게임수학을 공부해야 한다고 알고 있습니다. 어떤 순서로 공부를 하고 어느 정도 수준까지 공부해야 하는지 알고 싶습니다. 그리고 추가적으로 공부하면 좋은 것이 있을까요?
 
2. *유니티나 *언리얼 같은 툴들은 위의 내용을 전부 공부한 뒤에 공부하는 것이 좋을까요? 그리고 공부할 때 학원에 다니는 것은 어떤가요?
 
3. 자체 엔진을 이용하는 게임 회사들도 있다고 들었는데, 그런 경우에도 유니티나 언리얼을 통한 공부가 도움이 되나요?
 
4. 찾아보니 게임 개발자로 취직을 하기 위해서는 포트폴리오를 준비하는 경우가 대부분인 것 같은데요. 구체적으로 어떤 포트폴리오를 준비하는지 알고 싶습니다.
 
5. 포트폴리오 이외에 신입으로 준비할 수 있는 것은 무엇이 있나요?
 
6. 이건 정말 소심한 질문인데요. 사실 저는 수도권의 별로 좋지 않은 학교의 학생입니다. 그래도 게임 업계는 경험이나 능력적인 부분을 많이 본다고 듣긴 했는데요. 실제로 그런지 정말 궁금합니다. 만약 학력 부분이 문제가 된다면 재수나 편입을 하더라도 게임 개발자가 되고 싶거든요.
 
인터넷에서는 답을 찾을 수 없었던 질문을 할 수 있어서 다행이에요. 멘토님의 현실적인 조언 부탁드리겠습니다. 감사합니다.


 
*유니티 : 유니티(Unity)는 3D 및 2D 비디오 게임의 개발 환경을 제공하는 게임 엔진이자, 3D 애니메이션과 건축 시각화, 가상현실(VR) 등 인터랙티브 콘텐츠 제작을 위한 통합 제작 도구이다.

*언리얼 : 언리얼 엔진(Unreal Engine)은 미국의 에픽 게임즈에서 개발한 3차원 게임 엔진이다. 1994년부터 현재까지 꾸준한 개량을 통해 발전되고 있으며, 수십 개의 비디오 게임에 사용되고 있는 미들웨어 솔루션이다.

💬 곽준원 멘토의 답변

안녕하세요, 멘티님. 다양한 프로그래머 직업 중에 게임 업을 선택하시고 공부하고 계시군요. 저의 글이 게임 개발자가 되는 길에 조금이라도 보탬이 되었으면 좋겠네요. 그럼 바로 답변드려 볼게요.
 

ⓒfabian grohs


우선 C와 C++을 중심으로 공부하세요

첫 번째 질문부터 보면요. 프로그래밍 언어는 굉장히 다양하고 하나의 언어를 깊이 있게 공부하고 습득하기 어려워요. 그렇기 때문에 여러 언어를 하기보다는 우선 C, C++를 주로 하시면 좋겠어요. 물론 모바일 플랫폼에서는 JAVA도 필요하고, 또 다양한 툴 제작과 유니티 엔진을 이용한 게임 개발에서는 C#을 사용하긴 하지만, 우선은 C++를 깊게 이해하시면 좋겠어요. 즉, 객체 지향 개념을 명확히 이해하셔야 한다는 거죠.
 
그리고 자료구조, 알고리즘, 게임수학의 공부 순서는 정해져 있지 않아요. 프로그래밍은 프로그래밍 언어, 자료구조, 알고리즘, 수학이 모두 연계되어 있는 집합체이기 때문에 공부 순서는 중요하지 않거든요.
 
프로그래밍에는 정답이 없지만, 상당히 괜찮은 코드라는 것은 존재해요. 자신의 코드가 이런 괜찮은 코드로 변화하기 위해서는 다양한 자료구조와 알고리즘, API 활용 능력이 필요하죠. 어느 정도 수준이라는 기준은 사실 정해진 바가 없어요. 다만 수준을 향상시키기 위한 방법은 존재하죠.
 
그 방법이란 이런 거예요. 우선은 학교에서 주어진 과제를 충실히 수행하시고요. 과제로 주어진 문제를 해결하였다고 멈추지 마시고 조금 더 좋은 코드를 생산하기 위해 어떤 자료구조와 알고리즘을 사용해야 할지 고민하고 설계해 보는 거죠.
 
그리고 학부생 시절 공부했던 내용, 그리고 자신이 고민하고 개선했던 코드와 방식을 필히 노트에 적어놓으시거나 메모라도 해 놓길 추천드려요. 또 학부생 시절의 이러한 코딩에 대한 경험을 나중에 자기소개서에서 활용하면 좋아요.
 
게임 프로그래머는 클라이언트와 서버로 구분할 수 있는데요. 각 직군에 대한 주요 지식이 조금씩 달라요. 학부 시절에 배우는 커리큘럼은 서버와 클라이언트 프로그래머가 되기 위한 기본 소양이라고 보시면 됩니다.


ⓒtj arnold


유니티, 언리얼. 두 가지 공부법이 있어요

다음으로는 유니티와 언리얼 엔진에 대해서 말씀드릴게요. 위에서 말씀드린 공부를 하면서 이 두 개의 툴을 이용해 다양한 공부를 병행하는 것도 괜찮은데요. 이런 엔진을 공부하는 방법 역시 다양해요.
 
여기에는 실제 엔진이 제공하는 다양한 요소의 동작 방식을 분석하는 방법과 엔진이 제공하는 요소를 이용하여 게임을 만드는 방법이 있어요.
 
전자를 생각하고 있다면 그래픽 관련 공부를 병행해야 해요. 후자라면 툴을 익히고 게임 프로젝트를 생성하여 자신의 게임을 차근차근 만들어보며 공부할 수 있죠. 3D 그래픽 기술을 직접 공부하기에는 진입장벽이 조금은 높을 수 있어요. 이러한 경우에는 학원의 도움을 받는 것도 괜찮습니다.
 
참고로 언리얼 엔진은 오픈소스로 제공되지만, 유니티는 엔진을 살펴볼 수 없어요. 그저 API로 제공되는 엔진의 함수를 가져다 사용해야 하죠. 엔진을 공부하시고 싶으시다면 언리얼 엔진을 선택하시고, 자신의 간단한 2D나 3D 게임을 만들어보고 싶으시다면 유니티 엔진을 추천합니다.
 

자체 엔진 게임 회사라도 유니티, 언리얼은 도움이 돼요

세 번째 질문에서는 자체 엔진 게임 회사를 언급하셨는데요. 자체 엔진을 이용하더라도 구성 요소는 유니티, 언리얼과 크게 다르지 않아요. 결국 같은 3D 그래픽 기술의 원천은 별반 다르지 않다는 거죠.
 
위에서 유니티와 언리얼의 공부에는 두 가지 방법이 있다고 말씀드렸는데요. 그중 그래픽 관련 공부를 하신다면, 자체 엔진을 이용한 개발사에서도 충분히 역량을 발휘할 수 있을 거예요.
 
그리고 혹시 엔진 공부가 어렵다고 생각하실 수 있는데요. 낙담하지 않으셔도 됩니다. 엔진을 이용하여 게임 콘텐츠를 구현하실 수 있으면 자체 엔진을 이용하는 개발사에서도 그리 어렵지 않게 적응할 수 있을 테니까요.

ⓒpinho


포트폴리오, 졸업 프로젝트로 충분히 가능

네 번째 질문은 포트폴리오에 관한 것이네요. 포트폴리오는 자신이 지금까지 어떤 프로젝트에서 어떤 구현을 맡아서 했고, 자신이 설계한 코드가 어느 부분인지 보여주는 걸 말해요. 보통 이력서에는 자신이 작성한 코드, 즉 CPP 파일을 첨부하죠.
 
학교를 졸업한 후에 학원에 다니는 취준생들을 보면 대부분 학원에서 프로젝트로 참여한 내용을 포트폴리오로 제출하는데요. 그럼 학부생들은 어떻게 해야 할까요? 모두 학원에 다녀 포트폴리오로 제출할 프로젝트를 생산해야 할까요?
 
저는 꼭 그렇지는 않다고 봐요. 학원에서는 인원을 정하고 자신들이 만들고 싶은 게임을 프로젝트로 정하는데요. 학원생은 학부생처럼 시험을 보고 학점을 얻어야 하는 상황이 아니라서 프로그래밍에 전념할 수 있다는 장점이 있지만, 학부생도 마지막 졸업 프로젝트에 충분히 시간을 할애할 수 있다고 생각해요.
 
학교에서 진행하는 수업에서 하는 프로젝트는 간단하지만 상당히 중요해요. 그저 학점을 얻기 위해 하는 프로젝트와 발표, 과제가 아니라 자신의 실력 향상을 위한 단계라고 생각하셨으면 좋겠어요.
 

개발 경험을 이력서에 구체적으로 담으세요

다음으로는 신입으로 준비할 수 있는 것에 대해 말씀드릴게요. 여기에는 꼭 프로그래머뿐만 아니라 여느 직군에서든 마찬가지로 중요한 요소가 있어요. 바로 학부생 시절의 경험을 고스란히 녹여낼 수 있는 이력서인데요.
 
사실 경력자분들도 자신이 해온 일에 대해 자세히 쓰지 못하고 말하는 능력도 부족한 분들이 많아요. 앞서 이야기했듯이 자신이 게임을 만들기 위해 노력한 내용을 고스란히 이력서에 담으면 좋겠어요.

ⓒpatrick perkins


예를 들어 어떤 게임을 만들기 위해 생각한 내용, 프로그래밍을 하면서 해결한 버그, 게임 콘텐츠의 어떤 구성 요소를 구현하기 위해 사용한 알고리즘, 자료구조, 그리고 완성 후에 코드 개선을 위해 노력한 흔적이 이력서에 담겨 있으면 좋겠어요.
 
신입에게는 대단한 능력을 원하지 않아요. 그저 어느 기간 동안 얼마큼의 성장을 이루었는지에 대해 자신을 어필하면 되는 거예요.
 

학력보다는 실력이 우선이에요

마지막 질문에서는 학력에 대한 걱정을 해 주셨네요. 실제로 회사 중에서는 실력보다 스펙을 중요시하는 곳도 있어요. 스펙과 실력 둘 중 어떤 것이 나은지 정확하게 판단하기는 어려운 거죠.
 
하지만 최근에는 블라인드 채용으로 스펙보다는 실력을 높게 평가하는 기업이 늘고 있어요. 저도 수도권의 그저 그런 학교의 전산학과를 졸업했는데요. 예전에는 서울 소재의 대학으로 편입도 생각해봤고 학교에 다니며 수능시험도 다시 치러봤어요.

ⓒfreepik


하지만 지금은 그런 노력의 시간이 조금은 아깝다는 생각이 들어요. 대학의 간판을 바꾸기 위해 공부하는 시간이 게임 개발자가 되기 위해 필요한 지식을 습득하는 시간으로 되면 좋겠어요.
 
요즘 개발사에서는 대부분 코딩테스트를 봐요. 아무리 대학 간판이 좋다고 하더라도 코딩테스트를 통과하지 못하고 프로그래밍 능력이 부족하다면 채용하지 않는 분위기죠. 게임 콘텐츠를 개발하기 위한 정형화된 방법은 없어요. 각 게임마다 아이템, 스킬, UI/UX, 콘텐츠가 모두 다르기 때문에 파생되는 기획 데이터의 구성도 다를 수밖에 없거든요.
 
그렇기 때문에 문제 해결 능력이 필수 요소로 부각될 수밖에 없어요. 학교에서 다양한 프로젝트의 다양한 문제를 접해 보며 해결하지 못한다고 주저앉지 마시고 하나씩 해결하면서 능력을 배양하고 성취감을 느끼시길 바랍니다.
 
자신이 처음 구현한 내용이 화면에 보이면 그 순간은 영원히 기억에 남을 거예요. 꼭 좋은 결과 있길 바랄게요. 감사합니다.
 
곽준원 멘토
AST홀딩스 · 디지털리얼리티 연구소
IT개발/데이터
http://blog.naver.com/ssmile1006
게임개발 18년차 클라이언트 프로그래머입니다.
게임개발에 대한 전반적인 필요 지식 및 조언을 해드립니다.
그리고 '취업'이 아닌 '직업'을 찾을 수 있도록 도움을 드리고 싶습니다.
같은 직무를 다룬 글
인기 있는 글
연구/설계
약 6년 전