언리얼 - 엔진 2 : 빌드 프로세스

김정환·2025년 4월 9일
0

Unreal Engine

목록 보기
2/24

언리얼 엔진 빌드 프로세스

  • 코드를 수정하면 build 해야만 수정사항이 엔진에 반영됨.
    • 코드 수정 -> build(컴파일 + 링크) -> DLL 파일 생성 -> 언리얼 에디터의 DLL 로드
    • 코드를 수정할때마다 DLL 파일을 지속적으로 빌드해서 엔진이 로드해가는 방식.

1. 빌드 설정

1-1. 빌드 구성 Configuration

  • 일종의 빌드 모드
  • 종류
    • DebugGame
      • 디버그에 최적화된 모드.
      • 디버그의 모든 정보를 포함해서 굉장히 무거움. => 속도가 느려짐.
      • exe를 실행하듯 에디터가 아니라 독립 실행 파일 환경에서 플레이하며 디버깅.
    • DebugGame Editor
      • 에디터 환경에서 게임을 플레이하며 디버그.
      • 에디터 플레이 중에 C++ 로직을 추적하거나 브레이크 포인트를 걸 수 있음.
    • Development
      • 가장 일반적인 빌드 모드 : 디버그 정보를 최소화해 실행 속도를 높인 개발용 빌드
        • 그만큼 속도가 빠르고, 테스트하기 적당함
      • 독립 실행 파일 환경 테스트 및 개발 단계에서 주로 사용.
    • Development Editor
      • 에디터에서도 개발 및 테스트를 원활히할 수 있도록 구성된 빌드 모드
      • Live Coding 사용 시나리오와 궁합이 좋음.
      • 강의에서도 기본 모드
    • Shipping
      • 배포 단계 사용하는 릴리즈 빌드
      • 디버그 정보를 제거하고, 성능 최적화가 극대화됨.
      • 실제 게임 출시 때 본래의 게임 성능임.

1-2. 플랫폼 Platform

  • 게임을 작동시킬 OS 환경
    • win64, android, ios, console

2. 빌드

  • 보통 빌드한다면 Build Solution (Ctrl + Shift + B)를 사용해 왔을 것.
  • 전체 빌드
    • 이 기능은 전체를 대상으로 빌드를 수행함.
    • 최초의 한번은 반드시 전체 빌드를 해야함.
    • 앞서 살펴본 프로젝트 구성을 보면 게임 로직 뿐만 아니라 엔진과 연관 유틸리티 프로그램들이 같이 있었고 이들도 같이 빌드함.
    • 이는 비효율적이기 때문에 전체가 아닌 특정 부분만 빌드하는 기능이 있음.
  • 부분 빌드
    • 이미지와 같이 특정 폴더만 대상으로 빌드를 진행할 수 있음.
  • 하지만 최근에 컴파일러가 발전함에 따라서 최초 이후의 전체 빌드는 속도가 빨라짐.
    • 변경 사항이 있는 것만 빌드를 하도록 해서 속도가 빨라진 것.
    • 물론 기능이 좋긴하더라도 부분 빌드보다는 여전히 속도가 느림.

자주하는 실수

  1. 보통 빌드를 하면 언리얼 에디터를 같이 켜두고 빌드를 진행함.
    • 언리얼 엔진은 기본적으로 DLL 파일을 계속 가지고 있기 때문에
      만약 빌드 중에 에러가 뜬다면 에디터를 끄고 빌드를 진행하는 것이 좋음.
  2. 인텔리센스 이용
    • 인텔리센스가 제안하는 오류는 대체로 비효율에 관한 오류 메세지임
    • 즉, 실제 컴파일러의 오류 메시지는 아닌 것.
    • 인텔리센스가 제공하는 메시지는 상대적으로 후 순위이니 컴파일러, 링크 에러를 우선 처리할 것.

빌드 후 실행

빌드를 진행하면 Binaries 폴더에 dll 파일이 갱신됨.
이제 빌드가 반영된 에디터를 실행해볼 것인데 보통은 에픽게임즈를 통해서 실행하려 할 것임.

이보다는 좀 다른 방법을 추천.

  • 프로젝트 루트 폴더 우클릭 > Set as Startup Project
  • 언리얼 에디터는 이제 디버그 및 시작 시 루트 폴더를 시작점으로 두고 실행.
  • Debug > Start Debuging F5하면 언리얼 에디터가 실행됨.

추천하는 이유는
플레이 중 문제가 생겼을때 바로 디버깅 모드로 확인할 수 있고
코드를 최신모드로 엔진을 구동해서 더 편리함.

에디터 관련해서 작업을 다했다면 다시 엔진을 닫고
코드를 작업하고 디버그를 반복하는 것.

...
그러면 코드 작업할 때마다 껐다켰다 해야하나?


라이브 코딩

언리얼 측에서 이러한 문제를 해결하기 위해 라이브 코딩 기능을 지원함.
에디터를 끄지 않고 코딩만하고 바로 반영시킬 수 있음.

  • 자체적으로 빌드 > dll 갱신 > 에디터 반영시킴

그러면 이렇게만 하면 되는가?
... 라이브 코딩이 적용되는 상황은 사실 많지 않음.

  • 아주 몇몇 상황에서만 유효하며 대부분의 경우 라이브 코딩하더라도 잘 반영되지 않음.
  • 그래서 대체로 기존 방법들을 사용하게 될 것.

라이브 코딩 제약 사항

다음의 경우들에서 라이브 코딩 사용에 제약이 있음.

  • UCLASS, USTRUCT, UENUM 매크로의 추가·삭제·수정
  • 새로운 C++ 클래스 (.h/.cpp) 생성
  • 엔진 코어 영역 수정
  • 함수 시그니처 (인자, 반환값)클래스 상속 구조 변경

빌드 미반영 상황

코딩 후 빌드도 잘 됐는데 문제가 발생할 수 있음.
재시작도 잘 됐는데 에디터에서 반영이 안되는 문제가 있을 수 있음.

캐시 파일에 문제가 생긴 상황들. -> 빌드가 꼬였다고 말하곤 함.

복구방법 1

  1. 에디터 종료
  2. Visual Studio 종료
  3. 프로젝트 폴더로 이동
  4. Intermediate, DerivedDataCache, Saved
    • 이 세 개의 임시 폴더를 삭제.
    • 빌드 때마다 생성되는 캐시 파일들임.
    • 필요하면 Binaries 도 삭제
  5. .uproject 파일 우클릭 > Generate Visual Studio project files
    • 솔루션 파일(.sln)이 재생성됨.
  6. 언리얼 프로젝트 재실행
    • 보통 이때 rebuild 하겠냐는 안내문이 뜨고 ok 눌러서 빌드를 다시 수행하면 됨.
  • 60~70%는 이 방법으로 해결됨.

복구방법 2. Clean Build

  1. 에디터 종료.
  2. 솔루션 파일로 다시 들어감.
  3. 그전 빌드 산출물들을 정리
    • Build 탭 > Clean Solution
  4. 다시 빌드
    • Build
  • 이 방식까지 90%는 해결될 것.
profile
만성피로 개발자

0개의 댓글