#자유로운의견교환 #익명게시판 #구성원간소통 #에티켓필수

제목스마일게이트 언리얼 엔진 교육 수료 및 언리얼 엔진 c++ 프로그래밍에 대한 가이드2024-03-03 23:06
작성자

안녕하세요. 얼마전에 졸업한 겜콘 20학번입니다.

저는 스마일게이트에서 진행하는 언리얼 엔진 UNSEEN 프로그램 1기 수료 후 현재 엔진팀에서 컨텐츠 개발 및 엔진 유지보수하는 게임 프로그래머로 근무하고 있습니다.


지금 UNSEEN 2기가 시작되고 있는데, 저의 UNSEEN 1기 후기와 수료 후 정규직 입사까지의 경험을 공유하고자 합니다.

UNSEEN 프로그램에 대한 홍보이기도 하지만, 저희 학과 커리큘럼 상 언리얼 엔진 c++ 프로그래밍을 직접적으로 배울 기회가 없어, 학우분들에게 커리큘럼 설명과 더불어 언리얼 엔진 C++ 프로그래밍 공부 가이드를 드리고 싶어서 작성하게 되었습니다.

UNSEEN 프로그램은 다른 웹/앱 분야의 부트캠프처럼 게임 분야에서의 부트캠프라고 생각하시면 좋을 것 같습니다.

게임 엔진 중 특히 언리얼 엔진 5를 교육받고 개인 프로젝트를 진행하게 되는데 이러한 교육은 주변에 거의 없기 때문에 정말 좋은 기회라 생각하고,  취업 목적이 아니더라도 언리얼 엔진 “C++” 을 공부하고 싶다면 꼭 지원해보시길 추천드립니다.


대략적인 프로그램이 무엇인지 소개하였는데 구체적으로 어떤 것들을 배우고 하는 지부터 말씀드리겠습니다. 


UNSEEN 커리큘럼

언씬에서 배우는 커리큘럼은 기본적으로 블루프린트(이하 BP) 사용이 아닌 c++ 프로그래밍을 합니다. 이 둘의 차이가 크기 때문에, 게임엔진기초 등의 수업을 수강하시면서 언리얼에 대해 이해가 높다고 생각하시는 분들도 기초부터 배운다는 마음으로 들으셔야 합니다.

앞에서 언급했듯이 꼭 해당 프로그램을 참여하지 않더라도, 언리얼 엔진 C++ 공부하실 때 무엇을 공부해야하는지 막막하실 분들께도 도움이 될 것 같아 어느 과정으로 공부했는지 공유하고자 합니다. (관련 담당자분께 허락을 구했습니다.)


1단계) 언리얼 C++ 기초

- 언리얼 c++ 기본 타입/문자열 

- 언리얼 오브젝트와 리플렉션 시스템

- 언리얼 c++ 설계 - 인터페이스, 컴포지션, 델리게이트

- 언리얼 컨테이너 라이브러리 

- 언리얼 엔진의 메모리 관리

- 언리얼 오브젝트 직렬화 및 패키지


언리얼 c++ 에서 배워야하는 기초는 대략 위와 같이 배울 수 있습니다. 언뜻봐도 기존 c++ 프로그래밍과는 달리 새롭게 배워야하는 내용이 많다는 것을 생각하실 수 있습니다. 각 내용들을 쉽게 풀어보겠습니다. 

이미 알고 계신 분들도 계시겠지만, 언리얼 엔진은 자체적으로 기본 자료형부터 기존 c++ 기본 타입을 따르지 않고 따로 지정하고 있습니다(FString, TChar 등) 이러한 내용은 공부하다보면 왜 기본 타입을 따르지 않는지 알 수 있을 것입니다.

다음으로 언리얼 오브젝트라는 객체를 다루는 프로퍼티 시스템인 UPROPERTY , GENERATED_BODY  등 자체적으로 C++ 매크로를 만들어서 사용하고 있는데, 이러한 시스템 덕분에 편하게 BP 등에서 구현하고 연동될 수 있는 것이죠.

또한 게임 엔진의 경우 성능을 내는 것이 중요하기 때문에 언리얼에서 제공하는 인터페이스나 델리게이트 등을 활용해 설계하는 경우가 많습니다. 인터페이스나 델리게이트는 다른 언어에서도 사용하고 있는데, 언리얼 엔진도 자체적으로 시스템을 만들어서 제공하고 있습니다. 

특히 언리얼에서는 액터라는 레벨에 배치되는 가장 기본이 되는 오브젝트가 존재하고 이를 컴포넌트로 분리하여 액터의 행동과 기능을 모듈화하도록 설계를 많이 합니다. 설계적인 부분도 배운 다음에는 언리얼 엔진에서의 자료구조와 메모리 관리도 배웁니다. 보통 언리얼에서는 C++ STL을 잘 사용하지 않고 언리얼 엔진에 특화되어 있는 언리얼 컨테이너 라이브러리를 사용합니다.

언리얼 가비지 컬렉션, 직렬화, 패키지 등 게임 오브젝트들을 관리하는 방법들도 배우게 된다면 언리얼의 동작 구조에 대해서는 어느정도 파악하실 수 있을 것입니다.


2단계) 언리얼 게임 프레임워크

언리얼 엔진 C++ 프로그래밍에 대해 공부하셨다면 이제 직접 샘플 게임을 만들면서 실습하게 됩니다. 공부한 내용들을 실습에 직접 적용해보는 것과 이를 내 개인 프로젝트에 적용하도록 고민하는 과정은 매우 중요하고 이를 통해 실력이 늘 수 있다고 생각합니다.

