본문 바로가기
카테고리 없음

25.01.20 언리얼 cpp 프로젝트

by alwaysyoung2 2025. 1. 20.
728x90
반응형

언리얼 에디터에서 우측 패널에 있는데 solution explorer 창을 보면 실제 윈도우 탐색이에서 봤던 폴더들과 계층구조가 다를 겁니다. 이는 빌드와 관리를 용이하게 하기 위해서 가상폴더 구조를 생성하기 때문입니다.

이제 이 가상폴더 구조로 어떤 폴더가 무엇을 담는지 알아보겠습니다.

  • Engine 폴더
    • 언리얼 엔진 자체 소스 코드와 리소스가 담긴 곳입니다.
    • 에디터 작동, 엔진 코어 관련 코드가 포함되어 있지만, 초급 단계에서는 거의 수정할 일이 없습니다.
  • Games 폴더 (중요!)
    • 우리가 만든 프로젝트 코드가 모두 들어 있습니다.
    • 내부에는 Source, Config, .uproject 파일 등이 있으며, C++로 작성하는 게임 로직을 이 폴더에서 가장 많이 다루게 됩니다.
  • Programs 폴더
    • 엔진 동작에 필요한 유틸리티 프로그램이나 서버 모듈이 담겨 있습니다.
    • 초급 단계에서는 거의 볼 일이 없습니다.
  • Rules 폴더
    • 엔진과 게임 등 각 모듈의 빌드 규칙을 정의해 놓은 파일들이 모여 있습니다.
    • 모듈 의존성, 플러그인 활성화 여부, 빌드 대상 등을 제어합니다.
  • Visualizers 폴더
    • Visual Studio에서 디버깅 시 언리얼 엔진 관련 자료구조를 보기 좋게 표시하기 위한 설정 파일이 들어 있습니다.

이 중 지금은 game 폴더와 engine 폴더 정도만 정확하게 알고 있으면 됩니다.

game 폴더의 소스폴더에  우리가 구현할 로직들이 적힌 코드가 있습니다.

안을 열어보면 해당 프로젝트의 이름이 보일 것 입니다.

이 폴더가 프로젝트 루트이며 게임 개발에 필요한 모든 리소스와 설정 파일이 이곳에 모여 있습니다

 

이 안에서도 다양한 폴더가 존재합니다.

하나하나씩 확인해보겠습니다.

  • Config 폴더
    • .ini 파일을 통해 에디터와 게임의 초기 상태를 지정합니다.
      • DefaultEditor.ini: 에디터 환경 설정 (뷰포트, UI 등)
      • DefaultEngine.ini: 엔진 전반 설정 (렌더링, 네트워킹 등)
      • DefaultGame.ini: 게임플레이 관련 설정 (게임 모드, 플레이어 컨트롤러 클래스 등)
      • DefaultInput.ini: 키보드·마우스·패드 등의 기본 입력 바인딩
  • Source 폴더
    • 실제 C++ 소스 코드(.cpp, .h)가 들어 있습니다.
    • 최초 프로젝트 생성 시에는 프로젝트명.cpp, 프로젝트명.h 등 최소 파일만 있지만, 새 클래스를 만들수록 점차 늘어납니다.
    • 빌드 설정 관련 주요 파일도 포함됩니다.
      • 프로젝트명.Build.cs: 해당 프로젝트에 필요한 모듈, 라이브러리, 종속성 등을 정의
      • 프로젝트명.Target.cs, 프로젝트명Editor.Target.cs: 각각 게임 실행용, 에디터용 빌드 방식을 정의
  • 프로젝트명.uproject
    • 언리얼 에디터에서 이 파일을 열면 프로젝트를 직접 실행할 수 있습니다.
    • 에디터는 이 파일을 통해 “어떤 콘텐츠와 설정을 불러올지”를 판단합니다.

이제 cpp 빌드 설정에 대해 알아보겠습니다.

 

cpp코드를 수정했다면  이를 컴파일+링크 를 통해 라이브러리(DLL)로 만들어야합니다.

 

이 라이브러리가 언리얼 에디터에서 로드되어 반영됩니다.

 

Visual Studio 상단 툴바에는 빌드 구성 (Configuration)과 플랫폼 (Platform)을 선택하는 드롭다운이 있습니다.

 

  • 왼쪽 - 빌드 구성 (예: DebugGame, Development Editor 등)
  • 오른쪽 - 플랫폼 (Win64)
  • 빌드 구성 (Configuration) 종류
    • DebugGame
      • 게임 로직만 디버그 정보를 포함하고, 엔진은 최적화된 상태로 빌드합니다.
      • 에디터가 아닌 독립 실행 파일 환경에서 디버깅이 가능합니다.
    • DebugGame Editor
      • 에디터 환경에서 게임 로직을 디버그하기 편한 설정입니다.
      • 에디터 플레이 중에 C++ 로직을 추적하거나 브레이크포인트를 걸어볼 수 있습니다.
    • Development
      • 디버그 정보를 최소화해 실행 속도를 높인 개발용 빌드입니다.
      • 독립 실행 파일 환경 테스트·개발 단계에서 주로 쓰입니다.
    • Development Editor
      • 에디터에서도 개발·테스트를 원활히 할 수 있도록 구성된 빌드 모드입니다.
      • Live Coding 사용 시나리오와 궁합이 좋고, 초·중급자들이 자주 사용합니다.
      • 본 강의에서도 기본 모드로 활용합니다.
    • Shipping
      • 최종 사용자에게 배포할 때 사용하는 릴리스 빌드입니다.
      • 디버그 정보를 제거하고, 성능 최적화가 극대화됩니다.
  • 플랫폼 (Platform) 설정
    • 기본적으로 Win64가 선택되어 있으며, 이는 Windows 64비트 환경을 의미합니다.
    • 모바일 (Android, iOS), 콘솔 (PS, Xbox 등)로 빌드하려면 해당 플랫폼용 SDK를 추가로 설치해야 합니다.

 

