개발/UE4
-
https://docs.unrealengine.com/4.26/en-US/API/Runtime/CoreUObject/UObject/UObjectBaseUtility/IsA/ Actor 클래스에는 함수 'bool IsA(Other class type)' 을 통해 쉽게 사용할 수 있다. DynamicCast 함수인 Cast를 통해서도 확인할 수 있지만, Cast에선 다이나믹 캐스트에 실패하면 내부적으로 IsA를 호출해 리플렉션 기반으로 베이스 클래스를 탐색해 결과를 도출한다. 따라서, IsA를 그냥 사용해도 크게 다를 것은 없다.
[UE4/Tip] 액터 클래스 타입 비교https://docs.unrealengine.com/4.26/en-US/API/Runtime/CoreUObject/UObject/UObjectBaseUtility/IsA/ Actor 클래스에는 함수 'bool IsA(Other class type)' 을 통해 쉽게 사용할 수 있다. DynamicCast 함수인 Cast를 통해서도 확인할 수 있지만, Cast에선 다이나믹 캐스트에 실패하면 내부적으로 IsA를 호출해 리플렉션 기반으로 베이스 클래스를 탐색해 결과를 도출한다. 따라서, IsA를 그냥 사용해도 크게 다를 것은 없다.
2021.08.25 -
언리얼 엔진의 USaveGame 객체는 1차적으로 본인만 시리얼라이즈 한 후 저장한다. 따라서 안에 들어가는 데이터가 시리얼라이즈 되어있는 데이터가 아니라면, Primitive한 타입들만 값이 보존된다. 이에 FArchive와 FArchiveProxy를 활용해 AActor나 UObject를 직렬화하고 관리하는 방법을 아래 두 사이트 링크를 통해 알 수 있다. https://interstellarechidna.com/post/serializing-actors/ Serializing Monsters for Saving and Loading At this point I have a bunch of data for monsters, resources, and plants. Now I need a way to d..
[UE4] SaveGame 내 AActor 혹은 UObject 저장/불러오기 (스크랩)언리얼 엔진의 USaveGame 객체는 1차적으로 본인만 시리얼라이즈 한 후 저장한다. 따라서 안에 들어가는 데이터가 시리얼라이즈 되어있는 데이터가 아니라면, Primitive한 타입들만 값이 보존된다. 이에 FArchive와 FArchiveProxy를 활용해 AActor나 UObject를 직렬화하고 관리하는 방법을 아래 두 사이트 링크를 통해 알 수 있다. https://interstellarechidna.com/post/serializing-actors/ Serializing Monsters for Saving and Loading At this point I have a bunch of data for monsters, resources, and plants. Now I need a way to d..
2021.08.03 -
엔진 내부에 매크로로 #define GENERATED_USTRUCT_BODY GENERATED_BODY 로 선언되어 있기에 사실상 기능이 같다.
[UE4] GENERATED_BODY vs GENERATED_USTRUCT_BODY엔진 내부에 매크로로 #define GENERATED_USTRUCT_BODY GENERATED_BODY 로 선언되어 있기에 사실상 기능이 같다.
2021.07.28 -
언리얼의 Replicate 변수는 기본적으로 Reliable하게 선언된다. 그럼에도 불구하고, 네트워크 지연과 패킷 손실이 꽤 심한 상태가 되면 정보가 유실되는 문제가 생기고 있다. (4.26 기준) 그래서 생각하기를.. 아무리 Reliable 하다 해도, 내부적으론 3-Way Handshake를 하는게 아니라 2-Way에 곁다리로 다른 처리를 해놓지 않았나 싶다. 그래서 패킷 손실이 비교적 적지만 아무래도 완벽하진 않은게 아닌가... 이 생각은 MovementComponent를 해결하려다 하게 된것인데, 언리얼에서 Teleport는 Local에서만 하기를 지향해 로컬에서 특정 서버 내 저장된 로케이션 값으로 Teleport하기 위해 Server RPC로 Request를 보낸 뒤, 서버에서 Client ..
[UE4] 리플리케이트의 배신언리얼의 Replicate 변수는 기본적으로 Reliable하게 선언된다. 그럼에도 불구하고, 네트워크 지연과 패킷 손실이 꽤 심한 상태가 되면 정보가 유실되는 문제가 생기고 있다. (4.26 기준) 그래서 생각하기를.. 아무리 Reliable 하다 해도, 내부적으론 3-Way Handshake를 하는게 아니라 2-Way에 곁다리로 다른 처리를 해놓지 않았나 싶다. 그래서 패킷 손실이 비교적 적지만 아무래도 완벽하진 않은게 아닌가... 이 생각은 MovementComponent를 해결하려다 하게 된것인데, 언리얼에서 Teleport는 Local에서만 하기를 지향해 로컬에서 특정 서버 내 저장된 로케이션 값으로 Teleport하기 위해 Server RPC로 Request를 보낸 뒤, 서버에서 Client ..
2021.07.28 -
언리얼의 Foliage에는 Custom Navigable Geometry 옵션이 존재한다. 해당 옵션은 아래와 같은 선택지가 존재하며, NO를 선택하는 경우 폴리지가 네비게이션에 영향을 주지 않게 된다.
[UE4] Foliage 의 네비게이션언리얼의 Foliage에는 Custom Navigable Geometry 옵션이 존재한다. 해당 옵션은 아래와 같은 선택지가 존재하며, NO를 선택하는 경우 폴리지가 네비게이션에 영향을 주지 않게 된다.
2021.07.09 -
Streaming Asset Cvar World.cpp 파일의 AddToWorld 에서 사용되는 command variable를 설명한다. s.UseBackgroundLevelStreaming 만약 UseBackgroundLevelStreaming가 true라면 load 중 block이 되지 않는다. s.GLevelStreamingComponentsRegistrationGranularity 커맨드 이름 : s.LevelStreamingComponentsRegistrationGranularity Timelimit이 지나지 않고 로드해야 할 Streaming Asset이 남아있다면 이 정수 값만큼씩 한 프레임마다 로드한다. s.LevelStreamingActorsUpdateTimeLimit Timelimit..
[UE4] Level Streaming cvar 변수 나열 및 분석Streaming Asset Cvar World.cpp 파일의 AddToWorld 에서 사용되는 command variable를 설명한다. s.UseBackgroundLevelStreaming 만약 UseBackgroundLevelStreaming가 true라면 load 중 block이 되지 않는다. s.GLevelStreamingComponentsRegistrationGranularity 커맨드 이름 : s.LevelStreamingComponentsRegistrationGranularity Timelimit이 지나지 않고 로드해야 할 Streaming Asset이 남아있다면 이 정수 값만큼씩 한 프레임마다 로드한다. s.LevelStreamingActorsUpdateTimeLimit Timelimit..
2021.07.09