게임 제작을 위해 언리얼 엔진에서는 자체적으로 설계한 프레임워크를 제공하고 있는데요, 각 구성 요소를 파악하고, 이를 확장하면서 게임을 제작하는 것을 배웁니다.

개인적으로 추천드리는 방식은 싱글 플레이를 먼저 제작하면서 프레임워크에 대해 익힌 다음 멀티 플레이를 제작하면서 멀티에 대한 이해를 하는 것을 권장..이 아닌 강요하겠습니다.

해당 과정에서는 1단계에서 배운 것들을 적용하는 단계라고 볼 수 있습니다.


3단계) 멀티플레이 게임 제작

- 네트워크 모드와 게임 접속 플로우

- 커넥션과 오너쉽

- 액터 리플리케이션 로우레벨 플로우

- 프로퍼티 리플리케이션과 RPC


멀티 플레이 제작은 게임 개발에 있어서 또 다른 영역이지만 대부분의 대기업 게임들은 멀티 플레이로 개발하기 때문에 필수적으로 공부해야합니다.. 저의 경우는 1기였어서 해당 커리큘럼이 수료 후에 공개되었기 때문에 미리 공부하지 못하고,인턴 입사 후에 멀티를 처음 접해보았습니다. 물론 기존 언리얼 엔진 프레임워크에 대한 이해가 있었기 때문에 수월하게 할 수 있었다고 생각합니다. 다시, 멀티플레이에 대해 간략하게 말씀드리면 언리얼 엔진에서 네트워크는 크게 Standalone, Client, Listen Server, Dedicated Server 가 있는데 하나의 서버에 여러 클라이언트가 접속하고 정보를 서버에서 복제받아 클라이언트에서는 proxy로 행동하는 방식입니다. 이러한 시스템을 리플리케이션이라 하고, 클라이언트에서도 서버에 보낼 수도 있어야 하니 RPC 를 통해 전달할 수 있습니다. 

https://www.youtube.com/watch?v=JOJP0CvpB8w&t=248s

해당 유튜브는 처음 언리얼 엔진 네트워크 공부했던 것인데 도움이 많이 되었던 자료라 공유드립니다. 멀티 플레이 플로우에 대해 그림으로 잘 설명해주고 있어서 이 영상만 봐도 대략적인 감을 잡을 수 있을 것입니다.


UNSEEN 수료 및 정규직 입사 과정

1. UNSEEN 지원

처음 UNSEEN 지원은 2월 쯤에 지원서(포트폴리오) 및 프로젝트 계획서 작성 → 코딩테스트  면접 순이었습니다.

그때 면접관분이 지금 제 팀장님이신데 금방이라도 울 것 같아서 살살 질문해주셨다고 합니다..ㅎ 그래도 프로그램에 대한 열정과 언리얼 엔진 프로젝트 경험을 열심히 어필했던 것 같습니다.


2. UNSEEN 수료

수료할 때 쯤에 인턴십을 시작하여 지원했습니다. (인턴십은 매년 상황에 따라 다를 수 있다는 점 참고 부탁드립니다.)

이때에는 프로젝트 포트폴리오 제출 필수 및 개인 포트폴리오 선택  코딩테스트  면접 순이었습니다.


3. 인턴 수료 및 정규직 전환

인턴은 3개월동안 진행했고, 과제 형식으로 개발하다가 과제가 생각보다 일찍 끝나서 남은 기간동안에는 버그 수정 등 실무에 투입되기도 했습니다. 직무에 대한 상세한 내용은 회사 정보보안 상 생략하도록 하겠습니다.

인턴에서 정규직으로 전환되기 위해 직책자의 평가와 임원 면접이 있었습니다. 인턴 기간 중 한번 엔진 분석과 관련된 PT를 진행한 적이 있었는데, 이 부분에 대해 평가를 좋게 주셨다고 합니다. 

겜콘 4년동안 매번 팀플, 발표하면서 굴렀던 덕분입니다.. 실제로 게임 엔진 기초 수업에서 엔진 분석하는 과제를 했던 걸로 기억합니다. 뿐만 아니라 게임그래픽프로그래밍 수업 등에서 코드를 많이 분석, 디버깅했던 경험들이 도움이 많이 되었습니다.

암튼 다행히 모두 좋게 봐주셔서 정규직으로 전환될 수 있었습니다.


쓰다 보니 글이 길어졌습니다. 포트폴리오와 면접에 관한 이야기는 다른 분들도 좋은 글을 많이 남겨주셔서 생략하도록 하겠습니다. 해당 글을 읽고 언리얼 엔진을 공부하실 때 어떤 단계로 공부해야 할 지, 어떤 것들을 공부해야 할 지 도움이 되셨으면 좋겠습니다. 처음부터 모든 것을 이해하려 하기보다는 단계적으로 공부하고 경험을 쌓아가는 것이 좋습니다. 마지막으로 드릴 말씀은 겜콘 4년동안 학교 생활을 소중히 여기고 최선을 다해주세요 :) 저 역시도 이 프로그램을 제외하고는 학교에서 진행하는 수업과 프로젝트로 경험을 쌓을 수 있었고 하나씩 하다보면 큰 성과로 이어질 수 있을 것입니다!


이외에도 궁금하신 사항이 있으실 경우 san012@khu.ac 으로 연락 부탁 드립니다. 

감사합니다.


댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)