Unreal Engine 37

39. UGameInstanceSubsystem

(1) 상속받는 이유 : 게임 전체 실행 동안 유지되는 전역 시스템을 만들기 위한 목적(2) 언리얼 엔진이 자동으로 생성·관리해주는 게임 단위 싱글톤 시스템(3) 게임 세션 기준 (GameInstance 단위)- GameInstance 생성 시 생성- GameInstance 종료 시 파괴(4) 멀티플레이 (각 클라이언트/서버 별로 존재) UGameInstanceSubsystem은 GameInstance가 생성될 때 같이 생성되고, 게임이 종료될 때 같이 사라진다.- 레벨이 바뀌어도 유지됨- 따로 new/delete 관리할 필요 없음

Unreal Engine 2026.04.19

38. UEngineSubsystem

엔진 전체에서 공통적으로 사용하는 기능을 관리하는 클래스입니다. -> 엔진 전체 기준 (프로세스 단위)-> GEngine을 통해 접근UMyEngineSubsystem* Subsystem = GEngine->GetEngineSubsystem(); - 전역 매니저- 싱글톤처럼 동작하는 시스템 ( 게임 실행 동안 딱 1개만 존재 )- 모든 GameInstance, 모든 월드에 공통으로 존재- 엔진 시작 시 생성, 엔진 종료 시까지 유지- 멀티플레이 ( 클라이언트/서버 구분 없이 공유됨 ) 생성 흐름(1) 엔진 시작(2) Subsystem Collection 생성(3) UEngineSubsystem 상속 클래스 탐색(4) 자동 인스턴스 생성(5) Initialize() 호출 엔진이 자동으로 생성/관리하는 전역..

Unreal Engine 2026.04.18

35. TArray

TArray : 오브젝트를 순서대로 담아 효율적으로 관리하는 용도 (1) STL 의 vector와 동작 원리가 유사함.(2) 동적 배열(Dynamic Array) 자료구조- 데이터가 순차적으로 모여있으므로 메모리를 효과적으로 사용할 수 있고 캐시 효율이 높다.- 임의 데이터의 접근이 빠르고, 고속으로 요소를 순회하는 것이 가능하다.(3) 동적 배열의 단점- 맨 끝에 데이터를 추가하는 것은 가볍지만, 중간에 요소를 추가하거나 삭제하는 작업은 비용이 크다. (4) 인덱스 접근 가능 (5) Add(), Emplace(), Append() 는 바로 추가해주면되기 때문에 빠르다. (6) Insert()는 중간에 추가하기 때문에 전체적인 메모리를 변경해주어야 되기 때문에 느리고 비용이 많이 발생한다. (7) Rem..

Unreal Engine 2026.03.29

34. 로그의 종류

(1) 흰색로그 : 문제없이 잘됐습니다. 를 띄워주는것(2) 노란색 : 이거 안좋은데? 고치는게 좋지 않을까? 실행하는데 문제가 생길수 있어.(3) 빨간색 : 언리얼의 의미는 조금 다르다 너 이거 안고치면 난리난다. (4) 언리얼에서는 null을 사용해도 안터질때가 있다. 언리얼이 막아준거야.EX) PlayerController none이었습니다. 블루프린트 쓸때__FUNCTION__, 함수 이름으로 변경__LINE__ 함수 라인으로 변경

Unreal Engine 2026.03.29

33. 블랙보드

블랙보드 -> 변수 보관소이다. 왜 데이터와 인공지능 자체를 분리언리얼의 최적화를 기본적으로 보면 다 똑같습니다.- 뭔가를 빠르게 만들고 싶다 => 모아야 한다.관련된 메모리를 모아야 해요. 일반적인 경우에는 아래와 같다. 인공지능과 전혀 관련이 없는 여러가지 정보들을 가지고 있다.캐쉬 적중률 때문이죠.+ 언리얼은 이것들을 대부분 그래픽 카드에서 돌릴 수 있게 만들려고 한다. 동작 형태

Unreal Engine 2026.03.29

32. 컨트롤러와 몬스터가 분리된 이유

컨트롤러가 쉽게말해서 이동속력을 가진다. 몬스터를 그 이동속력으로 움직여. 일반적인 클라이언트 입장에서는 2번 일하는 느낌? 애초에 몬스터가 이동속력 가지고 몬스터가 tick이나 이런데서 이동시키면 된다. 그런데 컨트롤러 만든 이유는 몬스터를 움직이는게 서버이기 때문이다. 그러면 클라이언트의 몬스터들은 갑자기 쓸데없는 정보를 가진 애들이 되어버린다.

Unreal Engine 2026.03.29

31. 비헤이비어 트리

비헤이비어 트리는 다양한 인공지능을 만들기 위한 시스템입니다.- 언리얼은 이를 지원하기 위해서 핵심적인 2가지 블랙보드와 비헤이비어 트리를 지원합니다.- AI컨트롤러의 핵심적인 역할중 하나가 비헤이비어 트리를 시작!을 시킬수가 있다. 루트노드는 딱히 편집할 거리는 없다.노드는 기본적으로 전부다 C++ 클래스라고 생각하시면 됩니다. - AI가 기동하면 루트노드부터 시작해서 아래로 내려가서 노드들의 함수들을 실행하기 시작합니다.이때 이함수는 어렵게 생각하지 말고 Start와 Tick을 실행시킨다고 보면 됩니다.- 노드의 핵심함수는 다음 2가지 함수이다. ExecuteTask : 조건을 체크하고 날 계속 유지할지 아니면 실패나 성공을 보고할지 결정하고 그걸 위쪽 판단 노드(셀렉터나 시퀸스)에 맡긴다. Tick..

Unreal Engine 2026.03.29

30. AIController

1) 디폴트 폰에는 플레이어 캐릭터는 세팅한다. 이는 캐릭터가 만들어질때 포세스 어떠한 컨트롤러를매칭시킵니다. 거기에서 기본세팅이 딱히 지정해주지 않는다면디폴트 폰 클래스가 스폰되면 그녀석한테는 플레이어 컨트롤러 클래스를 붙여줍니다.그 이외의 캐릭터들이 스폰되면 그 캐릭터들에게는 AIController를 붙여줍니다.언리얼이 자동으로 AI컨트롤러를 붙여준다.이때 네트워크 적인 측면까지 본다면 서버베이스 이기 때문입니다 (2) 컨트롤러 특정 폰을 자동으로 움직건 키로 입력받아서 움직이건 행동하게 만드는 명령을 내리는 역할 (3) 그냥 플레이어 Tick에서 움직이게 만들어도 되죠? 컨트롤러에서 왜 폰을 움직이게 만들었냐?- 기본 적으로 언리얼은 서버베이스 기반 네트워크를 지원한다. 때문입니다.- 언리얼에서는 ..

Unreal Engine 2026.03.29