No errors reported

자동 프로젝트 파일 생성

현재 워크스페이스에서 게임과 모듈에 쓸 프로젝트 파일을 자동으로 생성하는 프로세스입니다.

Windows
MacOS
Linux

이 가이드는 저희가 GitHub 에 공개한 소스 코드에서 UE4 를 다운로드하고 빌드한 사용자를 위한 것입니다.

최신 언리얼 엔진 4 코드를 받아도 엔진이나 예제 게임을 컴파일하고 실행할 수 있도록 Visual Studio 나 Xcode 프로젝트 파일이 포함되어 있지 않다는 것을 알게 되실 것입니다. 로드할 프로젝트 파일을 생성하는 스크립트를 실행해 줘야 하는데요:

  • UE4 메인 디렉터리의 GenerateProjectFiles.bat 파일을 실행시킵니다.

    이 스크립트는 어느 폴더에서도 실행시킬 수 있습니다. (원한다면 바탕화면에 바로가기를 만드세요.)

  • 프로젝트 생성기 툴이 모듈과 타깃 빌드 파일을 분석하여 새로운 프로젝트 파일을 생성합니다. 이 작업은 15 초 정도 걸립니다.

이게 끝입니다! Visual Studio 개발자의 경우 이렇게 하면 같은 디렉터리에 UE4.sln 파일이 생깁니다. 이 솔루션 파일을 사용하여 언리얼 엔진 4 게임과 프로그램을 빌드하고 실행시킵니다. (처음 컴파일하는 경우에는 Win64 플랫폼에서 Development 환경설정을 사용하여 빌드할 것을 추천합니다!)

기본적으로 감지된 SDK 에 대해 사용가능한 모든 플랫폼용 빌드가능 프로젝트를 생성하므로, 모바일 플랫폼용으로도 빌드하고 콘솔 디버깅도 가능합니다. (Windows처럼) 현재 실행중인 플랫폼 전용 프로젝트를 생성하려는 경우, GenerateProjectFiles.bat 에 '-CurrentPlatform' 인수를 붙여 실행합니다. 프로젝트 파일이 조금 가벼워 집니다.

중요: 기억하실 것은 소스 컨트롤에서 새로 변경된 코드를 동기화시킨 다음 GenerateProjectFiles.bat 를 재실행해 줘야 합니다. 깜빡하시면 게임 컴파일이나 실행시 문제가 생길 확률이 높습니다.

소스 파일을 추가하거나 제거하는 등 로컬 모듈을 변경했다면 GenerateProjectFiles.bat 파일을 재실행해 줘야 합니다. 프로젝트 파일을 수동 변경하는 것은 바람직하지 않습니다.

UnrealVS 익스텐션 통합

Visual Studio 용 UnrealVS 익스텐션 에는 현재 로드된 솔루션에 대한 프로젝트 파일을 재생성하는 툴바 버튼이 있습니다.

이 기능에 단축키를 지정할 수도 있습니다. Visual Studio 에서 Tools -> Options -> Environment -> Keyboard 를 연 다음 UnrealVS.RefreshProjects 를 검색하세요.

참고로 이 기능은 솔루션을 로드한 이후에만 사용할 수 있습니다 (왜냐면 어느 코트나 브랜치에 대해 프로젝트를 생성해야 할지 알 수 있어야 하기 때문입니다). 생성된 UE4.sln 파일이 없다면, 먼저 GenerateProjectFiles.bat 스크립트를 직접 실행해 줘야 합니다.

명령줄 옵션 (고급)

프로젝트 생성기에는 필요에 따라 생성되는 프로젝트 파일을 맞출 수 있는 명령줄 인수 옵션이 조금 있습니다. 전형적으로 이 옵션은 필수이거나 추천하지도 않습니다.

옵션

설명

-CurrentPlatform

감지된 타깃 플랫폼 전부가 아닌, 현재 데스크톱 플랫폼용 프로젝트만 생성합니다 (Windows 또는 Mac).

-2015

Visual Studio 2015 네이티브 포맷으로 프로젝트를 생성합니다. 이 옵션 사용시 Visual C++ 2015 컴파일러가 사용됩니다.

-2017

VS 2017 원래 포맷으로 프로젝트를 생성합니다. 이 옵션을 설정하면 Visual C++ 2017 컴파일러를 사용합니다.

-ThirdParty

