UE5 60

Unreal Object Handling

언리얼 오브젝트 핸들링이란? UObject 시스템의 기능에 대한 개요로,클래스, 프로퍼티, 함수에 적합한 매크로로 마킹해주면,UClass, UProperty, UFunction 으로 변한다.그러면 언리얼 엔진이 접근할 수 있어,다수의 내부적인 처리 기능을 구현할 수 있다. 자동 프로퍼티 초기화 UObject는 생성자 호출 전 초기화시 자동으로 0으로 채워진다.이러한 초기화 과정은1) 전체 클래스, 2) UProperties(GC시스템에 의해 관리되는 변수들), 3) 네이티브 멤버(C++로 선언된 일반 멤버 변수)모두를 포함한다. 이후 생성자에서 원하는 값으로 초기화할 수 있다. 즉, 이 말은자동 초기화 후에, 생성자에서 커스텀 초기화가 가능하다는 뜻이다.자동 추기화는 앞서 말했듯이UObject가 생성될 ..

UE5 2024.12.19

언리얼 내부 - 모듈 (Modules) 2

Modules - Overview ans Structure 언리얼 엔진의 모듈이란?모듈은 언리얼 엔진소프트웨어 아키텍처의 기본 구조적 빌딩 블록이다.이는 독립적인 코드 단위이며 일반적으로 모듈은 하나의 독립된 코드 묶음으로 처리되어 컴파일러가 이를 별도로 빌드한다. 모듈? 라이브러리와 비슷한 거 아닌가요?모듈과 라이브러리의 둘의 차이점사용자는 각 모듈을 라이브러리로 생각할 수 있지만,다음과 같은 차이점이 있다.모듈은 엔진, 게임 또는 플러그인의 다른 모듈에 따라 달라질 수 있다.추가 모듈에는 타사 라이브러리가 포함될 수 있으며,모듈은 특정 빌드 유형(ex editor only)으로 제한할 수 있다.사용 가능한 플랫폼을 제한하기 위해 화이트리스트 및 블랙리스트에 추가할 수도 있습니다. 모듈의 장점언리얼에서..

UE5 2024.11.25

언리얼 내부 - 모듈 (Modules)

모듈이란?모듈은 언리얼 엔진과 우리가 사용하는모든 것을 구성하는 블록이라고 생각할 수 있다.언리얼 엔진 내부는 기본적으로 모듈이다.그리고 편집기를 확장하려면 자체 모듈과리소스 드롭다운을 만들어야 한다. 이전에 모듈에 대해서 포스팅을 했으니이번 포스팅에서는 간단히프로그래머가 알아야 할 세가지 주요 사항만 언급하겠다. 프로그래머가 알아야 할 세 가지 모듈의 주요 사항1. 모듈은 좋은 코드 분리를 강제하며 이런 특징은 매우 유용하다.언리얼 내부에는 많은 코드가 있지만어떻게든 코드끼리는 서로 통신해 하는 상황에서 모듈은 좋은 구조를 가진다.언리얼 엔진은 상호 종속적인 모듈과 플러그인을 지원한다.프로젝트 모듈은 파일에서 플러그인을 활성화하여 플러그인에 종속될 수 있다.프로젝트 모듈은 엔진 모듈에 종속될 수 있지만..

UE5 2024.11.25

점진적 가비지 컬렉션

점진적 가비지 컬렉션이란?UObject를 위한 개선된 가비지 컬렉션 시스템이다. 언리얼 엔진은 마크 앤 스윕 가비지 컬렉터를 사용하여 UObject 메모리를 관리한다.소프트 리얼 타임( soft-real-time ) 애플리케이션의 경우,가비지 컬렉터에 한 가지 큰 단점이 있다.가비지 컬렉터가 어떤 오브젝트의 메모리를 회수할 수 있는지 결정하는 동안Gameplay hitches가 발생할 수 있다는 것이다. UE에서는 이 프로세스를 도달 가능성 분석이라고 한다.UE5는 항상 가비지 컬렉션의이 단계가 한 프레임 내에 완료되도록 의존해 왔으며,이로 인해 일시적으로 모든 UObject 처리가 중지된다. 도달 가능성 분석에서스캔해야 할 오브젝트가 많을수록 일시정지 시간이 길어지고,그 결과 가시적인 게임플레이 히치를..

UE5 2024.11.23

서버 시작하기

