[Day 13] 언리얼 엔진 C++ 개발 환경 준비 및 빌드 프로세스 이해

하돌·2025년 1월 20일
0

언리얼 C++ 개발환경 준비

빌드 오류 감소를 위한 읽기 전용 체크 해제

이렇게 UE_(현재 버전) -> Engine 폴더에서 속성을 누르고 읽기 전용을 체크 해제하면
빌드 오류가 조금이라도 덜 생긴다고 한다.


Visual Studio 연동 설정

언리얼 에디터에서 상단 바에 편집 -> 에디터 개인설정으로 들어간다.
여기서 일반 탭의 소스 코드를 선택하면 이런 창이 뜬다.

여기서 보통 Visual Studio로 설정되어 있어 최신버전을 쓰게 되는데
선생님은 Visual Studio 2022로 설정하라고 하셨다.


연동 후 마주치는 수많은 코드 파일들

언리얼 엔진과 Visual Studio를 연동하면 언리얼 엔진의 전체 소스 코드를 들고와서
이렇게 많은 코드들을 볼 수 있다.

엔진의 소스나 내부 API들을 직접 수정하고 커스터마이징할 수 있기 때문에
장점이 될수도 있다!


언리얼 프로젝트 구조

Content 폴더

  • 언리얼 엔진 프로젝트의 모든 에셋(예: 텍스처, 메터리얼, 사운드, 블루프린트 등)이 포함된 폴더다.
  • 게임의 비주얼과 관련된 리소스가 주로 이곳에 저장된다.

Source 폴더

  • C++ 헤더 파일과 소스 파일, 게임의 핵심 로직이 포함된 폴더다.
  • 게임의 동작과 관련된 모든 코드가 이 폴더에 저장되며,
    게임 개발자들이 주로 작업하는 공간이다.

.sln 파일

  • 솔루션 파일이며, 클릭하면 Visual Studio로 들어가게 된다.

.uproject 파일

  • 언리얼 프로젝트 파일이며 클릭하면 언리얼 에디터로 들어가게 된다.

Binaries 폴더

  • 빌드를 했을 때 실행파일들이 담기게 된다.

Config 폴더

  • 게임이나 엔진의 설정값 같은 걸 설정하는 설정파일들이 있다.
    ㄴ예시) 에디터의 환경설정, 키보드나 마우스의 입력값

DerivedDataCache 폴더

  • 빌드 시 만들어지는 캐시 파일들이 저장되는 폴더다.

Intermediate 폴더

  • 빌드 시 임시 빌드 파일들이 저장되는 폴더다.

Saved 폴더

  • 언리얼이 비정상적으로 종료되었을 대 로그 파일에 기억이 남는데 그런 로그 파일들이 저장된 로그 폴더가 포함되어 있다.
  • 크래쉬 덤프나 스크린샷도 여기에 저장된다.

언리얼 빌드 프로세스 이해

Visual Studio 폴더 구조

언리얼 실제 프로젝트 구조와 다른데 이것은 가상구조이며
그냥 Visual Studio에서 보기 쉽게 폴더 구조를 재정리 한 것이다.
저기에 실제 프로젝트 구조의 폴더들이 다 들어가 있으니 걱정하지 않아도 된다.

Engine 폴더

  • 언리얼 엔진 관련 파일들이 저장된다.

Games 폴더

  • 게임의 동작과 관련된 모든 코드가 이 폴더에 저장되며,
    게임 개발자들이 주로 작업하는 공간이다.

Programs 폴더

  • 서버 모듈과 외부 툴 등이 저장되는 폴더다.

Ruels 폴더

  • 엔진과 게임의 빌드 규칙들을 담아놓은 폴더다.

Visualizers 폴더

  • 디버깅할 때 언리얼의 자료구조를 좀 더 편하게 확인하기 위한
    설정 파일들이 담겨 있는 폴더다.

Games -> Project -> Source 폴더

  • .cpp.h파일이 계속 담길 것이며, .Build.cs 파일은 빌드 설정이 저장되는 파일이다.
  • .Build.cs 파일은 C# 코드로 이루어져 있는데 왜냐하면 윈도우로 빌드를 하기 때문에 그런 것이다! 모듈 같은 걸 추가할 때 가끔 수정할 수도 있는 파일이다.

빌드 프로세스 이해

c 파일 수정 -> 빌드(컴파일 + 링크) -> DLL파일 -> 언리얼 에디터

C 파일을 빌드한 결과물이 DLL파일에 담긴다.
그리고 그 DLL파일을 언리얼 에디터가 로드해서 쓴다.

빌드를 할 때마다 이 과정이 반복된다.
빌드를 하면 DLL 파일이 갱신되고
언리얼 에디터는 그 때마다 DLL 파일을 다시 로드한다.


빌드 구성과 플랫폼

왼쪽 메뉴

여기서 왼쪽 메뉴는 빌드 모드를 선택하는 것이다.

DebugGame

  • 디버그에 대한 모든 정보를 가진 채 게임이 빌드가 되는 모드다.
  • 하지만 모든 정보를 가진 만큼 무겁기 때문에 게임 속도가 느려진다.
  • 게임 실행 파일만 디버깅
  • 디버깅 할 때는 최적의 모드!

