언리얼 엔진 본캠프 6주차-1 언리얼 엔진 C++ : 기본 구조

정재훈·2025년 1월 20일
0

unreal engine

목록 보기
13/45

<언리얼 엔진 환경과 구조>

프로젝트->폴더보기

  • Binaries 폴더 : 프로젝트를 빌드 했을 때 실행파일, .dll 등 컴파일 관련 파일이 저장
  • Config 폴더 : 프로젝트 설정 파일(.ini)들이 저장, 프로젝트의 전반적인 설정을 정의(키 매핑, 렌더링, 에디터 환경 등)
    • DefaultEditor.ini : 에디터 환경 설정 (뷰포트, UI 등)
    • DefaultEngine.ini : 엔진 전반 설정 (렌더링, 네트워킹 등)
    • DefaultGame.ini : 게임플레이 관련 설정 (게임 모드, 플레이어 컨트롤러 클래스 등)
    • DefaultInput.ini : 키보드·마우스·패드 등의 기본 입력 바인딩
  • Content 폴더 : 언리얼 좌측 하단에 콘텐츠 브라우저가 있는데 여기 들어가 있는 Asset(모델, 사운드, 머티리얼 등), 블루프린트들이 저장되어 있는 폴더
  • DerivedDatacache 폴더 : 캐시 데이터(엔진이 리소스를 더 빠르게 로드하기 위한) 저장
  • Intermediate 폴더 : 임시 빌드 파일(빌드 과정에서 생성되는 임시 파일과 컴파일 데이터) 저장
  • Saved 폴더 : log, 자동 저장 파일, 크래시 리포트 등 저장
    • Logs 폴더 : 실행 중 생성된 로그 파일
    • Autosaves 폴더 : 자동 저장된 파일 => 백업 데이터 제공
    • Config 폴더 : 실행 중 수정된 설정 파일
  • Source 폴더 : c++ 소스 코드가 저장됨
  • .vsconfig 파일 : 프로젝트에서 필요한 Visual Studio 설치 구성 요소 및 워크로드를 지정
  • .sln 파일(솔루션 파일) : 언리얼 프로젝트에 대한 C++ 소스 코드와 관련 설정을 포함한 솔루션 구성 정보를 갖는 파일, 언리얼 엔진과 visual studio를 연결
  • .uproject(언리얼 에디터) : 언리얼 프로젝트의 기본 정보를 포함하며, 언리얼 엔진이 이 파일을 통해 프로젝트를 인식하고 실행

솔루션 탐색기

언리얼 엔진에서 visual studio를 키게 되면 많은 폴더들을 볼 수 있는데 왜 그러냐면 언리얼 엔진 전체 코드가 같이 올라오기 때문이다
이렇게 엔진의 전체 소스 코드가 올라오면 내부 소스 코드를 직접 수정해서 커스터마이징할 수 있다는 매우 큰 장점이 생김

위에서 본 프로젝트 폴더의 구조와 visual studio의 솔루션 구조가 다른데 솔루션 구조는 visual studio가 관리와 빌드를 편하게 하기 위해 가상으로 폴더들을 재구성한 것

  • Engine 폴더 : Unreal Engine 자체 소스 코드(Unreal Engine core code)를 저장, 엔진을 커스터마이징하고 싶으면 해당 폴더의 소스코드를 수정
    • ThirdParty 폴더 : 외부 라이브러리를 프로젝트에 포함시키기 위한 파일(.Build.cs)과 이 라이브러리와 관련된 자동화 작업을 정의한 파일(.tsp)이 저장
  • Games 폴더 : 게임 개발을 위한 소스코드들을 저장
    • 프로젝트(루트 폴더)
      • Config : 프로젝트 폴더의 Config 폴더
      • Source : 프로젝트 폴더의 Source 폴더
        • .Build.cs : 빌드 설정이 저장되어 있는 파일, C++ 코드가 언리얼 에디터에서 작동하기 위해 필요한 언리얼 모듈을 추가(Core, CoreUObject, Engine, InputCore 등)
  • Programs 폴더 : 엔진이나 게임프로젝트 이외의 프로그램들(유틸리티, 외부 툴 등)이 저장됨
    • UnrealBuildTool(UBT) : 언리얼 엔진의 빌드 시스템의 핵심.
      프로젝트와 엔진의 코드를 컴파일하고 패키징하며, 각 플랫폼에 맞는 빌드 환경을 설정
    • AutomationTool : 빌드, 테스트, 패키징, 배포 등을 자동화하여 수행하는 도구
    • 게임 서버 프로그램 : 서버는 클라이언트와 별도로 실행되기 때문에 외부 프로그램으로 Programs 폴더에 포함될 수 있다
  • Rules 폴더 : 엔진과 각 게임의 빌드 규칙(.Build.cs, .Target.cs 파일)을 저장
  • Visualizers 폴더 : 디버깅 관련 시각화 도구 제공, 디버깅 중 특정 데이터 구조나 객체를 좀 더 쉽게 이해하기 위한 파일 설정들이 담겨있는 폴더

