언리얼 엔진4 입문 (C++ 기반)

Date:     Updated:

카테고리:

Chapter 1 OT

01-1 환경 설정

  • [설정] - [게임 라이브러리 숨기기]를 누르면 게임 개발과 관련없는 내용을 숨길수 있다 ( 02 : 12 )

config1

config2


Chapter 2 언리얼 엔진 기초

02-1 언리얼 엔진 기초

  • 우클릭을 한 상태에서 WASD를 눌러 자유롭게 씬을 이동할 수 있다

F8

02-2 유니티 vs 언리얼

  • 컴포넌트 패턴 : 빈 깡통에서 무언가를 붙인다, 유니티 방식
  • 언리얼에서 각 클래스는 유니티와 달리 태생적으로 신분이 정해져 있다
  • Object, Actor, Pawn, Character은 상속 관계이다
  • 언리얼은 클래스 삭제가 어렵다 ( 11 : 54 참조 )
  • 리플렉션 이라는 기능에 대한 설명, 컴파일러가 읽을 수 있는 주석이라고 이해하자 ( 17 : 55 참조 )
  • Unreal 엔진 Naming Conventions ( 20 : 50 참조 )
  • 아무리 C++이라 해도 쌩포인터로 짜는 시대는 끝났다, 대신 스마트 포인터를 사용한다 ( 24 : 54 참조 )
  • UPROPERTY(VisibleAnywhere)를 설정하면 해당하는 포인터가 가리키는 멤버변수를 모두 수정할 수 있다

02-3 로그와 디버깅

  • UE_LOG()에 카테고리, 로깅 수준, 형식, 인자를 넣을 수 있다
  • 솔루션 구성에 따른 특징 잘 기억 해두자 ( 07 : 00 참조 )
  • DeltaTime에 대한 개념 ( 17 : 48 )

02-4 게임플레이 프레임워크

mode

  • Map 저장하는 방법 ( 04 : 25 )
  • 언리얼 엔진 켤때 Default Map 설정 ( 04 : 50 )
  • 엔진 세팅 값 설정 ( 16 : 35 )

02-5 캐릭터 생성

  • PARAGON 이라는 게임이 망해서 이 게임에 대한 에셋이 무료로 풀려있다
  • USKeletalMeshComponent는 애니메이션을 동작하기 위한 컴포넌트 이다
  • UCharacterMovementComponent는 복잡한 이동을 가능하게 해주는 컴포넌트 이다
  • UCapsuleComponent는 충돌 범위를 표시해주기 위한 컴포넌트 이다

02-6 블루프린트 클래스

  • 큰 프로젝트는 C++로 가야한다
  • 프로토 타이핑 정도의 프로젝트는 블루프린트로 해도 상관없다


Chapter 3 애니메이션

03-1 애니메이션 기초

  • 규모가 작은 게임 같은 경우 Tick() 함수 내에서 애니메이션 처리를 하는게 가능하지만 규모가 커지면 AnimInstance 클래스를 만들어야 한다

03-2 스테이트 머신

  • BeginPlay() 함수 같은곳에 애니메이션을 다 집어 넣으면 언젠가는 로직이 꼬이게 된다
  • 위의 문제를 해결하기 위한 개념이 스테이트 머신이다

03-3 애니메이션 몽타주

  • 언리얼은 기능들이 어마무시하게 많다 때문에 익숙해질때 까지 실습 하는것은 너무 어렵다 그러니까 처음에는 간단하게 무슨 기능들이 있는지 훑어본 후 나중에 어떤 기능이 필요할때 문서를 찾아보자
  • 몽타주는 애니메이션을 편집해서 다른 애니메이션을 만드는 기법이다

03-4 델레게이트

  • 어떠한 행동이 끝났을때 ~을 호출해줘 라고 연동시켜 주는것이 델리게이트 개념

03-5 애니메이션 노티파이

  • 특정 시점이 되었을때 노티파이라고 하는 알람을 주는 기능을 활용해보자

03-6 블렌드 스페이스

  • 애니메이션을 섞어서 자연스럽게 보이게 하는 방법


Chapter 4 충돌

04-1 충돌 기초

  • RPG 게임 만들때 필요한 애니메이션은 몽타주, 블루프린트, 블렌드 스페이스이고 FPS는 에임 오프셋이 필요하다
  • 충돌은 다양한 방식으로 사용된다

04-2 소켓 실습

  • 소켓에 무기 등을 연동할 수 있다

04-3 아이템 줍기

  • 충돌 이벤트를 활용하여 무기를 주워보자

04-4 스텟 매니저

  • GameInstace을 전역 매니저 같은 용도로 활용할 수 있다
  • A가 B를 공격했을때 데미지를 받는쪽에서 피격받는 함수를 만들어 처리하는 것이 깔끔하다

04-5 UI 실습

  • UI 위젯을 만들면 바로 스크립트를 만들어서 1:1로 맵핑되게 하자
  • UI는 리스너 패턴 혹은 싱글톤 패턴으로 구현한다
  • 쌩포인터 사용하지 말고 TWeakObjectPtr 활용하자


Chapter 5 인공지능

05-1 AI Controller

  • AI는 AI 컨트롤러를 만들어서 컴포넌트로 붙인다
  • 언리얼 엔진은 비헤이비어 트리(Behavior Tree)라는 방식으로 AI 기능을 제공한다
  • NavMesh (내비메시)를 사용하여 폰 이 장애물을 피해 경사로를 넘거나 턱을 점프하여 길을 찾을 수 있도록 해줄 수 있다

05-2 Behavior Tree 1

  • 블랙보드에 인공지능이 사용할 데이터를 저장해 놓는다
  • 블랙보드의 데이터를 기반으로 비헤이비어 트리가 행동을 결정한다

05-3 Behavior Tree 2

  • Sequence는 for_each() 같이 동작한다
  • Selector는 if()와 같이 동작한다


Chapter 6 샘플 분석

06-1 샘플 분석 1

  • 탑다운 방식의 게임을 분석해보자
  • 데칼이란 무엇인지 파악하자 ( 03 : 00 )

06-2 샘플 분석 2

  • 1인칭 프로젝트를 분석해보자

06-3 샘플 분석 3

  • 샘플 RPG 게임을 다운받아 Player와 UI를 집중 분석한다


Chapter 7 부록

07-1 언리얼 컨테이너

  • vector, map, unordered_map 같은 표준 라이브러리가 아닌 언리얼 컨테이너를 사용해야 한다
  • vector <-> TArray
  • unordered_map <-> TMap
  • string <-> FString

07-2 UMG 실습

  • 일반적인 UI를 HUD라고 한다


맨 위로 이동하기

댓글남기기