Unreal Engine, C++

근형·2025년 1월 21일

전 작성글은 언리얼만 사전 작업을 했으니 이번엔 C++ 차래 이다.
우선 전 작성글에서 만들었던 프로젝트 파일이 있는 쪽으로 간다.

프로젝트이름.sln 아이콘을 클릭한다. 그러면 C++편집이 가능한 솔루션 이 열린다. 그리고 솔루션 왼쪽 끝이나 오른쪽에 솔루션 탐색기 라는 것이 있을 것이다.
(만약 없다면, 위에 보기를 클릭 후 솔루션 탐색기를 클릭하면 화면에 나올 것이다.)

솔루션 사진을 보면 솔루션 탐색기에 파일이 5개 정도 있는데 저거는 전 작성글에서 만든 프로젝트 파일 안에 폴더들과 유사한 정보를 가지고 있고 솔루션파일에 있는 파일들과 달리 5개인 이유는 C++작업에 필요한 정보만 보이게 한 상태라고 생각하면 편하다.

폴더를 소개 하자면,

Engine 폴더는 언리얼 엔진 자체 소스 코드와 리소스가 담긴 곳이다.
(에디터 작동 엔진 코어 관련 코드가 포함되어 있지만 지금의 단계에서는 거의 수정할 일이 없다고 한다.)

Games 폴더는 우리가 만든 프로젝트 코드가 모두 들어 있어 매우 중요하다.
(대부분 여기서 다 할 예정이며, 거의 대부분의 만들 코드들은 여기에 만들 것이다.)

Programs 폴더는 엔진 동작에 필요한 유틸리티 프로그램이나 서버 모듈이 들어 있다고 한다.
(이 또한 지금의 단계에서는 볼일이 거의 없을 거라 한다.)

Rules 폴더는 각 모듈의 빌드 규칙을 정의해 놓은 파일들있는 폴더다.
(말 이 없는 것을 보면 지금 단계에서는 볼일이 전여 없는 것 같다.)

Visualizers 폴더는 Visual Studio에서 디버깅 시 언리얼 엔진 관련 자료구조를 보기 좋게 표시하기 위한 설정 파일이다.

지금 현제 ngine과 Games 폴더만 잘 알면 될 꺼 같다.

-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는
언리얼 에디터에서 이 파일을 열면 프로젝트를 직접 실행 할 수 있다.
파일의 설명은 이것으로 끝이고, 다음으로 설명 할 것은 C++에서 저장한 것은 바로 언리얼 에디터에 저장되는 것이 아니기에 저장을 하려면,
파일수정 -> 빌드( 컴파일+ 링크) -> DLL 파일 -> 언리얼 이디터 순으로 해야 적용이 된다.
그래서 빌드가 중요해 지는데 빌드를 성정하는 방법을 알아보자


먼저 솔루션에 위에 ▼이렇게 생긴 것을 누를 수 있는 것들이 있는데
왼쪽 부터 소계하자면 빌드를 선택 할 수 있는 것과 플렛폼을 선택 할 수 있는 것이고, Development Editor를 주로 사용 할 것이고 각 빌드를 성명하면,

DebugGame는 게임 로직만 디버그 정보를 포함하고, 엔진은 최적화된 상태로 빌드 한다 그리고 에디터가 아닌 독립 실행 파일 환경에서 디버깅이 가능 하다.

DebugGame Editor는 에디터 환경에서 게임 로직을 디버그하기 편한 설정이며 에디터 플레이 중에 C++ 로직 추적이 가능 하다

단점으로는 느리다고 한다. 다음으로

Development는 디버그 정보를 최소화해 실행 속도를 높인 개발용 빌드 이고, 독립 실행 파일 환경 테스트 개발 단계에서 주로 쓰인다.

Development Editor는 에디터에서도 개발 테스트를 원활히 할 수 있도록 구성된 빌드 모드이며, Live Coding 사용 시나리오와 궁합이 좋고, 초·중급자들이 자주 사용한다고 해서 주로 사용 할 것이다.

Shipping은 최종 사용자에게 배포할 때 사용하는 릴리스 빌드이고
디버그 정보를 제거하고, 성능 최적화가 극대화된다.(마지막에 확인을 위해 사용하는 모드)

이고 다음으로 옆에 있는 것은
지금은 필요 없지만 설명하자면 자신이 필요한 플랫폼 모드를 선택가능하게 하는것이고 현재는 플랫폼 추가하는 것을 설치하지 않았고 필요하지 않기에 Win64사용하면 되겠다.