헤더와 써드 파티 라이브러리의 파일을 프로젝트에 추가합니다. PhysX, Steamworks, Bink 등에 대한 심볼과 파일을 Visual Assist 에서 확인하고자 할 때 좋을 수 있습니다. 그러나 프로젝트 파일 로드 시간이 길어질 수 있습니다!

-Game GameName

프로젝트 제너레이터에 다른 모든 프로젝트는 제외하고 지정된 프로젝트 이름에 대한 코드와 콘텐츠만 포함된 프로젝트를 생성하라 이릅니다. 프로젝트 이름도 반드시 지정하도록 하세요. 예를 들어 GenerateProjectFiles.bat ShooterGame.uproject -Game 이라 치면 ShooterGame 용 소스와 타깃만 들어있는 프로젝트가 생성됩니다. 하나의 게임 프로젝트와 함께 Engine 소스 코드와 프로그램을 포함시키려는 경우, -Engine 파라미터를 붙여도 됩니다.

-Engine

-Game 과 함께 사용하면 Engine 코드, 콘텐츠, 프로그램도 생성되는 솔루션에 포함시키도록 합니다. 게임 프로젝트 작업을 하면서 엔진 소스 작업도 많이 할 것 같다 싶은 경우에 좋습니다.

-NoIntelliSense

IDE 에서 자동 완성과 오류 스퀴글에 사용되는 인텔리센스 데이터 파일을 생성하지 않습니다.

-AllLanguages

모든 언어로 된 엔진 문서를 포함합니다. 기본적으로는 영문 프로젝트의 파일만 포함합니다.

-OnlyPublic

지정되면, 엔진 모듈용으로 생성되는 프로젝트에 공용 헤더 파일만이 포함됩니다. 기본적으로 모든 소스 파일은 엔진 모듈에 포함됩니다. 이를 통해 프로젝트 로드 시간은 빨라질 수 있지만, 엔진 코드 탐색이 어려워질 것입니다.

-NoShippingConfigs

생성되는 프로젝트에서 ShippingTest 빌드 구성을 뺍니다. 처리해 줘야 하는 대상 구성 수가 줄어듭니다.

-Platforms=PlatformName

빌드가능 프로젝트를 생성할 기본 대상 플랫폼 세트를 덮어쓰고, 그 대신 지정한 플랫폼에 대한 프로젝트를 생성합니다. 다중 플랫폼 지정은 '+' 기호로 구분합니다. 생성되는 솔루션 파일 이름 뒤에 플랫폼 이름이 접미사로 붙기도 합니다.

자주 묻는 질문 (FAQ)

프로젝트 파일을 업데이트하지 않았는데도 새로 추가된 소스 파일이 컴파일되는 이유는?

언리얼 엔진 4 빌드 시스템에서는 사실 코드를 컴파일하는 데 프로젝트 파일이 필요하지 않습니다. Unreal Build Tool 은 항상 모듈과 타깃 빌드 파일을 사용하여 소스 파일 위치를 파악합니다. 이런 젼챠로 소스 파일을 새로 추가하고 컴파일을 시작하면, 프로젝트 파일을 새로고치지 않았어도 빌드에 새로운 소스 파일이 추가된다는 점, 알아두시면 좋습니다.

실제 파일이 저장되는 곳은?

Visual Studio 프로젝트의 경우, 생성되는 솔루션 파일은 UE4.sln 이며, UE4 루트 디렉터리에 저장됩니다. 그러나 프로젝트 파일은 /UE4/Engine/Intermediate/ProjectFiles/ 디렉터리에 저장됩니다. 여기 저장되는 파일들은 언제고 삭제하고 재생성해도 됩니다만, 명령줄 인수 문자열같은 프로젝트 전용 개인설정을 잃을 수 있습니다.

프로젝트 파일을 생성해서 좋은 점은?

