👩🏻‍💻기초지식/Unreal 6

[Unreal] FName, FText, FString

스트링 처리 언리얼 엔진에서 String을 처리하는 클래스는 FName, FText, FString이 있습니다. FName FName은 문자열을 고유한 식별자로 사용할 때 주로 사용됩니다. FName에 주어진 문자열이 재사용된다고 하더라도, 데이터 테이블에 한 번만 저장됩니다. 또한 FName 객체의 직접적인 할당 없이도, 매개변수로 FName( ) 객체를 전달함과 동시에 FName 테이블에 로드되어 전달됩니다. 이러한 특성으로 인해 FName은 초경량 시스템이라고 볼 수 있습니다. 내부적으로 문자열을 해시 테이블에 저장하기 때문에 FName은 빠른 비교 연산을 가능하게 합니다. 따라서 빈번한 비교 연산이 필요하거나, 문자열이 고유한 식별자로 사용되는 경우에 효율적입니다. 또한, FName은 대소문자를 ..

[Unreal] 리플리케이션 (Replication) : Actor

정의 리플리케이션은 서버와 클라이언트 사이에서 데이터와 명령을 주고받는 프로세스를 말합니다. 추가적인 설명 리플리케이션의 주역은 액터(Actor)입니다. 서버는 액터 목록을 유지하고, 클라이언트에서 리플리케이트되도록 마킹된 액터들에 대한 근접 추정치를 유지할 수 있도록 클라이언트를 주기적으로 업데이트합니다. 이때 사용되는 액터 업데이트 방식은 '프로퍼티 업데이트'와, 'RPC' 로 나눠집니다. 프로퍼티 업데이트 : 리플리케이션용 프로퍼티 구성하기 1. 액터의 UPROPERTY() 매크로에 Replicated 지정자 포함하기 2. AActor 클래스의 GetLifetimeReplicatedProps 함수 구현하기 > DOREPLIFETIME(AActor, Owner) DOREPLIFETIME은 Unreal..

[Unreal] 언리얼 서버 모델

언리얼에서 사용되는 서버-클라이언트 모델은 리슨 서버와 전용 서버(데디케이티드 서버)가 있습니다. 데디케이티드 서버와 리슨서버 + P2P 데디케이티드 서버는 호스트 역할만을 전담하는 하나의 시스템이 모든 사용자들 즉, 클라이언트들을 수용하는 방식의 게임 서버 모델입니다. 즉, 호스트 컴퓨터가 모든 클라이언트를 담당하는 것입니다. 데디케이티드 서버를 사용하면 365일 24시간 물리적인 서버가 켜져있기 때문에 모든 유저들은 특정 서버에 접속하여 게임을 할 수 있습니다. 반대로, 리슨서버는 사용자의 게임 클라이언트 자체가 서버 호스트가 되는 모델입니다. 즉, 클라이언트 중 한명이 호스트를 담당하여 서버의 역할을 갖는 것입니다. 또한 게임에 참가한 모두가 호스트 역할을 수행하는 P2P(피어 투 피어)라고도 방식..

[Unreal] 가비지 컬렉션 (Garbage Collection)

정의 가비지 컬렉션이란 더이상 참조되지 않거나, 명시적으로 소멸을 예약시킨 UObject를 주기적으로 정리하는 기능이다. 가비지 컬렉션의 필요성 1. 메모리 누수 2. 댕글링 포인터(허상 포인터)의 발생 3. 미정의 동작 이러한 실수를 피할 수 있도록 필요 없어진 객체(가비지)는 알아서 삭제해주는 가비지 컬렉션이 필요하다. 언리얼의 가비지 컬렉션이 적용되는 오브젝트 1. UPROPERTY 레퍼런스를 유지하는 오브젝트 2. TArray, TMap 같은 언리얼 엔진 컨테이너 클래스로 저장된 오브젝트 안에 UObject 인스턴스를 저장하고 있을 때 1️⃣ 참조 카운터 방식의 가비지 컬렉션 C++의 shared_ptr이나, 언리얼의 TSharedPtr같은 스마트 포인터를 이용하여 단순한 가비지 컬렉션을 이용할 ..

[Unreal] 리플렉션(Reflection)

정의 리플렉션은 프로그램이 실행시간에 자기 자신을 조사하는 기능이다. C++는 어떠한 형태의 리플렉션도 지원하지 않기 때문에 기본적으로 컴파일 타임에만 타입 정보가 존재한다. 이때, 언리얼의 리플렉션을 이용하면 컴파일 타임에만 존재하던 타입 정보를 런타임에 들여다볼 수 있게 해준다. 부가설명 언리얼은 자체적으로 C++클래스, 구조체, 함수, 멤버변수, 열거형의 관련된 정보들을 수집, 질의, 조작하는 별도의 리플렉션 시스템이 구축되어 있다. 전형적으로 이러한 리플렉션을 "프로퍼티 시스템"이라고 부른다. (리플렉션은 그래픽 용어이기도 해서 헷갈릴 수 있다) 리플렉션 시스템에 보이도록 했으면 하는 유형이나 Property에 주석을 달아주면 UHT가 해당 프로젝트를 컴파일할 때 해당 정보를 수집하게 된다. 게임..

[Unreal] 서비스 노드란? (BTService)

정의 서비스 노드는 비헤이비어 트리에서 사용되는 노드 중 하나로,백그라운드 작업을 수행하며 AI 정보를 업데이트시키는 작업을 수행합니다. 주로 어떤 조건이나 상태가 만족되는 동안 주기적으로 실행되며, 해당 조건이나 상태를 확인하거나 업데이트 하는 데 사용됩니다. 특징 비헤이비어 트리의 기본 분기가 활성화되면 서비스 노드가 실행되고, 태스크 노드들과 달리 작업 결과를 반환하지 않습니다. 따라서 실행 흐름에 직접적인 영향을 끼치지 않습니다. 용도 일반적으로는 TickNode를 정기적으로 호출하고 수행 결과를 블랙보드에 저장하여 사용합니다. 또는 게임 상태를 모니터링하거나 업데이트 하는 데 사용되어 비헤이비어 트리를 다양하고 유연하게 제어하는 데 도움을 줄 수 있습니다. 언리얼 문서에 적힌 주의사항 Servi..

728x90