이제 빌드에 대해 가보자 일단 얘기 하자면 빌드에는 전체 빌드와 부분 빌드가 있다
전체 빌드는 말 그대로 파일에 있는 것들을 전체적으로 빌드를 확인 하는 용도이고 처음 시작할 때 사용하고 작업중에는 부분 빌들를 사용하는 것이 좋다. (빌드-> 솔루션 빌드)

부분 빌드를 왜 사용 하냐 하면 전체 빌드는 아까 적혀 있듯이 전체들 빌드하기에 작은 수정을 했을 때에도 전체 빌드를 하기에 부분 빌드를 하용 하는 것이 좋다.
( 솔루션 탐색기에서 프로젝트폴더 우클릭 -> 빌드 클릭)

  • 요즘은 컴파일 AI가 좋아서 전체 빌드를 두번 사용하면 부분 빌드랑 엇비슷하게는 작업한다고는 한다 그래도 부분 빌드 보다는 느리다.

  • 빌드 중에는 오류가 뜰 수 있으니 언리얼 에디터를 끄고 작업하는 것을 추천한다.

  • 빌드를 확인 할 때 빌드 전용으로 하면 편하다 그 이유는

위 사진에 있는 빌드+IntelliSense는 최적한 코드를 찾는게 목적으로 작동되기에 맞게 작성해도 경고나 오류를 보낼 수 있기에 그냥 빌드를 선택하는 것이 좋다.

그렇게 빌드를 완료하면 프로젝트 파일 Binaries에 Win64가 추가가 되고,

Win64안에 Dll파일이 있고 Dll파일을 계속 갱신을 하며 작업을 할 것이다.

이렇게 빌드를 하는 방법과 이유를 알게 되었고, 다시 언리얼 프로젝트로 가본다 평소에는 에픽 게임즈나 바탕화면에 있는 언리얼 아이콘을 눌려서 들어가지만 C++작업할 때 바로 갈 수 있는 방법이 있는데, 그 방법으로는
솔루션 탐색기에 있는 프로젝트를 우클릭을 하고
시작 프로젝트로 설정을 클릭한다 그러면 F5를 누르거나
디버그 창에 들어가서 디버깅 시작을 누른다 그러면
해당 프로젝트로 바로 들어가진다.

또 작업을 하다가 프로젝트를 끄고 다시하기 귀찮거나 시간이 걸린다 싶다면 라이브 코딩도 가능하다 라이브 코딩은 싶게 말하자면 실시간으로 코딩을 적용시기는 것이라고 생각한다.

사용 방법은 그냥 코드 작성하고 아래로 숨겨 두거나 다른곳에 잠시 옴겨둔 프로젝트를 꺼내어 오른쪽 구석에 있는 대충 테트리스 처럼 보이는 것을 클릭하면

안에서 해결해준다. 하지만 라이브 코딩은 완벽하지 않기에 가능한 경우와 안되는 경우가 있기에 있다는것만 알면 될 꺼 같다.

빌드중에 코드가 꼬였을 때 사항을 해결하는 방법으로 마무리 할 까 한다.

빌드가 꼬였을 때 먼저 언리얼 에디터(프로젝트)를 끈다
그다음 스튜디오(C++)도 끈다

그리고 프로젝트 파일로 간다 그리고

폴더에서 Intermediate, DerivedDataCache, Saved 폴더 삭제 한다. 이 폴더들은 빌드 캐시 및 임시 데이터를 담고 있고 삭제 후 다시 빌드하면 새로 생성되기에 잘못된 캐시로 인한 오류를 해결 가능하다.(대충 앞에 작성한 후기에 적은 것과 같은 원리다.)

작정하고 해결하고 싶다면 Binaries도 삭제해도된다고 한다.

Intermediate, DerivedDataCache, Saved를 삭제했는데 다시 복구 방법으로는


프로젝트로 바로 가는 아이콘을 우클릭 후 Generate Vlsual Studio Project files를 클릭 하면 사진 처럼 되고 시간이 지나면

다시 생성 된다. 그다음 프로젝트(언리얼 에디터)에 들어간다. 그럼 끝이다. 그런데도 해결이 안된다면,
클린 솔루션 방법으로 해결한다.
솔루션에 들어가서 빌드를 누르고 솔루션 정리(clean solution)을 클릭 한 후 솔루션 빌드를 누르면 대부분 해결된다.

이렇게 하면 언리얼과 C++ 준비가 끝난다.

+후기
솔루션 탐색기 부분에 노랑색으로 되어 추가 구성 요소 설치를 추천하는게 떠서 어떻게 할 까 했는데 그냥 두기로 했다 그 이유는 눈에 거슬리기는 하지만 아직 문제를 주지 않기도 하고 잘 못 설치해서 이것저것 다시 하기 귀찮기에 두기로 했다.

0개의 댓글