묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
해당 강의 중반부부터 싱크가 안맞는 것 같아요
거슬리는 정도라 큰 지장은 없는데 혹시 몰라 글 남깁니다
-
해결됨[나 혼자 레벨업] UE5 멀티플레이 게임 제작 Lv. 1 (Listen 서버 입문)
해킹 방어 강의 질문
안녕하세요. 루키스님 강의 잘 듣고 있습니다.해킹 방어 강의 관련하여 2가지 질문드립니다.State 데이터 Set을 클라 측에서 하고 있고 서버에서는 클라 측 데이터를 기반으로 체크를 하는 것으로 보입니다. 서버 측에서 State 데이터 Set을 해야 더 안전한 것이 아닌지 질문드립니다.노티파이 부분도 클라 측에서 확인을 하고 있는데 서버 측에서는 애니메이션 실행은 하지 않지만 실행 중인지 시간을 통해 체크 후 각 노티파이 등을 Multicast 하는 방식이 더 안전한 것이 아닌지 궁금합니다. 아니면 언리얼 프레임워크에서 해당 부분은 자동으로 해주는 부분일까요?항상 강의 잘 듣고 있습니다. 감사합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
TObjectPtr 과 일반 포인터에 대한 용도 질문
안녕하세요 좋은강의 만들어주셔서 감사합니다.8강 16분 40초 부터 있는 TObjectPtr에 대한 질문입니다.TObjectPtr을 쓰는 이유는 해당 생성한 객체를 언리얼에서 더 안전하게 관리하고 GC추적에 용이하기 때문에 쓰는 것으로 이해 했습니다. 그리고 구현부 cpp파일에서는 임시로 사용하고 바로 해제하기 때문에 일반 포인터를 사용하는 것으로도 이해 했습니다. 그래서 궁금한 점 질문드립니다.클래스 내부에서 NewObject 직접 생성한 클래스가 아닌 외부에서 참조한 즉 캐싱용도인 멤버변수로 저장하는 경우에도 TObjectPtr을 쓰는게 맞을까요? 예를들어 GameInstance는 싱글톤 형식이라GetWorld()->GetGameInstance()이런식으로 접근하던데 그렇다는 것은 언리얼 내부 어딘가에서 GameInstance를 생성하고 이를 TObjetPtr 스마트 포인터 형식으로 관리를 하고 있을것이다 생각했습니다.그랬을떄 만약 어떤 클래스에서 매 프레임GetWorld()->GetGameInstance() 호출하는 대신 효율을 위해 한 번만 가져와 멤버 변수에 캐싱 하는 경우를 가정하면이때는 해당 클래스가 생명주기를 직접 책임지는 것도 아니고 GC가 따로 추적할 이유도 없어보이고 단순 캐싱용도로만 저장했기때문에 이런 목적에는 TObjectPtr 대신 일반 포인터를 써도 되지 않을까 생각이 들었습니다.아무래도 해당 클래스에서 생성한 객체가 아니고 단순히 빠르게 접근하기위한 캐싱용도로만 저장했기 때문에 TObjectPtr로 굳이 넣을 필요가 있을까? 의문이 들었습니다. 어떤 방법이 맞을까요?
-
미해결실전! 언리얼 소울라이크 개발: A to Z
FTimeHandler 유실
아래 시나리오가 일어날 수 있을까요? World 변경 → TimeManager 변경 → 이전에 등록한 FTimeHandler 유실
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
돌 장애물과 코인 아이템 충돌 차이
안녕하세요. 8. Endless Runner - 죽음 및 부활 에서는 SM_Rock의 Auto Convex Collision을 켜줘야 충돌이 적용이 됐었는데 코인 아이템의 경우 그런 작업을 해주지 않아도 바로 충돌이 되는 이유가 무엇인가요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
가비지컬렉션 관련 질문있습니다.
ULCUserFacingExperience::CreateHostingRequest 함수를 설명하시면서 코드블럭 내에 NewObject로 선언한 객체가 GC의 대상이 된다고 하셨는데 언리얼의 NewObject함수는 템플릿 내의 자료형을 힙영역에 할당하는 방식이 아닌건가요?물론 코드블럭을 벗어나면 스택에 올라가있는 NewObject로 받은 지역변수 포인터는 사라지겠지만 객체 자체가 스택에 남아있어 GC에게 감시되는 방식인지 궁금합니다.
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Travel관련해서 질문 있습니다.
언리얼에는 다른 URL(서버)로 이동하는 것을 Travel 이라고 부른다. 여기서 UWorld::ServerTravel이란 Server내의 모든 Client들을 해당 URL로 Travel시키는 것이고 APlayerController::ClientTravel은 혼자 다른 URL로 넘어가는 것이라고 한다.라고 메모를 했습니다. 강사님께서 ServerTravel은 모든 클라이언트가 다같이 "Map이동"이라고 말씀하셨고ClientTravel은 "다른데디로 이동" 이라고 말씀하셨는데 그럼 ServerTravel은 서버가 변하지는 않는 것인지ClientTravel로 맵만 A에서 B로 변경했을때도 데디서버의 변경이 일어나는 것인지 궁금합니다.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
[인티저 켜기] 항목을 찾을 수 없습니다.
[9강. 아이템 추가]의 6:56에서 "인티저 켜기" 항목이 없고 검색 시Utilities > Flow Control > Switch에Switch on ENiagara_IntegerConversionSwitch on EFieldIntegerType이렇게 2가지만 검색됩니다. 각각 추가 시 다음과 같이 되어 있는데 강의의 내용과 동일하게 인티저 켜기를 등록하려면 추가로 진행해야 하는 항목이 있을까요? 사용 중인 에디터는 5.5.4 (5.5.4-40574608+++UE5+Release-5.5) 입니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
HealHp 함수
기존에 만들어 놓으셨던 SetHp 함수에 Clamp랑 Broadcast 코드가 그대로 있어서 HealHp 함수가 SetHp 함수를 거쳐가면서 기능하게 만들었는데, 괜찮을까요? 같은 연유로 AddBaseStat 함수도 똑같이 적용했습니다!FORCEINLINE void AddBaseStat(const FABCharacterStat& InAddBaseStat) { SetBaseStat(BaseStat + InAddBaseStat); } FORCEINLINE void HealHp(float InHealAmount) { SetHp(GetCurrentHp() + InHealAmount); }
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
IMC가 먹통이에요
HeroComponent를 라이라 따라 구현했는데 5.5버전이라서 그런지 IMC를 넣어주더라고요?그래서 따라했는데 ShooterCore플러그인 만들고 부터인가 뭐가 꼬였는지 IMC가 null값이 되더군요.분명 BP에서는 잘 넣어줬는데. BreakPoint 찍고 보니까 분명히 이름이 잘 찍히는데 이름 앞에 nullptr이 나와있었습니다.... 문제는 반만 해결했는데요. IMC 복사해서 새로 만들어진 걸로 바꾸니까 잘 인식하더군요. 근데 문제는 에디터 껏다 키면 먹통이라 복붙해야합니다. GameFeatureAction에서 AddInputBinding, AddInputContexetMapping 둘 다 추가하면 해결이 될런지 모르겠네요.Hero캐릭터(라이라 파랗고 빨간 마네킹) 만들때도 Hero컴포넌트에 IMC (강의에선 PMC) 넣었던가요 기억이 안 나네요.아무튼 이런 이슈가 있는데 왜 이런지 모르겠어요.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
ConstructorHelpers::FObjectFinder로 에셋 찾기
ConstructorHelpers::FObjectFinder로 에셋을 찾게 되면 에셋 위치를 나중에 변경할 일이 있을때 Copy Reference 주소 코드를 다 바꿔야 할거 할텐데, 현업에서도 이렇게 쓰이나요? 아니면 따로 관리하는 방법은 없나요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
PawnExtension #3 에서 말한 라이라 공식문서가 뭔가요?
https://dev.epicgames.com/documentation/en-us/unreal-engine/lyra-sample-game-in-unreal-engine이거 말하는 건가요? 저런 설명(11:58부분) 안 보이는데
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
디아블로 방식의 컨트롤에서 타겟 위치로 이동 문제
SpawnSystemAtLocation으로 타겟 위치에 이펙트는 정상 출력됩니다. 마우스를 클릭하고 있으면 정상이동하지만 짧게 클릭하면 SimpleMoveToLocation으로 해당위치까지 이동하지 못하고 찔끔 움직이고 마는 문제가 있습니다.
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
디아블로 방식의 컨트롤 맨마지막 옵션관련 질문
BP_R1Player에서 Use Acceleration for Paths를 체크해도 여전히 화면이 빙글빙글도는데요. 다른 옵션 어떤 것을 확인해야 하나요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
PawnExtensionComponent::SetPawnData에서의 CheckDefaultInitialization
한바퀴 듣고 이제 데디케이트서버 환경에서 돌아가게 라이라 프로젝트도 참고하면서 다시 클론코딩 하고 있는데, 궁금한 점이 있습니다.강의와 라이라 프로젝트에서 차이점이 있어서 고민을 해봤는데 잘 모르겠어요. void ULyraPawnExtensionComponent::SetPawnData(const ULyraPawnData* InPawnData) { check(InPawnData); APawn* Pawn = GetPawnChecked<APawn>(); if (Pawn->GetLocalRole() != ROLE_Authority) { return; } if (PawnData) { UE_LOG(LogLyra, Error, TEXT("Trying to set PawnData [%s] on pawn [%s] that already has valid PawnData [%s]."), *GetNameSafe(InPawnData), *GetNameSafe(Pawn), *GetNameSafe(PawnData)); return; } PawnData = InPawnData; Pawn->ForceNetUpdate(); CheckDefaultInitialization(); }강의랑 차이점은 Pawn->ForceNetUpdate, CheckDefaultInitialization 입니다. 넷 업데이트야 멀티플레이어 환경이라 강의에선 안 했지만 CheckDefaultInitialization는 라이라에서 왜 불러주는 걸까요? 이거 여기서 명시적으로 불러줘야 초기화 관리가 되는 걸까요?BeginPlay에서도 부르고 SetupPlayerInputComponent, OnActorInitStateChanged에서도 어차피 부르고 있는데.그냥 혹시 뭔 일이 있어서 초기화가 안 됐을 수도 있으니까 추가한 그런 느낌일까요?
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
LockOn상태에서의 구르기
안녕하세요! 올려주신 강의 잘 듣고 있습니다!작업을 하다보니 궁금한부분이 생겨서요..지금은 캐릭터가 바라보는 방향으로 구르고 있는데 LockOn을 한 상태에서는 S키를 눌러도 적을 바라보면서 뒤로가져서 뒤쪽방향으로 구르지는 못하고 있는 문제를 만났습니다.혹시 이 부분은 어떤 방법으로 해결하면 좋을까요? 그리고 개인적으로 궁금한 부분이 있는데 구르기가 끝나고 원하는 방향으로 구르고 싶을때 캐릭터의 회전이 늦어지면 회전을 하다가 원하는 방향으로 안나가는데 이 부분도 어떤 방법으로 해결해야하는지 여쭤보고싶습니다..!
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
ASC 에서 AttributeSet 함수에 대한 mutable 반환 함수가 없는 이유
안녕하세요. UABGA_AttackHitCheck::OnTraceResultCallback 구현에서 질문 드릴 게 있습니다. UABCharacterAttributeSet* TargetAttribute = const_cast<UABCharacterAttributeSet*>(TargetASC->GetSet<UABCharacterAttributeSet>()); 게임 로직 만들면서 AttributeSet 의 값을 변경해야 할 경우가 많을 것 같은데요. ASC 에서 변경가능한 AttributeSet 의 참조나 mutable 포인터를 반환하는 함수를 구현하지 않은 이유가 있나요?const_cast 로 억지로 const 를 벗겨내는 게 자연스럽게 느껴지진 않아서요. 다른 곳에서 값을 변경하게 코드를 작성해야 하는 디자인 측면이 있는 건지, 경험적인 정책 측면이 있는 건지 궁금해서 질문 드렸습니다.
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
컨트롤릭관련질문
안녕하세요 강사님!강의에서 이해가 되지 않는 부분과 구현 관련해서 2개의 질문이 있습니다.강의에서 이해되지 않는 부분은 강의 14초경 특정 물체를 바라보는데 고개가 뒤집히는 현상이 있잖아요. 그냥 바로 해당 물체의 위치를 건네줬을 때는 고개가 뒤집히는 문제가 발생했고블루프린트 내에 구체를 만들어 해당 구체의 위치를 뽑아서 해당 위치를 바라보게 세팅해서 그 문제를 해결했는데이게 뭔 차이인지를 모르겠습니다. 컨트롤릭에 해당 위치 벡터를 전달할 때 둘 다 월드상에 있는 좌표로 변환되어 전달하므로 똑같은 거 아닌가요?-------------구현 관련 질문입니다. 구현하고자 한 기능은 캐릭터가 조준을 하고 있지 않을 때, 카메라가 바라보는 방향으로 바라보게 만들면서 특정 각도를 넘어간다면 그냥 정면을 바라보게끔 하는 것입니다. 여기서 캐릭터가 스폰된 직후의 정면 벡터에서 왼쪽으로 움직이고 그 방향을 바라본다음 마우스를 돌려 에임오프셋을 조절하는 경우는 정상적으로 잘 작동하는데나머지 다른 방향에서 바라보는 경우에는 얼굴이 뒤집혀서 작동을합니다1. 정상2. 비정상 컨트롤릭에 있는 스켈리톤와 실제 엑터가 바라보는 방향과 같다면 정상적으로 작동하는 것 같다고 추측하고 있습니다. 이런 상황에서 좀 골머리를 앓고 있는데 어떻게 해결해야하는걸까요? 시간을 너무 많이 쓰는것같아 질문드립니다. ㅠ-------구글드라이브 링크https://drive.google.com/file/d/1tZqaSfJt1aqpmpp4Yp2Vl6iMDFvqQ3zR/view?usp=sharing
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
쿼터뷰 캐릭터 회전, 솔더뷰 움직임 문제
쿼터뷰, 솔더뷰 간 전환은 잘되구요.쿼터뷰일 때는 움직이는건 잘되지만 캐릭터가 움직이는 방향으로 회전하지 않고솔더뷰일 때는 움직이지는 못하지만 카메라를 돌리는건 잘되는 상황입니다.올려주신 자료 다운로드 해서 실행을 해봤는데 올려주신 프로젝트는 잘 실행되더라구요.에러가 뜨는 것도 아니라 강의와 올려주신 프로젝트를 여러번 돌려보며 소스코드, 데이터 에셋, 캐릭터 블루프린트의 설정들, 인풋액션, 인풋매핑컨텍스트 모두 비교 확인해봤지만 달라지는 건 없었습니다.언리얼 캐시 제거 후 다시 실행도 해봤지만 그대로 인데 도대체 뭐가 문제일까요?
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
미니맵 제작
현재 미니맵을 구현하고 있습니다. UIExtension을 사용해서 구현하는 것이 적절해 보이는데 문제는 미니맵 기능을 제공하는지의 여부는 Experience에 달려있고 미니맵들 중 어떤 것을 사용할지는 레벨에 종속되어 있습니다. 그렇다면 이 둘을 가지고 있는 UserFacingExperienceDefinition을 확장하는 것이 좋을까요?라이라의 기본 골자를 변형시켜도 될지 최대한 유지하며 살만 붙일지 선택하기가 어렵네요