<언리얼 엔진 빌드 프로세스>

기본적으로 언리얼 엔진은 C++파일의 수정을 반영하지 못함

  • c 파일 수정 -> 빌드(컴파일 + 링크) -> DLL파일 -> 언리얼 에디터에서 이 DLL파일을 가져와야 수정이 반영됨
  • => ★빌드가 굉장히 중요하다

빌드 모드

  • DebugGame : 디버깅을 하기에 최적화된 모드, 디버그에 대한 모든 정보를 가지고 있기 때문에 무겁고 게임 속도가 조금 느려짐, 실행 파일의 형태로 디버깅을 하기 때문에 게임 로직에 대해서만 디버깅을 할 수 있고 엔진에 대해서는 디버깅 할 수 없다
  • DebugGame Editor : 언리얼 에디터에서 게임이 구동되는 디버그 모드
  • Development : 일반적으로 개발할 때 사용하고 디버그 모드보단 가벼워 테스트하기에 좋은 모드
  • Development Editor : 언리얼 에디터에서 게임이 구동되는 개발 모드
  • Shipping : 배포(Release 모드) 단계에서 사용하는 모드, 디버그 정보가 모두 빠져서 게임 구동에 최적화된 모드
editor가 붙어 있는 모드와 안붙어 있는 모드(game 빌드 모드)의 차이를 잘 모르겠음. 언리얼 엔진 문서보니까 안붙어 있는 모드는 '쿠킹'된 콘텐츠가 필요하고 이 '쿠킹'은 코드를 타깃 플랫폼에서 사용 가능한 포맷으로 변환하는 것을 말한다. 나중에 배포하는 작업을 할 때 두 모드의 차이를 추가로 작성

빌드를 할 때 언리얼 에디터를 켜놓고 하면 에러가 발생하는 경우가 있을 수 있음. 언리얼 에디터가 빌드 이후 만들어진 새로운 DLL 파일을 가져오지않고 이전 DLL파일을 그대로 가지고 있어 갱신이 되지 않아 에러로 이어지는 경우가 있음
=> ★ 빌드를 하기 전에 언리얼 에디터 종료하기

Live Coding

위에서 말한 빌드 에러를 피하기 위해 기본적으로

  • 에디터 종료(디버깅 종료, shift+F5) -> C++ 코드 수정 -> 부분 빌드(처음엔 전체 빌드) -> 디버깅 시작(F5) -> 결과 확인

순서로 진행하는 게 일반적이라고 한다

하지만 새로 빌드하고 실행할 때마다 언리얼 에디터를 껐다가 다시 키고 코드 수정하고 다시 껐다가 다시 키고하는 작업이 번거로울 수 있어서 이를 보완하기 위해 만든 기능이 live coding

이 live coding 기능을 키게 되면 언리얼 에디터를 켜놓은 상태에서 visual studio에서 코드를 수정하고 빌드를 하지 않아도 에디터가 변경사항을 인지하고 에디터에서 빌드를 하고 DLL 파일도 갱신을 함

아직 live coding이 가벼운 수정에 대해서만 잘 작동해서 무지성으로 사용하기엔 좀 이르지만 좋은 기능이다

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

빌드 문제 복구

visual studio에서 빌드를 잘하고 에디터를 켰는데 반영이 안되어 있는 경우가 종종 발생(빌드 꼬임 현상). 이 경우 임시 빌드 파일이나 캐시파일에 문제가 생긴 것으로 아래와 같은 형태로 나타남

  • 컴파일 대상 누락: Visual Studio 혹은 엔진이 수정된 소스를 인식 못 해 빌드 대상에서 누락됨
  • DLL 교체 문제: 빌드가 끝났어도 에디터가 새 DLL을 로드하지 못함
  • 캐시 문제: 이전 빌드 결과물이 남아 새 빌드 결과를 덮어씌우지 못함
  • 파일 경로 문제: 헤더 파일 경로나 플러그인 설정이 잘못되어 컴파일에 포함되지 않음

대부분 아래 과정을 통해 해결 가능

  1. 에디터 종료, visual studio 종료
  2. 프로젝트 폴더의 DerivedDatacache(임시 캐시 폴더), Intermediate(임시 빌드 폴더), Saved(log 저장 폴더) + Binaries(실행파일, .dll) 삭제
  3. .uproject 파일 우클릭 -> Generate Visual Studio project files => 솔루션 파일 재생성
  4. .uproject 파일 열기 -> 리빌드하시겠습니까? 팝업(안뜰 수도 있음) -> yes

그래도 안되면

  1. .sln 파일 열기
  2. build 메뉴 -> 솔루션 정리(clean solution)
  3. 전체 빌드







profile
드가자

0개의 댓글