DebugGame Editor

  • 언리얼 에디터 상에서 바로 플레이할 수 있고 디버깅도 할 수 있는 모드다.
  • 언리얼 프로젝트도 디버깅하기 때문에 속도가 DebugGame보다 더 느리다.

Development

  • 가장 일반적인 빌드 모드다.
  • 디버그 정보는 DebugGame보다는 많이 축소되어 있다.
  • 축소된 만큼 게임 속도가 빨라진다.
  • 그래서 게임을 테스트하기에 가장 좋은 모드!

Development Editor

  • 언리얼 에디터 상에서 바로 플레이할 수 있고 디버깅도 할 수 있는 모드다.
  • 언리얼 프로젝트도 디버깅하기 때문에 속도가 Development보다 더 느리다.
  • 실제 게임을 플레이하며 테스트할 때 유용한 모드!
    ㄴ왜냐하면 게임을 실행하며 디버그를 확인할 수 있기 때문에 오류가 어떤 조건에서 일어나는 지 파악하기 좋다.

Shipping

  • 디버그 정보가 모두 빠지게 되며 최종 배포할 때 쓰는 모드다.
  • 마지막에 게임을 출시했을 때의 속도를 확인할 수 있다.
  • 게임을 다 만들고 최종 배포할 때 쓰는 모드!

오른쪽 메뉴

오른쪽 메뉴는 빌드를 어떤 플랫폼에서 할건지 선택하는 것이다.
만약 안드로이드, IOS, 콘솔로 개발하고 싶다면 SDK를 추가해서 여기서 골라 쓰면 된다!


부분 빌드

빌드를 할 때 F7번을 누르는게 아닌 솔루션 탐색기에서 우클릭 후 빌드로 원하는 부분만 빌드를 할 수 있다!


빌드 시 주의사항

빌드할 때 만약 언리얼 에디터가 켜져 있다면 DLL파일의 갱신을 원했는데 그걸
언리얼 에디터가 붙잡고 있는 경우가 있다. 그래서 많은 경우, 에러 메시지가 출력된다.
그런 상황에서는 그냥 언리얼 에디터를 끄고 다시 빌드를 하면 해결된다!

근데 그러면 빌드를 할 때마다 언리얼 에디터를 계속 꺼줘야 하는 문제가 생긴다.
그 귀찮은 문제를 해결하기 위해 언리얼에서는 라이브 코딩이란 기능으로 보완했다.
아래에서 설명할 것이다.


오류 목록에서 초보자가 해야 하는 것

IntelliSence라는 것은 개발자가 훨씬 더 편하게 코드 작업을 할 수 있도록
도와주는 기능이라 빌드의 완벽함과는 상관이 없다.

  • 비효율적인 코드가 있다면 오류 메시지를 출력하게 하는 기능이 있다.
  • 그것은 코드의 로직상 문제의 해결을 돕는데에 방해가 될 수 있다.
  • 그래서 IntelliSence로 출력된 오류 메시지는 컴파일러의 에러 메시지가
    아니라는 것을 기억해야 한다!

초보자 단계에서는 컴파일 오류를 잡는 것이 우선이니
위 사진에 보이는 옵션을 빌드 전용으로 바꾸어 준다!


빌드 꿀팁

만약에 이렇게 프로젝트를 시작 프로젝트로 설정한다면 이후 빌드를 하거나 디버그를 할 때는 항상 프로젝트 하위 파일들만 빌드나 디버그가 되서 편하다.


라이브 코딩

Visual Studio에서 작업 내용을 저장만 하고 언리얼 에디터로 넘어간다.
이쪽 아래에 있는 버튼은 즉시 컴파일 후 DLL 파일을 로드하는 기능이다.
Visual Studio에서 작업 내용을 저장한 후,
이 버튼을 누르면 변경 사항이 언리얼 에디터에 즉시 반영된다.

라이브 코딩은 일반 빌드와 역할은 같지만, 중요한 차이가 있다.
일반 빌드는 경우에 따라 언리얼 에디터를 재시작해야 할 수도 있지만,
라이브 코딩은 그런거 없이 변경 사항을 즉시 반영하므로 효율적이다!

하지만, 실제 프로젝트를 하다보면 라이브 코딩보다 그냥 정석적인 빌드를 할 때가 더 많다고 한다.(2025년 1월 기준)


Visual Studio에서 빌드도 하고 에디터 재시작도 했지만 변경사항이 반영이 되지 않을 때 해결법

임시 빌드나 캐시 파일에 문제가 생긴 경우, 이런 상황을 빌드가 꼬였다고 표현한다.

1. 에디터랑 Visual Studio를 종료한다.

2. 임시 캐시, 임시 빌드, 로그 파일들이 있는 폴더 3개를 삭제한다.

  • DerivedDataCache
  • Intermediate
  • Saved

어차피 빌드할 때마다 이 3개의 폴더는 생겨나서 괜찮다.

3. 프로젝트 폴더에서 .uproject파일에 Generate로 시작하는 걸 눌러준다.

4. 솔루션 정리를 해준다.

솔루션 정리는 정확한 재빌드를 위해 임시 빌드 파일과 캐시 파일들을 삭제하는 것이다!

이거까지 하면 빌드 오류의 90퍼는 해결된다. 실제로도 그렇게 느낀다.

profile
게임 개발자로서 배운 것을 정리한 블로그입니다. 벨로그 서버가 불안정한 거 같아서 티스토리로 옮겼습니다.

0개의 댓글