게임 종류 별 언리얼 멀티플레이어 적합성 언리얼은 기본적으로 리얼타임 세션에 적합하다. 서버 연결 세션은 크게 세 가지로 나눌 수 있다. 1.Discovery연결할 사람을 찾고 2.Connection세션에 참여하여 클라이언트에 연결한다. 3. Synchronisation동기화하는 것이다.즉 네트워크 연결을 통해 동일한 화면을 보여주는 것이다. CMD를 이용하여, 본인 IP로 서버 여는 방법 정상 실행 화면

UE5 2024.10.14

Tag를 활용한 Input 값 받아오기

player character class에다음과 같은 함수를 제작해주었다.해당 함수를 제작하기 전에,넣어줄 태그를 미리 다음과 같이 만들어두었다.  이후 플레이어 캐릭터 cpp에서 다음과 같이인력 값에 맞게 제작한 함수를 바인딩 해주었다.  마지막은 gas와 관련되었기 때문에,각 직업에 맞는 gasComponent에똑같은 GASInput함수 작업을 해준다. 현재 제작하고 있는 HeroCharacter는 전사이다.따라서 warrior직업에 맞는 GASComponent에 해당 함수를 제작한 것이다. 이렇게되면 HeroCharacter.cpp에서는 직접적으로 함수를 구현하기보단,해당 GAS를 통해서 구현하여 각 직업에 맞는GASComponent를 불러와 작업을 수행할 수 있다.(코드의 재사용성 多)GetAct..

UE5 2024.10.08

TSubclassOf와 TSoftObjectPtr의 차이점, 그리고 FSoftObjectPaths

비동기 애셋 로딩에 사용되는 TSoftObjectPtr, FSoftObjectPaths  FSoftObjectPaths 와 TSoftObjectPtr는 아티스트 혹은 디자이너가 하드 포인터와 같은UI를 사용해서 특정 애셋에 대한 레퍼런스를 만들되, 항상 로드되지 않도록 사용하기 위한 것이다.(= 좀 더 가볍게 쓰기 위한 것) FSoftObjectPaths는 UObject* 프로퍼티와 비슷하게 쓰는 것이고TSoftObjectPtr은 기본적으로 FSoftObjectPaths 를 감싸는 TWeakObjectPtr입니다.  TSubclassOf와 TSoftObjectPtr의 차이점 TSubclassOf와 TSoftObjectPtr는 즉UE에서 애셋과 클래스를 참조하는 데 사용되는 두 가지 서로 다른 방법입니다...

UE5 2024.09.26

디버깅에 도움되는 메소드 ensure 사용법

c++용법에서 Assert 매크로가 있는데ue5에도 이와 비슷하게 응용할 수 있다. 1. Check(표현식) assert결과가 false면 실행을 중지시킨다. 2. Ensure (표현식) ensure을 사용하여 오류를 디버깅 하는 방법에는 3가지가 있다. 1. ensure( 표현식 )표현식을 검증하여 실패하는 그 지점까지 이르는 콜스택을 생성한다. 2.ensureMsgf(표현식, TEXT("")) 해당 표현식 검증이 실패되면 TEXT에 써져있는 구문으로 오류를 체크할 수 있다. 3. if문을 사용하는 표현식 위 3가지 방식을 코드화하면 다음과 같다.

UE5 2024.09.22

1. GameplayAbilitySystem 플러그인 소개

게임 플레이 시스템은 MOBA 타이틀 또는 RPG에서 찾을 수 있는유형의 능력과 속성을 구축하기 위한 매우 유연한 프레임워크입니다. 게임 속 캐릭터가 사용할 수 있는 액션이나 패시브 능력,이러한 액션으로 인해 다양한 속성이 쌓이거나 닳아 없어질 수 있는 상태 효과인'쿨타운' 타이머 또는 리소스 비용을 구현하여위와 같은 방법으로 액션의 사용을 규제하고, 각 레벨에서 해당 기능의 수준과 효과를 변경할 수 있습니다.또한 입자 또는 음향 효과 등 역시 게임플레이 어빌리티 시스템으로 활성화 할 수 있습니다. 간단히 말해, 이 시스템은 현대 RPG 또는 MOBA 타이틀에 설정된캐릭터의 능력에 대해서 복잡한 게임 내 능력을 설계하고 구현할 때 효율적으로 네트워크화 하는데 도움이 될 수 있도록 만들어진 것입니다. 게임..

UE5/GAS 2024.09.19