vs에서 cpp를 빌드하기 위한 방법으로는 전체 솔루션 빌드와 부분빌드가 존재합니다.

 

전체빌드: Ctrl + Shift + B

 

부분빌드:아래 사진처럼 프로젝트 우클릭 후 빌드 선택

cpp로직만 수정했다면 이방법을 쓰는 것이 효율적입니다. 하지만 이미 전체 빌드를 한 상태라면 vs에서 자동적으로 수정된 파일만 찾아서 빌드하기때문에 큰 차이는 존재하진 않습니다.

 

빌드 시작전에는 가급적 언리얼 에디터를 종료하고 빌드하는 것이 안전합니다.

빌드 후, 프로젝트 폴더의 Binaries/Win64 폴더 내에 UnrealEditor-프로젝트명.dll 등이 새로 생성됩니다.

 

 

 

빌드 후에는 Solution Explorer에서 프로젝트를 우클릭하고 set as startup(시작프로그램으로 설정)을 선택하면 디버깅 시 실행될 기본 프로젝트로 설정 되어 언리얼 에디터와 함께 실행하거나 디버깅도구를 사용할 때 편리합니다.

 

그렇다면 수정할때마다 빌드하고 언리얼 에디터를 껐다 켜야할까요?

이를 위해 라이브 코딩이라는 기능이 존재합니다.

  • 기존 방식
    • Shift + F5 (에디터 연결 종료) C++ 코드 수정 → Visual Studio에서 빌드 → F5 (에디터 재연결) → 결과 확인
  • Live Coding 활용 시
    • “(에디터 연결 종료 안한채) C++ 코드 수정 → Live Coding으로 변경 사항만 컴파일 → 에디터에 즉시 로직 반영”
  • Live Coding을 사용하면 에디터를 일일이 끄고 켜는 번거로움이 줄어듭니다.

하지만 라이브코딩을 사용할때에는 제약사항이 존재합니다.

  • 간단한 코드 변경: 함수 내부 로직, 변수 값 변경, 로그 출력 변경 등은 Live Coding으로 즉시 반영됩니다.
  • 적용이 안 되는 경우
    • UCLASS, USTRUCT, UENUM 매크로의 추가·삭제·수정
    • 새로운 C++ 클래스 (.h/.cpp) 생성
    • 엔진 코어 영역 수정
    • **함수 시그니처 (인자, 반환값)**나 클래스 상속 구조 변경
  • 이 경우에는 전통적인 빌드 프로세스 (에디터 종료 → Visual Studio 빌드 → 에디터 재실행)가 필요합니다.

cpp코드를 수정하고 빌드를 완료했음에도 언리얼에서 반영이 안되는 경우가 있다면 이유는 다음과 같습니다.

  • C++ 코드를 수정하고 빌드를 완료 하였음에도 불구하고, 언리얼 에디터에서 반영이 안 되는 경우가 있습니다.
  • 빌드 캐시나 프로젝트 설정 문제, 혹은 파일 경로가 꼬여서 발생할 수 있으며, 아래와 같은 형태로 나타납니다.
    • 컴파일 대상 누락: Visual Studio 혹은 엔진이 수정된 소스를 인식 못 해 빌드 대상에서 누락됨
    • DLL 교체 문제: 빌드가 끝났어도 에디터가 새 DLL을 로드하지 못함
    • 캐시 문제: 이전 빌드 결과물이 남아 새 빌드 결과를 덮어씌우지 못함
    • 파일 경로 문제: 헤더 파일 경로나 플러그인 설정이 잘못되어 컴파일에 포함되지 않음

이를 다음과 같이 해결해보세요

  1. 언리얼 에디터와 Visual Studio 종료
    • 실행 중인 프로세스들이 빌드 파일을 잠글 수 있으므로, 모두 끄고 새로 시작하는 것이 좋습니다.
  2. 프로젝트 폴더에서 Intermediate, DerivedDataCache, Saved 폴더 삭제
    • 이 폴더들은 빌드 캐시임시 데이터를 담고 있습니다.
    • 삭제 후 다시 빌드하면 새로 생성되어, 잘못된 캐시로 인한 오류를 해결할 수 있습니다.
  3. .uproject 파일을 우클릭 → “Generate Visual Studio project files”
    • 솔루션(.sln) 파일과 프로젝트 설정을 재생성하여, 누락되었거나 꼬인 구성을 복구합니다.
  4. Visual Studio에서 클린 빌드
    • 새로 생성된 솔루션을 열고,
      • Build → Clean Solution으로 기존 빌드 산출물을 정리
      • Build → Build Solution으로 프로젝트 재빌드
    • 에러가 난다면 Output 창Error List를 확인해 원인을 파악하고 수정합니다.
  5. 언리얼 에디터 다시 실행
    • 에디터를 다시 실행해 코드 변경 사항이 반영되었는지 확인합니다.
    • 여전히 문제가 계속된다면,
      • Saved/Logs 폴더의 로그를 확인해 구체적인 에러를 찾고,
      • 엔진 버전이나 프로젝트 설정을 점검해 보세요.
728x90
반응형