일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- staticmesh mobility
- Unreal Engine 4
- 13iew
- UE5
- register component
- unreal ai lag
- UE4
- ai 뚝뚝 끊김
- 리디렉션 크래쉬
- Unreal Engine 5
- 랜덤 맵 생성
- UE
- deltaTime
- unity
- Ai
- 언리얼
- LittleNightMare
- UnrealEngine
- redirection crash
- Unreal Engine Error
- unreal engine
- ue4 Crash
- redirector crash
- ai 주춤거림
- unreal engine redirection crash
- ue4 error
- splinemeshcomponent scale
- Random Map Generator
- ai jitter
- 리디렉터 크래쉬
- Today
- Total
목록Unreal Engine (36)
Class GameDev* SheepAdult

AI 가 움직일 경우 TargetPos가 업데이트되면서 이동 시 뚝뚝 끊기는 문제가 발생한다. 이럴 경우 CharacterMovement 컴포넌트의 "Use Acceleration for Paths"를 체크하면 해결된다.

애셋의 이름을 변경하거나 삭제하고 나면 엔진 내부의 레퍼런스를 알맞게 수정하기 위해 해당 기능을 사용하는 경우가 생긴다.이후 엔진을 켜보면 특정 폴더나 애셋에 들어가면 크래쉬 나는 경우가 생기는데, 이는 PreInitializeComponent 같은 애셋이 로드될 때 실행되는 함수에서 null 체크가 제대로 되어 있지 않은 경우 생긴다. 만약 리디렉션 후 크래쉬가 나는 경우에는 오브젝트의 생명주기를 잘 확인한 후 에디터의 뷰어에 영향을 미치는 함수에서 null체크를 확인해 보자

