게임 개발/언리얼 C++

언리얼C++ - 헬로 언리얼!

싹난 감자 2024. 11. 7. 19:22

언리얼 엔진 설치

디버깅을 위한 편집기 기호(디버깅 심볼):

엔진 소스 코드 디버깅에 필요한 기호 심볼들이 저장되어 있음.

엔진 레벨에서 엔진이 어떻게 동작하는지 알기 위해 필요.

개발환경 설정

  • 에디터

VS Code보다는 VS 추천, Visual Assist 플러그인 사용하면 좋음(유료) 이 외에도 Rider 등 사용할 수 있음

VS는 디버깅에 좋음, Rider는 빠름

VS 2022. ‘C++를 사용한 게임 개발’만으로 언리얼로 개발하는데에는 지장이 없음

VS 에러 리스트 표시 옵션 해제

Toolbar | Standard

Modify Selection에서 Solution Configurations 길이 확장


1강. 헬로 언리얼! - 언리얼 엔진에서의 C++ 프로그래밍

언리얼은 보편적인 게임의 사용자 모드 툴과 같이 기본적으로 설계되어 있는 뼈대에 사용자가 만든 콘텐츠를 끼워 넣는 형식으로 개발이 진행됨

“Hello World”라는 문자열을 출력하기 위해서는 출력을 담당할 객체가 있어야하고

이를 위해 적합한 클래스를 설계하고 엔진에 구조에 맞춰 끼워넣어야함.

GameInstance라는 클래스를 상속받아 거기에서 문자열 출력. - Unity의 Monobehaviour라고 생각하면 될듯.

C++를 선택하여 프로젝트를 생성하면 소스 코드를 컴파일해가며 생성하기 때문에 처음 시작할 때 시간이 좀 걸림

1.1 클래스 생성

New C++ Class를 선택해 새로운 클래스 생성

Common Classes에는 주로 게임제작에 관련된 클래스들이 모여있음

All Classes의 GameInstance를 선택한 후에 생성해야 해당 클래스를 상속받은 클래스가 생성됨

클래스를 생성하면 에디터에서 상속받은 클래스를 파악하여 컴파일하고 VS 솔루션 구조도 바꿔줌

Engine 아래에는 엔진의 소스코드가 들어있음

Games 아래 Source에 생성한 프로젝트와 클래스가 들어있음

1.2 언리얼 클래스의 함수 오버라이드

GameInstance에는 Init이라는 함수가 있음

언리얼 엔진은 게임을 시작하기 전에 Init함수를 호출해 초기화해줌

언리얼 엔진에서 구현되어 있는 클래스를 상속받아 가상함수를 오버라이드하는 경우

엔진이 구동하는데 필요한 함수가 실행되지 않아 문제가 발생할 수 있음

한번은 실행을 시켜줘야한다.

원래 C++는 부모 클래스의 이름까지 입력해서 명시적으로 함수를 지정해야하지만

언리얼은 자체적으로 클래스 구조를 파악하여 Super만 적어줘도 부모 클래스를 가리킴

언리얼의 함수를 재구현할 때는 부모클래스의 함수를 한번 실행시켜 준 뒤에 진행하는 것

1.3 문자열(로그) 출력

UE_Log(LogTemp, Log, TEXT("%s), TEXT("Hello Unreal!"));
// TEXT(): 유니코드와 아스키코드를 통일된 문자열로 다루는 함수.

에디터가 꺼져있어도 run하면 에디터 켜짐

1.4 에디터 설정

에디터에서 기본으로 사용하는 GameInstance가 아닌 새로 정의한 MyGameInstance를 사용하도록 변경해야함

GameInstance: 콘텐츠를 담는 어플리케이션의 뼈대

싱글톤 형태로 프로그램 별 하나씩 생성됨

게임을 시작하면 GameInstance가 Init()함수를 실행하면서 초기화하는데

MyGameInstance에서 Super를 사용해 부모 클래스의 모든 로직을 수행했기 때문에 문제 없이 실행됨

에디터가 실행될 때마다 오픈월드 예제 맵이 열림.

그래픽적인 계산이 들어가기 때문에 사용하지 않는다면 꺼두는게 로딩이 빠름

똑같이 Maps & Modes에서 시작맵을 Clear로 변경해 오픈월드 씬을 사용하지 않게 설정

로그는 종류를 골라 필터링할 수 있고 전부 끄면 LogTemp로 설정한 로그를 볼 수 있음

혹은 검색창에 LogTemp를 검색해도 LogTemp로 설정한 로그만 확인가능


언리얼 코드 컴파일

-가장 빠르고 깔끔한 컴파일을 위해

헤더 파일에 변경이 발생하면(설계가 변경된다면) 에디터를 종료하고 VS에서 컴파일

  • 에디터가 켜져있어 라이브 코딩이 활성화되어 있다면 VS에서 빌드가 안됨(에러)
  • 그러나 헤더 파일은 라이브 코딩으로 변경되면 잘못 동작할 수 있음

소스 코드에만 변경이 발생하면 언리얼 에디터의 라이브 코딩으로 컴파일 (Ctrl+Alt+F11)

** VS에서 수동으로 클래스 추가하면 안됨

라이브 코딩 출력 로그(다이얼로그)


확장툴

UE4 Smarter Macro Indenting

매크로를 사용할 때 엔터를 누르면 자동 들여쓰기가 되는데 해당 툴을 사용하면 자동 들여쓰기가 되지 않아 정렬하기 좋아짐

VisualCommander를 다운받아 .vsix 파일를 실행하면 VS와 자동으로 연동되어 설치됨

Github에서 UE4 Smarter Macro Indenting 툴(.vcmd)을 다운 받아 VCmd에서 임포트.

VS 19 이후 버전 호환됨


이득우의 언리얼 프로그래밍 Part1 | 인프런

https://www.inflearn.com/course/%EC%9D%B4%EB%93%9D%EC%9A%B0-%EC%96%B8%EB%A6%AC%EC%96%BC-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-part-1/dashboard

 

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해 강의 | 이득우 - 인프런

이득우 | 대기업 현업자들이 수강하는 언리얼 C++ 프로그래밍 전문 과정입니다. 언리얼 엔진 프로그래머라면 게임 개발전에 반드시 알아야 하는 언리얼 C++ 기초에 대해 알려드립니다., [사진] 언

www.inflearn.com