프로그래머라면 누구나 언젠가 전혀 모르는 엔진을 배워야 할 날이 온다. 넥슨의 고민정 서버 프로그래머는 이 과정이 조금 더 극적이었다. 서버 프로그래머 4명, 프로그래머 1명으로 구성된 팀에 속한 그에게 어느날 팀장이 물었다.
그는 그렇게 갑자기 언리얼엔진 하나도 모르던 서버 프로그래머에서 갑자기 언리얼엔진을 배우는 신세가 되었다. 그리고 그는 2년 뒤 언리얼엔진의 버그를 수정해 기여자에 이름 올렸다. 고민정 프로그래머는 어떻게 '언알못'에서 언리얼엔진 기여자까지 되었을까? 그가 NDC 2017 '뛰는 프로그래머, 나는 언리얼엔진' 강연에서 '언알못'들에게 권한 학습법을 간략하게 정리했다. /디스이즈게임 김승현 기자
# 개발자 추천 1위 학습법 '온라인 코스', 무엇이 좋을까?
개발자 커뮤니티 '스택오버플로우' 설문에 따르면, 개발자가 무언가를 배울 때 가장 추천되는 방법은 '온라인 학습'이다. 그렇다면 '언리얼엔진'을 배우기 위해서는 어떤 온라인 학습 코스가 적절할까?
고민정 프로그래머는 언리얼엔진 공식 사이트에 있는 '공식 문서'를 권했다. 공식 문서는 에픽이 개발자들의 엔진 이해도를 높이기 위해 만든 문서이니만큼, 언리얼엔진의 기초적인 기능을 익히기도 좋고 개발에 참고할만한 자료도 쉽게 얻을 수 있다.
더군다나 언리얼 공식 문서는 상당부분 한국어화 되어 있어, 한국인 개발자들이 큰 어려움 없이 내용을 학습할 수 있다. 간혹 애매한 한국어 번역이 발견되는 것이 흠이지만, 이것은 영문 버전과 비교하면 큰 어려움 없이 본래 뜻을 이해할 수 있다. 고민정 프로그래머는 언리얼공식 문서 외에도 다음과 같은 사이트를 추천했다.
조금 더 구체적인 가이드를 원한다면 에픽에서 만든 '비디오 튜토리얼'을 시청하는 것도 방법이다. 비디오 가이드 특성 상, 개발자가 영상을 보며 하나하나 따라하기 쉽다는 것이 최대 강점이다. 또한 최근에는 유튜브 자막 기능 덕에 많은 비디오 가이드가 한국어화 돼있어, 접근성도 많이 좋아졌다.
# 보다 상세한, 다양한 정보가 필요하다면?
보다 상세하고 다양한 정보를 원한다면 언리얼엔진 관련 책을 보는 것도 좋은 방법이다. 실제로 책은 개발자들이 온라인 학습에 이어 2번째로 많이 권하는 학습 방법이기도 하다.
단, 만약 '한국어' 책을 원한다면 고민을 조금 많이 해야 한다. 현재 시중에 풀린 언리얼엔진 관련 서적 대부분은 코딩이나 엔진 구조 같은 코어한 내용 없이, 블루프린트 기능 등을 이용해 (비교적) 쉽게 게임을 만드는데 집중돼 있다. 더군다나 한국어 번역본의 경우, 가뜩이나 업데이트 속도가 빠른 언리얼엔진 특성 상 '옛날 정보'를 담고 있을 확률도 높다.
다음은 고민정 프로그래머가 권하는 한국어 언리얼엔진 관련 서적이다. 만약 책으로 언리얼엔진을 공부하고 싶은 사람이라면 아래 책들의 내용을 레퍼런스 삼자.
온라인 문서나 책 같은 '정보'로는 충분한 정보를 얻지 못했다면 '사람'을 만나는 것도 방법이다. 예를 들어 '스터디 모임'의 경우, 혼자 문서를 보며 공부할 때에 비해 동기 부여나 정보 공유 측면에서 큰 도움이 된다.
단, 스터디를 가입할 때 중요한 것은 '초보자끼리'는 그룹을 구성하지 않는 것이다. 물론 이것으로도 얻는 것은 있다. 하지만 다들 초보자이다 보니 대부분의 경우 비슷한 곳에서 막히기 마련이고, 설사 이를 해결했다고 하더라도 '근본적인 해답'이 아니라 수박 겉핥기 식 해답을 가지기 쉽다. 때문에 고민정 프로그래머는 스터디 그룹을 들 때, 가능하면 자기들보다 이해도가 높은 이를 초빙할 것을 권한다.
만약 회사에 언리얼엔진을 만지고 있는 인원이 있다면 이들과 티타임을 하는 것도 좋은 방법이다. 이런 티타임의 경우 스터디에 비해 공부의 지속성이나 밀도는 낮을 순 있겠지만, 공부나 실무 중 겪은 어려움을 자연스럽게 물어볼 수 있어 실질적인 문제 해결 면에서는 큰 도움이 된다.
주변에 학습 동호회가 있다면 여기에 가입하는 것도 좋은 방법이다. 보통 이런 동호회의 경우 문외한과 숙련자가 같이 있어, 숙련자에게 궁금한 점을 묻기도 좋고 프로그래머로서 코딩 문외한의 관점을 이해하기도 좋다. 단, 동호회의 경우, 스터디처럼 하나의 목표를 가지고 모인 모임이 아니기 때문에 학습자의 적극성에 따라 학습 효율이 많이 차이 나는 것이 흠이다.
# 초보자를 벗어나 중급, 고급 코스에 들어서려면?
언리얼엔진에 대한 기본적인 지식이 있다면 '컨퍼런스'에 가는 것도 많은 도움이 된다. 고민정 프로그래머가 추천하는 컨퍼런스는 '언리얼 서밋'과 같은 에픽에서 직접 주최하는 행사다.
에픽에서 개최하는 행사니 만큼 초보자부터 숙련자까지 다양한 유저층을 아우르는 정보를 얻을 수 있다. 개발자 입장에선 언리얼엔진 관련 최신 정보를 가장 많이 얻을 수 있는 행사이기도 하다. '언리얼 전국투어' 같은 행사는 에픽에서 전국의 언리얼엔진 초보자를 위해 마련한 행사니 만큼 지방에서도 어렵지 않게 좋은 정보를 얻을 수 있다.
개발자 입장에선 GDC나 NDC 같은 컨퍼런스도 정보의 보고다. 단, 이런 컨퍼런스는 행사 성격 상 개발자들이 원하는 정보를 핀포인트로 얻긴 힘들다. 대신 다양한 분야의 사례와 해결법을 접할 수 있어, '노하우'를 학습한다는 측면에서는 큰 도움이 된다.
보다 실질적인 정보를 얻고 싶다면 '언리얼코드 저장소'를 참고하는 것도 방법이다. 언리얼코드 저장소에는 언리얼엔진의 빌드 별 코드를 볼 수 있는 것은 물론, 지금 수정 중인 코드들, 앞으로 엔진에 적용될 코드까지 모두 볼 수 있다.
아예 앞으로 언리얼엔진이 어떻게 변할지 알고 싶다면 '언리얼 로드맵' 트렐로를 참고하는 것도 방법이다. 이곳에선 말 그대로 언리얼엔진에 앞으로 어떤 기능이 추가/개선될 예정이고, 이것이 언제쯤 적용될지도 알 수 있다. 심지어 개발자가 '투표'를 해 특정 기능을 먼저 개발해달라고 요청할 수도 있다.
언리얼코드 저장소와 언리얼 로드맵 모두, 언리얼엔진을 실무에서 사용하고 있는 사람들에겐 따끈따끈한 참고 자료들이 가득한 곳이다.
# 엔진 학습의 끝판왕 '소스 수정'
고민정 프로그래머가 마지막으로 권하는 언리얼엔진 학습법은 엔진의 버그를 고치는 등 소스 코드를 직접 수정해 보는 것이다.
이렇게 소스를 개선하는 것은 개발자들이 4번째로 많이 권하는 학습법이다. 해당 엔진(혹은 소스)를 직접 만져야하는 만큼, 그 엔진(혹은 소스)을 가장 직접적으로 체감할 수 있기 때문이다.
그렇다면 언리얼엔진의 소스를 수정하려먼 어떻게 해야할까? 절차는 간단하다. 자신의 깃허브(github) ID를 언리얼코드 저장소에 연동하면, (인증 됐을 경우) 언리얼엔진의 모든 소스를 볼 수 있다. 개발자는 여기서 자신이 발견한 버그나 아쉬운 부분에 대한 개선사항을 코딩해 올리면(pull request) 된다. 이렇게 올린 개선사항이 리뷰어 평가에 통과되면 다음 버전 엔진에 반영되고 개발자는 기여자 리스트에 이름을 올리게 된다.
고민정 프로그래머는 이를 이야기하며 개발자들에게 적극적으로 자신의 노하우를 공유하고 또 공유해 줄 것을 부탁했다.
"한국은 개발에 대한 정보를 구하기 너무 어렵죠. 대부분 노하우를 안에서 감싸고 내보내지 않으니까요. 이해가 안되는 것은 아니지만, 덕분에 개발자가 무언가를 배우고 성장하기는 정말 힘든 환경입니다. 여러분의 노하우를 많이 공유해주세요. 그렇게 여러분의 실력도 높이고 초보 개발자들도 도와주세요."