SplineMeshComponent의 크기를 직접적으로 설정하게 되면 StaticMesh가 의도한 위치에 생성되지 않는다. SetStartScale과 SetEndScale을 각각 설정해 줘야 의도한 대로 생성된다.잘못된 예)USplineMeshComponent* SplineMeshComp = NewObject(OwnerCharacter, USplineMeshComponent::StaticClass());SplineMeshComp->SetWorldScale3D(FVector(3));SplineMeshComp->RegisterComponent(); 옳은 예)USplineMeshComponent* SplineMeshComp = NewObject(OwnerCharacter, USplineMeshComponent..
투척 무기 예상 경로를 그려주는 기능을 구현하면서 SplineMeshComponent를 사용할 일이 생겼다. SplineMeshComponent를 런타임에 생성해 줬기 때문에 NewObject 후 RegisterComponent를 호출한 후 여러 세팅을 해줬다. 하지만 무엇이 문제인지 SplineMeshComponent에 등록한 StaticMesh의 Mobility가 Static 하다는 에러를 뱉었다. 20분 정도 삽질한 결과, 해당 컴포넌트의 모든 세팅을 마친 후 RegisterComponent를 해줘야 하는 문제였다. 해당 함수 구현부를 보고 싶어 ActorComponent.cpp의 해당 함수를 보려 했지만 볼 수 없게 되어 있어서 로직은 확인하지 못했다.. 아래처럼 하면 안되고USplineMeshC..

검색해도 정보가 없어 작성하게 되었다.TextBlock에 SetColorAndOpacity() 함수가 있는데 인자를 FSlateColor로 받는다. 하지만 해당 구조체는 Color를 set할 수 가 없어 엔진 코드를 들여다보니 아래와 같이 오버로딩된 생성자가 있었다.위를 참고하여 아래와 같이 생성자를 통해 색상을 넘겨주면 된다.void UDamageIndicatorWidget::SetDamageIndicatorTextColor(FLinearColor ColorToSet){ DamageIndicatorText->SetColorAndOpacity(FSlateColor(ColorToSet));} * 만약 위와 같이 해도 색상이 변하지 않는다면 WidgetAnimation을 통해 색상을 고정하지 않는지 확인해볼..

AI를 서버를 통해 움직일 때 목표 위치까지 움직인 후 어떤 동작을 정의할 때 사용하는 Enum 이 있다. AI를 움직일 때 사용하는 MoveToLocation() 함수의 반환 값인 EPathFollowingRequestResult이다. 참고로 header는 아래와 같다. #include "Navigation/PathFollowingComponent.h"엔진의 헤더 파일에는 아래와 같이 정의 되어 있다.보통 언리얼 엔진 파일들에는 주석이 적혀 있는데 주석이 없다. 자료가 많진 않지만 긁어모은 정보는 아래와 같다.Failed: 경로 탐색이 실패할 경우.AlreadyAtGoal: AI가 이미 목표 지점에 도착했을 경우.RequestSuccessful: 경로 탐색이 성공적으로 시작된 경우. 즉, 움직이기 시작..

커스텀 서버를 붙여 멀티 플레이 게임을 개발하고 있던 도중 문제가 있었다. 스킬이 스폰되어 호출하는 BeginPlay()에서 collision ovelap을 바인딩하고 충돌처리가 되면 서버로 Attack과 관련된 패킷을 전달하는데, 스폰해주는 클래스에서 호출하는 스킬 세팅 함수가 스폰된 액터에 적용되기도 전에 액터 정보가 담긴 충돌처리 패킷을 보내면서 Null 정보를 보내는 문제가 발생했다. 이를 해결하기 위해서는 스킬의 충돌처리를 세팅해 준 후 진행해야 했기에 액터를 생성하고 정보를 세팅한 후 월드에 스폰하는 방식을 사용해야 했다. 마침 언리얼에는 Deferred Spawn기능이 있었다. 함수의 모양은 아래와 같다.AActor* SkillActor = UGameplayStatics::BeginDefer..

Interface 함수를 구현한 후 호출했을 때 아래와 같은 에러가 발생했다.{cpp폴더이름}.gen.cpp 파일에서 발생하는 중단점으로 조사식으로 알아보려고 해도 최적화로 인해 디버깅도 쉽지 않은 상황이었다. 그러다 해당 Interface 함수가 구현이 안되면 발생하는 에러인 것을 알게 되었다. 분명 구현은 했는데, Actor가 아닌 Component에서 구현했기 때문에 헷갈려서 이 문제로 꼬박 이틀을 투자했다..// 이렇게 되어 있던걸IInterface_Damagable* Target = Cast(HitResult.GetActor()->GetComponentByClass(UStatComponentBase::StaticClass()));...// actor가 아닌 component에서 구현해놨기 때문에..

드로우 콜은 현재 프레임에 CPU가 무엇을 그릴지 결정하고 GPU에게 오브젝트를 그리라고 명령하는 것을 말한다. 이때 드로우 콜 발생 조건은 Mesh가 1개, 머티리얼이 1개라면 드로우 콜은 1회 발생한다. Mesh 1개에 여러 머티리얼을 사용하면 그 개수만큼 드로우 콜이 발생한다. 다시 말해, 하나의 메쉬에 여러 머티리얼이 적용되거나 하나의 오브젝트에 여러 메쉬가 붙어 있다면 그만큼 CPU의 성능에 영향을 미치고 병목 현상이 발생할 수 있다. 많은 게임에 존재하는 캐릭터 커스터마이징 기능이 이러한 문제점에 직면할 수 있다. 만약 여러 메시를 하나의 메시에 Attach하여 커스터마이징한 후, 이를 그대로 게임에 적용시킨다면, 특히 이게 많은 캐릭터가 몰리는 MMORPG라면 CPU 병목 현상이 발생할 확률..

먼저 자기장 구현보다 gas를 통한 캐릭터에게 데미지를 주는 것에 대한 글을 작성하려 한다. 먼저, gas환경 하에서 플레이어에게 데미지를 주기 위해서는 데미지를 주는 액터가 UAbilitySystemComponent와 UAttributeSet을 가지고 있어야 한다. UAttributeSet은 체력 혹은 마나 등의 속성 값을 등록하여 사용하기 위한 용도이며, UAbilitySystemComponent는 AttributeSet에 변화를 주기 위한 용도로 사용할 것이다. AttributeSet먼저 AttributeSet 클래스를 하나 만든 후, Health, MaxHealth 속성을 추가했다. 그리고, 멀티플레이 환경이므로 Health를 replicated시켜 동기화할 수 있게 해 주었다.더보기#define..