⭐ Unreal Engine
[UE] SpawnActor 시점에 에러 발생
[UE] SpawnActor 시점에 에러 발생
2024.07.26SpawnActor 시점에 에러 발생 문제 상황 SpawnActor로 총알을 스폰 시키는 시점에 에러가 발생하며 터졌다. 원인 스폰을 시키는 해당 클래스는 UObject 상속의 클래스 AActor 상속 클래스와 달리 실체가 없다. 그래서 GetWord()를 부를 때 문제가 된다. 해결방안 스폰 시키는 주체가 캐릭터가 되게 하면 문제를 해결할 수 있다. 변경 전 SpawnedProjectile = GetWorld()->SpawnActor(ActionDatas[Idx].ProjectileClass, SocketTransform.GetLocation(), TargetRotation, SpawnParams); 변경 후SpawnedProjectile = OwnerCharacter->GetWorld..
[UE] 몽타주 생성 시 A-pose 하는 문제
[UE] 몽타주 생성 시 A-pose 하는 문제
2024.07.26몽타주 생성 시 A-pose 하는 문제 문제 상황 애니메이션으로 몽타주를 생성 했는데 A-pose로 나오는 문제가 발생하였다. 원인 Animation Montage 생성은 애니메이션의 Additive Settings 설정에 따라 결과가 달라질 수 있다. 아래는 문제가 된 상황이다. 해결방안 Additive Settings 의 설정Additive Anim Type: No additive 로 설정되어 있어야 한다.
[UE] Gameplay Tag: TagName=Illegal name (block index out of range)
[UE] Gameplay Tag: TagName=Illegal name (block index out of range)
2024.07.24GameplayTag를 불러서 사용하는데 문제가 발생했다. TagName=Illegal name (block index out of range) 란 문구가 띄면서 Tag가 제대로 불러오지 않았다. 목차 Gameplay Tag: TagName=Illegal name (block index out of range) 문제 상황 TagName=Illegal name (block index out of range) GameplayTag를 가져와 사용하려는데 위와 같은 문구가 띄면서 문제가 발생한다. 원인 XZGameplayTags.h#pragma once#include "CoreMinimal.h"#include "GameplayTagContainer.h" struct FXZTags{p..
[UE] 언리얼 오브젝트 관리 II - 패키지 (Package)
[UE] 언리얼 오브젝트 관리 II - 패키지 (Package)
2024.07.09강의 목표언리얼 엔진의 애셋과 이를 포장한 패키지의 개념 이해언리얼 에디터에서 볼 수 있도록 애셋을 저장하고 불러들이는 방법의 이해오브젝트 패스를 사용해 다양한 방식으로 애셋을 로딩 하는 방법의 이해 인프런 이득우님의 '언리얼 프로그래밍 Part1 - 언리얼 C++의 이해' 강의를 참고하였습니다. 😎 [이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해] 강의 들으러 가기! 목차 패키지 (Package) 언리얼 엔진의 패키지와 애셋 개념을 이해하고 언리얼 에디터에 애셋 데이터를 저장하고 불러들이기 언리얼 오브젝트 패키지 단일 언리얼 오브젝트가 가진 정보는 저장할 수 있지만, 오브젝트들이 조합되어 있다면?저장된 언리얼 오브젝트 데이터를 효과적으로 찾고 관리하는 방법은?복잡한 계층..
[UE] 언리얼 오브젝트 관리 I - 직렬화 (UE Object Management I - Serialization)
[UE] 언리얼 오브젝트 관리 I - 직렬화 (UE Object Management I - Serialization)
2024.07.03언리얼 엔진이 제공하는 직렬화 기능을 이해하고 언리얼 오브젝트의 데이터를 저장하고 불러들이기언리얼 엔진이 제공하는 직렬화 기능을 이해언리얼 오브젝트를 직렬화하고 이 데이터를 저장하고 불러들이는 방법을 이인프런 이득우님의 '언리얼 프로그래밍 Part1 - 언리얼 C++의 이해' 강의를 참고하였습니다. 😎 [이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해] 강의 들으러 가기! 목차 언리얼 엔진의 직렬화 직렬화(Serialization)란? 오브젝트나 연결된 오브젝트의 묶음(오브젝트 그래프)을 바이트 스트림으로 변경하는 과정복잡한 데이터를 일렬로 세우므로 직렬화라 부름.거꾸로 복구시키는 과정도 포함해서 의미Serialization : 오브젝트 그래프에서 바이트 스트림으로 (Objec..
[UE] 언리얼 엔진의 메모리 관리 (Memory Management in UE)
[UE] 언리얼 엔진의 메모리 관리 (Memory Management in UE)
2024.07.02언리얼 엔진의 메모리 관리 방식을 파악하고, 언리얼 오브젝트의 메모리를 관리하는 예제 실습을 한다.언리얼 엔진의 메모리 관리 시스템의 이해안정적으로 언리얼 오브젝트 포인터를 관리하는 방법의 학습 인프런 이득우님의 '언리얼 프로그래밍 Part1 - 언리얼 C++의 이해' 강의를 참고하였습니다. 😎 [이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해] 강의 들으러 가기! 목차 언리얼 엔진의 자동 메모리 관리 C++ 언어 메모리 관리의 문제점 C++은 low 레벨 언어로, 메모리 주소에 직접 접근하는 포인터를 사용해서 오브젝트를 관리한다.그러다보니 프로그래머가 직접 할당(new), 해지(delete) 짝 맞추기를 해야 한다.이를 잘 지키지 못하는 경우 다양한 문제가 발생할 수 있다...
[UE] 언리얼 구조체와 TMap
[UE] 언리얼 구조체와 TMap
2024.07.01언리얼 구조체의 특징을 이해하고, 다양한 컨테이너 라이브러리에서 구조체를 활용하기언리얼 구조체의 선언과 특징 이해언리얼 대표 컨테이너 라이브러리 TMap의 내부 구조 이해세 컨테이너 라이브러리의 장단점을 파악하고 알맞게 활용하기 인프런 이득우님의 '언리얼 프로그래밍 Part1 - 언리얼 C++의 이해' 강의를 참고하였습니다. 😎 [이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해] 강의 들으러 가기! 목차 언리얼 구조체 USTRUCT USTRUCT(BlueprintType)struct FMyStruct{ GENERATED_BODY() // BP에서 접근 가능 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Test Varia..
[UE] 포트포워딩 시 주의사항
[UE] 포트포워딩 시 주의사항
2024.06.26포트포워딩 후에도 데디케이티드 서버에 접속하지 않는 문제가 발생했다. 문제가 발생했을때, 확인해야 할 사항들이 몇가지 있다. 목차 포트포워딩 시 주의사항 문제 상황 포트포워딩 후에도 데디케이티드 서버에 접속하지 않는 문제가 발생했다. 문제가 발생했을때, 확인해야 할 사항들이 몇가지 있다. 자신의 IP 확인하기 가장 기본적이지만 많이 하는 실수다. 나도 여기서 실수했다.에디터 내에서 테스트하기 위해 127.0.0.1 를 기입해서 사용했다. 자신의 IP를 기입한 후 끝에 :7777 를 붙인다. 자신의 아이피 확인하기https://www.findip.kr/ 아이피 확인 - my ip addressIP 주소를 확인하는 가장 쉽고 빠른 방법 이 사이트(findip.kr)에 접속하는 것이 I..
[UE] 프로젝트 프로파일링 & 최적화
[UE] 프로젝트 프로파일링 & 최적화
2024.06.02아래는 언리얼 엔진 프로젝트에서 발생한 프레임 드롭을 해결한 과정을 기록한 글이다. 목차 문제 발생 프레임 드랍 게임 시작과 동시에 프레임 드랍(Frame Drop)이 발생했다. 프로파일링 및 최적화 하기 라이트 문제 [ 문제 파악하기 ] 에디터에서 Optimization Viewmodes - Light Complexity 를 눌러 라이트 연산량을 시각적으로 체크했다.검은색일수록 연산량이 적고 검은색 해당 화면을 보고 라이트 연산량이 많다는 것을 파악했다. PointLight 라이트의 Attenuation 범위가 너무 커서 겹쳐지는 부분이 많다. (Attenuation이 4000cm로 너무 컸다). 물체가 여러개의 라이트로 겹쳐져서 연산되어 연산량이 너무 많아졌다. 겹치는 ..
[UE] 언리얼 프로파일링 & 최적화
[UE] 언리얼 프로파일링 & 최적화
2024.05.30언리얼 엔진에서 프로파일링 및 최적화는 게임 성능을 향상시키기 위한 필수 과정이다다. 프로파일링은 CPU, GPU, 메모리 사용량 등을 모니터링하고 분석하여 성능 병목 현상을 파악하는 작업이다. 이를 위해 언리얼 엔진이 제공하는 다양한 도구(예: Unreal Insights, Stat Commands, Session Frontend)를 사용하여 프로파일링 및 최적화를 진행하면 된다. 목차 최적화 최적화란? 최적화란 디바이스의 자원을 최대한 활용하는 것을 말한다. 최적화는 프로파일링 결과를 바탕으로 게임의 효율성을 높이는 과정으로, 코드 최적화, 애셋 관리, LOD(Level of Detail) 설정, 메모리 관리 등이 포함된다. [ 디자이스의 자원 ] CPU / GPU Cores, 메모리, ..
[UE] 아이템 드랍 후 바닥에 떨어뜨리기
[UE] 아이템 드랍 후 바닥에 떨어뜨리기
2024.05.26아이템을 주운 후 떨어뜨릴때 자연스럽게 떨어져 바닥에 놓고 싶었다. Collision 설정을 변경하면 되었다. 이 설정값을 자주 잊어버리니 아래에 기록해두겠다. 아이템 드랍 후 바닥에 떨어뜨리기 문제 상황 아이템을 드랍해도 SphereCollision 기준으로 바닥과 충돌되어 바닥에 떠있었다. 해결방안 모든 아이템의 부모가 되는 클래스의 Collsion 설정을 아래와 같이 변경한다. 기본적으로 모두 Ignore에 WorldStaticWorldDynamic위의 두개만 Block 체크한다.
[UE] 언리얼 에디터 버그: BP의 부모 클래스가 계속 바뀌는 버그 ( DefaultEngine.ini 의 CoreRedirect 문제)
[UE] 언리얼 에디터 버그: BP의 부모 클래스가 계속 바뀌는 버그 ( DefaultEngine.ini 의 CoreRedirect 문제)
2024.05.26언리얼 에디터에서 부모를 맞게 할당해도 에디터를 다시 열면 Blueprint의 부모 클래스가 계속 바뀌는 버그가 발생했다. 부모 클래스 할당이 사라지는게 아닌 특정 이름의 클래스의 이름으로 바뀌어서 뭔가 설정이 잘못됬음을 의심했다. 결과적으로 말하면, DefaultEngine.ini의 CoreRedirects 부분에 문제가 있었던 것이었다. BP의 부모 클래스가 계속 바뀌는 버그 문제상황 언리얼 에디터에서 부모를 맞게 할당해도 에디터를 다시 열면 Blueprint의 부모 클래스가 계속 바뀌는 버그가 발생했다. 확인해야 될 사항들 1. DefaultEngine.ini 내의 [CoreRedirects] 섹션프로젝트 설정 파일(DefaultEngine.ini)에서 [CoreRedirects] 섹션..