티스토리 뷰

언리얼 엔진으로 개발을 진행하다 보면, 다른 프로젝트에서 재사용 가능할 것 같은 코드들을 따로 모듈을 생성하여 개발할 때가 있습니다. 진행중인 프로젝트가 '게임' 프로젝트라고 가정한다면, 이 게임플레이 모듈과 직접적으로 연관되어 있지 않은 기능들을 다른 모듈에 둘 수 있다고 볼 수 있습니다.

언리얼 엔진에서는 이렇게 모듈을 분할하는 것에 대해서 다음과 같이 설명하고 있습니다 :

게임 DLL 모듈성에 대해서는 철학적 선택이 있습니다. 게임을 다수의 DLL 파일로 나누는 것은 그 이득보다 문제가 많을 수가 있지만, 이것은 각 팀의 요구와 원칙에 따라 결정해야 할 것입니다. 다중 게임플레이 모듈을 사용하면 링크 시간이나 코드 반복처리 시간이 빨라지겠지만, DLL 익스포트 및/또는 인터페이스 클래스를 처리해야 하는 모듈 수가 늘어나게 됩니다. 이러한 상충 관계는 엔진이나 에디터 코드에 대해서는 올바른 것이나, 게임플레이에 대해서는 미심쩍은 것입니다.

 

요즘에는 모듈의 추상화 개념인 플러그인 제작도 많이 이뤄지고 있는 편인데, 이러한 이야기들이나 모듈에 대한 상세한 내용은 추후 포스팅을 통해서 알아보도록 하고, 여기서는 일단 2개 이상의 모듈로 개발중인 프로젝트라고 가정하고 시작하겠습니다.

 

 

 

핫 리로드(Hot Reload)


언리얼 엔진에서는 유니티와 마찬가지로 핫 리로드 기능을 제공합니다. 핫 리로드는 사용자가 생성한 결과물(모듈, 라이브러리)을 에디터가 감지하여 새로운 것으로 교체하여 에디터에 적용하는 기술을 의미합니다. 위키에서는 다음과 같이 정의합니다:

Hot Reload is a feature that allows the Unreal Editor to detect newly compiled .DLLs automatically.

 

언리얼 엔진에서 핫 리로드는 에디터 툴바 메뉴의 컴파일 버튼 또는 Visual Studio IDE에서 빌드 버튼(Ctrl + Shift + B)를 통해 컴파일을 수행하였을 때 이뤄지게 됩니다.

이런 핫 리로드 기능은 계속해서 변화하는 코드를 자동적으로 에디터가 읽어들여 적용해 주므로 상당히 편리한 기능이지만, 앞서 설명한 핫 리로드 방식은 메인 모듈(게임플레이 모듈)만 감지한다는 단점이 있습니다. 예를 들어, TestRPG 프로젝트를 생성하면 TestRPG 모듈이 주 모듈이 되며, 추후에 기능의 분리와 재사용성을 위해 웹 통신을 하는 기능을 TestHttp 모듈을 생성하여 코드를 작성한다고 가정하겠습니다. 이 경우, 핫 리로드 기능은 TestRPG 모듈에 대해서만 이뤄집니다. 빌드를 수행했을 때 두 모듈에 대한 컴파일이 수행되지만, 핫 리로드가 되는 모듈은 하나인 셈입니다.

 

 

 

모듈 핫 리로드(Module Hot Reload)


주 모듈이 아닌 모듈의 코드를 수정하거나 생성하였을 때, 이 모듈을 핫 리로드 하기 위해서는 언리얼 에디터의 '창 > 개발자 툴 > 모듈'에서 수행할 수 있습니다.

창 > 개발자 툴 > 모듈

 

모듈 창은 현재 프로젝트에서 사용중인 모듈들의 목록과 언로드/리로드/리컴파일을 제공합니다. 여기서 여러분들이 제작한 모듈의 이름을 찾아서 리컴파일을 눌러주면, 해당 모듈에 대해서만 컴파일을 수행하며, 빌드에 성공하면 핫 리로드가 되었다는 알림음을 냅니다.

 

 

 

레퍼런스


게임플레이 모듈
Hot Reload - Epic Wiki

댓글