확실히 장단점은 있습니다만, UE4 용 프로젝트 파일을 생성하기로 결정한 중요 이유 몇가지는 이렇습니다:

  • 언리얼 엔진 4 는 다중 플랫폼 작업을 하도록 디자인되어 있으나, 여러 팀들은 언제고 소수의 플랫폼 작업만을 하게 마련입니다. 프로젝트 파일을 생성함으로써 무관한 플랫폼 전용 파일과 빌드 구성을 뺄 수 있습니다.

  • UE4 프로그래밍 방법론상 다수의 서브 모듈을 포함하도록 되어 있기에, 프로그래머가 새로운 모듈을 가급적 쉽게 추가할 수 있도록 하는 것이 매우 중요합니다.

  • 프로젝트 생성기는 고도로 정교한 정의는 생략시키고 UE4 코드 작업시 Visual Studio IntelliSense 에 사용되는 경로는 포함시킵니다.

  • 프로젝트 파일이 자동 생성되면 프로젝트를 새로 구성하기가 훨씬 쉬워집니다.

  • 다중 플랫폼 및 (Visual Studio 와 Xcode 같은) 개발 환경도 지원하고자 했습니다. 프로젝트 파일 여러 세트를 수동 관리하다 보면 오류가 생기거나 지치기 쉽습니다.

  • 프로그래머가 고도의 맞춤형 프로젝트 파일을 생성할 수 있도록 하고자 했습니다. 앞으로 이런 부분이 더욱 중요해 질 것이라 생각합니다.

  • 소스 파일의 디렉터리 구조는 프로젝트 파일 솔루션 계층구조에 자동으로 반영됩니다. 소스 파일을 둘러볼 때 정말 편리한 기능이나 프로젝트를 수동 작성할 때는 유지하기가 어려운 부분이었습니다.

  • 언리얼 엔진 빌드 구성은 매우 복잡하고 수동 유지하기 힘듭니다. 프로젝트 생성기로 인해 이러한 부분이 개발자에게 투명히 공개됩니다.

프로젝트에 있는 기타 파일들의 용도는?

C++ 모듈에 대한 소스 코드와 함께, 생성되는 폴더에 기타 파일들도 자동으로 추가합니다. 이는 그냥 검색할 때 그 파일 위치를 쉽게 찾도록 하기 위함입니다. 생성되는 프로젝트에 추가되는 기타 파일 예제는:

  • 셰이더 소스 코드 (*.usf)

  • 엔진 문서 파일 (*.udn)

  • 프로그램 환경설정 파일 (*.ini)

  • 현지화 파일 (*.int)

  • 프로그램 리소스 파일과 manifest (*.rc, *.manifest)

  • 몇몇 외부 (비생성) 프로젝트 파일 (UnrealBuildTool, Clean 등)

소스 컨트롤에는 체크 인 된 프로젝트 파일이 없는 이유는?

프로젝트 파일에 SCC 병합을 시키자니 지루하고 오류 생기기 딱 좋았습니다. 새로운 시스템에서는 프로젝트 파일을 순수히 중간 파일(intermediate)로 취급하여 이 문제를 완벽히 해결했습니다. 게다가 솔루션 파일은 팀마다 다른 게임 프로젝트를 작업중이라면 달라지게 마련입니다. 저희가 에픽에서 사용하는 프로젝트 파일을 수정없이 다른 팀에서 그대로 사용하기도 좋을 리 만무입니다.

GenerateProjectFiles.bat 가 실제로 하는 일은?

Unreal Build Tool 위주의 단순한 스크립트로, 프로그램 실행파일 빌드 대신 프로젝트 파일을 빌드하는 특수 모드로 실행되는 것입니다. Unreal Build Tool 에 -ProjectFiles 명령줄 옵션을 붙여 실행합니다.

프로젝트 생성기 코드를 변경하고 있는데, 디버깅 방법은?

  • 스타트업 프로젝트를 UnrealBuildTool 로 바꿉니다.

  • 디버깅용 명령줄 파라미터를 이렇게 설정합니다: -ProjectFiles

  • 작업 디렉터리를 다음에 대한 로컬 경로로 설정합니다: [Your UE4 Directory]/Engine/Source/

  • 평소처럼 컴파일하고 디버깅합니다.

유의할 점은 프로젝트 생성기가 Visual Studio 에서 작업중이던 프로젝트 파일을 덮어쓸(clobber) 수 있다는 점입니다. 이런 젼챠로 일반적인 UE4 솔루션 파일을 통해 디버깅을 하기 보단 가끔은 UnrealBuildTool 프로젝트를 Visual Studio 에 직접 로드하는 것이 좋을 수도 있습니다.

동시에 여러 환경설정 빌드를 하는 방법은?

Visual Studio 의 Batch Build 기능을 사용하면 됩니다. Build 메뉴 아래서 찾을 수 있으며, 그저 컴파일하고자 하는 모든 환경설정을 선택한 다음 Build 를 클릭하면 됩니다. 앞으로 이 부분 인터페이스를 더욱 작업하기 쉽도록 만들 궁리를 하고 있습니다.