묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
2장 첫번째 강의 관련 질문
클래스 래퍼런스 복사중에 앞에 script코드를 지우는 것이 중요하다고 하셨는데 지우지 않고 동작을 해도 잘 동작이 되는데 지우는 이유가 궁금합니다.또한 복사를한뒤에 nullptr인지 밑의 형식으로 코드를 작성하셨는데 Succeeded 함수를 사용하는것이 더 일반적인지 질문 드리고 싶습니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
FPrimaryAssetId GetPrimaryAssetId() const override 함수
FPrimaryAssetId GetPrimaryAssetId() const override{ return FPrimaryAssetId("CSItemData", GetFName());}이 함수는 앞에 virtual 붙이지 않는 이유가 뭔가요??
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
델타 타임 관련해서 질문드립니다.
AddMoveInput은 가려는 의지를 나타내는 것이고, 실제 이동은 CharacterMovement 내부에서 알아서 처리해주기 때문에 Delta를 곱해주지 않아도 되는 것 맞을까요?AddControllerYawInput은 Delta를 곱해서 값을 넣어줘야 하나요 아니면 그냥 예제 프로젝트 처럼 원하는 회전 방향만 넣어줘도 되는건가요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
const에 대한 질문
안녕하세요. Part1 8강을 듣다가 의문이 생겨서 질문드립니다!FORCEINLINE const FString& GetName() const { return Name; };강의에서 위의 경우 함수 뒤에 const를 사용시 return 되는 Name에 빨간 줄(오류)이 들어와 반환값에도 const를 붙여준 경우인데요. 이러한 이유는 반환 값에 const를 안 붙이게 되면 참조로 반환되기 때문에 값이 변경될 수 있고 이는 함수 뒤에 붙은 const의 의미가 없어지는 것이라고 하셨습니다. 이 부분까지는 이해가 잘되었습니다. FORCEINLINE class UCard* GetCard() const { return Card; }그런데 위의 경우에도 포인터로 반환이 되기 때문에 마찬가지로 값이 변경되는 경우가 발생하지 않나요? 그런데 이 부분에서는 오류로 인식을 안 하는지 궁금합니다. const가 제대로 역할을 하고 있지 않다고 생각이 드는데 교수님의 의견을 여쭤보고 싶습니다. 감사합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
해당 예제의 Multicast RPC에 대한 질문
안녕하세요, 강사님 이번 강좌의 Multicast RPC 코드 부분에서 이해되지 않는 것이 있어 여쭈어보고자 합니다.설명해주신 대로 구현한 결과, 클라이언트 측 화면에서 클라이언트 플레이어가 공격 시 클라이언트 플레이어의 공격 모션이 수행되고, 동시에 서버 측 화면에서도 클라이언트 플레이어의 공격 모션이 수행되고 있습니다. 하지만 코드를 하나하나 따라가보았을 때, 이런 결과가 나오지 않아야 할텐데 라는 생각이 들었습니다. void AABCharacterPlayer::MulticastRPCAttack_Implementation() { AB_LOG(LogABNetwork, Log, TEXT("%s"), TEXT("Begin")); if (HasAuthority()) { bCanAttack = false; OnRep_CanAttack(); FTimerHandle Handle; GetWorld()->GetTimerManager().SetTimer(Handle, FTimerDelegate::CreateLambda([&] { bCanAttack = true; OnRep_CanAttack(); } ), AttackTime, false, -1.0f); } UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance(); AnimInstance->Montage_Play(ComboActionMontage); }이해되지 않는 부분은 MulticastRPCAttack_Implementation()의 애니메이션 몽타주를 재생하는 코드 부분입니다.Multicast RPC에 의해서 해당 함수는 서버와 클라이언트 모두에서 실행된다고 이해했습니다. 그렇다면 서버에서는 MulticastRPCAttack_Implementation() 함수의 if문과 애니메이션 몽타주를 재생하는 코드가 모두 실행되게 될텐데요, 그러면 서버쪽에서 호출된 MulticastRPCAttack_Implementation() 함수이므로 서버 측 화면에서는 서버 플레이어의 AnimInstance를 얻어 애니메이션 몽타주를 재생해야 하는 것 아닌가? 라고 생각했으나 실제로 실행 결과는 아시다시피 서버 측 화면의 클라이언트 플레이어의 애니메이션이 재생됩니다. 어째서 제가 생각한 대로 애니메이션이 수행되지 않는 것일까요??제가 이해되지 않는 이유는 어딘가 잘못 이해하고 있기 때문이라고 생각합니다. 어느 부분을 어떻게 잘못 이해하고 있는 것인지 알고 싶습니다..
-
미해결언리얼 엔진4 입문 (C++ 기반)
c++ 소켓에 장착한 무기 제거
안녕하세요 루키스님 루키스님 영상 보면서 열심히 배우고 있습니다. 다름이 아니고 루키스님 강의 중에서 소켓에 액터를 붙이는 과정은 있어도 캐릭터에게 붙은 별도의 무기액터를 제거하는 영상이 없어 이렇게 남깁니다. TArray<AActor*> AttachedActors; GetAttachedActors(AttachedActors); for (auto* Attached : AttachedActors) { Attached->Destroy(); }일단 제가 서핑하면서 찾은 코드인데 두번째의 getattachedactors같은 함수가 오류가 나고 있습니다 혹시 이에 대한 방법 알고 있으실까요?
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
타일맵, 마우스 이동 클릭
타일맵은 내비 매시 바운드 볼룸이 적용이 안되는데 마우스 클릭 이동 어떻게 해요?
-
해결됨[왕기초] 후디니 게임 이펙트 만들기
warngle 기초 지식 2 랑 warngle 기초지식3 내용이 똑같아요
영상길이도 내용도 똑같은거같은데 오류인지 의도하신건지 궁금합니다
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
함수 실행 순서 관련 질문입니다.
위젯 컴포넌트의 초기화 과정이BeginPlay()InitWidget()NativeConstruct() 순서로 진행된다고 했고 UABCharacterStatComponent의 OnHpChanged 델리게이트의 알람을 받는 함수는 NativeConstruct 과정에서 등록을 합니다.UABCharacterStatComponent에서 BeginPlay()를 통해 SetHp() 함수가 실행 될 때 여기서 OnHpChanged.Broadcast 가 실행이 되는데 BeginPlay가 실행되는 시점에서는 아직 NativeConstruct가 실행되지 않았을텐데 어떻게 아직 할당되지 않은 OnHpChanged 가 실행이 되는 건가요?위 2,3번의 과정들은 Actor의 BeginPlay 후에 실행되고 컴포넌트들의 BeginPlay는 그 후에 실행이 되는걸까요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
파트1 강의에 대한 내용을 전부 알려면 무엇이 필요한가요?
파트1 강의에 대한 내용을 전부 알려면 c++ 의 어떠한 기능을 숙지하고 있어야 하나요?c++ 을 전부 마스터 해야 하나요? 아니면 특정 파트만 배우면 이 내용이 이해가 되나요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
언리얼엔진 물리 매터리얼 리빌드 문제
언리얼 엔진 5.3.2 버전 프로젝트 빈 것으로 생성시 랜드스케이프 물리 매터리얼을 리빌드해야한다고 아래 이미지처럼 화면에 빨간 글씨로 적히는데, 아예 새 프로젝트에서 생기는 에러다보니 어떻게 해결해야할지 모르겠어서 글 남겨요 .. 아래 세가지 시도를 해보았는데 해결이 안되었어요 ..Build > Build LandscapeBuild > Physical material onlyBuild > Build All Levels
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
저장되는 파일이 UTF-16 LE로 인코딩됩니다
문제 및 조건Name변수에는 "이득우"문자열을 저장했습니다Json으로 저장된 파일을 열어보면 UTF-16 LE로 인코딩돼있습니다..txt로 파일을 저장하고 메모장으로 열어도 UTF-16 LE로 인코딩 돼있습니다..cpp파일들은 전부 UTF-8로 확실하게 저장했습니다.코드는 Json으로 읽고 쓰기 부분만 첨부드렸지만 바이너리로 저장한 파일도 불러오면 한글만 깨져있습니다.운영체제는 윈도우11, 언리얼 에디터는 5.3.1버전입니다. LogTemp 첨부LogTemp: 저장할 파일 폴더: ../../../../../../UE5_Inflearn/Part1/UnrealSerialization/Saved LogTemp: 저장할 파일전체 경로: ../../../../../../UE5_Inflearn/Part1/UnrealSerialization/Saved/RawData.bin LogTemp: 변경할 파일전체 경로: E:/UE5_Inflearn/Part1/UnrealSerialization/Saved/RawData.bin LogTemp: [RawData] 이름 이득우 순번 16 LogTemp: [ObjectData] 이름 ↓ンᄡ→モン↓レᄚ 순번 59 LogTemp: [JsonData] 이름 ↓ンᄡ→モン↓レᄚ 순번 59작성한 코드의 Json 읽고 쓰기 부분은 이렇습니다.// Json으로 읽고 쓰기 { FString JsonDataFileName(TEXT("StudentJsonData.json")); FString JsonDataAbsolutePath = FPaths::Combine(*SavedDir, *JsonDataFileName); FPaths::MakeStandardFilename(JsonDataAbsolutePath); // "JsonObjectConverter.h" include 필요 //!중요 [프로젝트 명].build.cs파일에 Json관련 모듈 2개를 추가해줘야함 // 공유 레퍼런스 - Null이 아님을 보장함 TSharedRef<FJsonObject> JsonObjectSrc = MakeShared<FJsonObject>(); // 이렇게하면 StudentSrc 오브젝트의 값이 Json으로 변환이 됨 FJsonObjectConverter::UStructToJsonObject(StudentSrc->GetClass(), StudentSrc, JsonObjectSrc); // 파일로 디스크에 저장 FString JsonOutString; TSharedRef<TJsonWriter<TCHAR>> JsonWriterAr = TJsonWriterFactory<TCHAR>::Create(&JsonOutString); if (FJsonSerializer::Serialize(JsonObjectSrc, JsonWriterAr)) { FFileHelper::SaveStringToFile(JsonOutString, *JsonDataAbsolutePath); } FString JsonInString; FFileHelper::LoadFileToString(JsonInString, *JsonDataAbsolutePath); TSharedRef<TJsonReader<TCHAR>> JsonReaderAr = TJsonReaderFactory<TCHAR>::Create(JsonInString); // 파일에 문제가 있으면 Json이 안만들어질 수 있으므로 Null을 허용하는 TsharedPtr사용 TSharedPtr<FJsonObject> JsonObjectDest; if (FJsonSerializer::Deserialize(JsonReaderAr, JsonObjectDest)) { UStudent* JsonStudentDest = NewObject<UStudent>(); if (FJsonObjectConverter::JsonObjectToUStruct(JsonObjectDest.ToSharedRef(), JsonStudentDest->GetClass(), JsonStudentDest)) { PrintStudentInfo(JsonStudentDest, TEXT("JsonData")); } } } 이 문제가 언리얼 에디터 버전때문일까요?아님 제가 코드를 잘못 작성한걸까요?테스트를 좀 해보니 최종 파일의 인코딩은 상관 없었습니다.FFileHelper::SaveStringToFile(JsonOutString, *JsonDataAbsolutePath, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM);이렇게 강제로 UTF8로 인코딩해도 똑같더라고요그래서 Json을 Serialize할 때 파일 저장 직전 Serialize된 문자열 로그를 찍어봤습니다.TSharedRef<TJsonWriter<TCHAR>> JsonWriterAr = TJsonWriterFactory<TCHAR>::Create(&JsonOutString); if (FJsonSerializer::Serialize(JsonObjectSrc, JsonWriterAr)) { UE_LOG(LogTemp, Log, TEXT("JsonOut: %s"), *JsonOutString); // 이 부분 FFileHelper::SaveStringToFile(JsonOutString, *JsonDataAbsolutePath, FFileHelper::EEncodingOptions::ForceUTF8WithoutBOM); }저기서부터 이미 한글Name이 깨져있네요 아래처럼 출력됐습니다.[2024.03.12-06.33.03:029][ 12]LogTemp: JsonOut: { "order": 59, "name": "↓ンᄡ→モン↓レᄚ" } 일단 더 찾아보겠습니다
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
8강 Enum class의 MetaData 가져올 때, 질문 있습니다.
안녕하세요. 강의 정말 잘 듣고 있습니다. 8강을 수강하다 궁금한 점이 생겨 질문드립니다. UEnum을 가져올 때, 아래와 같이 모든 패키지에서 검색하여 가져오는 방법은 좋지 않은건지 궁금합니다.const UEnum* CardEnumType = FindObject<UEnum>(ANY_PACKAGE, TEXT("ECardType"), true); DisplayName을 가져올때도 아래처럼 GetMetaData() 함수를 사용하는 것은, 일반적이지 않은 방법인지 궁금합니다.FString CardMetaData = CardEnumType->GetMetaData(TEXT("DisplayName"), (int32)CardType - 1); 읽어주셔서 감사합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
스마트 포인터와 FGCObject 클래스 사용에 대한 차이점
여러 포인터 문제의 해결 방법에 대해서 얘기를 해주셨는데언리얼 오브젝트와 C++ 오브젝트의 각각의 경우에 대해 해결 방법을 정리해주신 슬라이드가 있었습니다.거기에서는 C++ 오브젝트는 스마트 포인터를 활용해서 직접 관리한다고 하셨는데, 이후 슬라이드부터는 C++ 오브젝트에서 FGCObject 클래스의 특정 함수 두 개를 구현하면 해당 오브젝트를 가비지 컬렉터가 관리하도록 할 수 있다고 하셨습니다. C++ 오브젝트의 메모리를 관리하는 방법이 두 가지가 있는 것인가요? 이런 경우 어떤 차이가 있나요?아니면 제가 잘못 이해한 것인가요?
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
애님 그래프 Alias 질문
안녕하세요. 애님 그래프의 'StateAlias'정의를 찾아봐도 잘 이해되지 않아 질문 드립니다. 수업 내용대로 애님 그래프를 작성했을때, ToJump, ToLand의 두 StateAlias 노드를 사용하신걸 봤는데,간선이 꼬여 보기에는 불편하지만, StateAlias 노드를 사용하지 않고, 해당 사진처럼 애님 그래프를 작성하여 비슷한 결과를 얻을 수 있었습니다.그러면 StateAlias는 애님 그래프 작성시, 공통되는 정점이나 간선을 묶는 Node라고 이해하면 되는건가요?
-
해결됨Go Hard to Unreal Engine
혹시 노션으로 작성중인 강의 내용이...?
노션 페이지 강의 내용을 따로 공유해주셨나요? 아니면 그냥 보고 그대로 따라가면 되는 것이겠죠?
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
스테이트 머신으로 Locomotion 제작 강의를 따라하는데 블루프린트 런타임 오류가 발생합니다
영상을 따라 한 뒤 마지막에 실행하면 캐릭터가 기본자세로 선체로 움직이고 이 오류들이 뜹니다블루프린트 런타임 오류: "Character Movement 프로퍼티를 읽으려던 중 None에 접근했습니다.". 노드: Set Velocity 그래프: EventGraph 함수: Execute Ubergraph Testanimationbp 블루프린트: testanimationbp블루프린트 런타임 오류: "Character Movement 프로퍼티를 읽으려던 중 None에 접근했습니다.". 노드: Set Velocity 그래프: EventGraph 함수: Execute Ubergraph Testanimationbp 블루프린트: testanimationbp
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
NavigationSystemV1 을 추가하기만 했는데 오작동이 나는데 왜이런걸까요?
https://www.youtube.com/watch?v=JSj9CRH42NE&ab_channel=%EC%A1%B0%EC%A4%80%EC%88%98실습에서 Attak 부분에 네비게이션을 사용해보려고 저렇게 불러오는 코드를 넣기만 하였는데도 링크의 영상처럼 Behavior Tree 가 오작동을 일으킵니다. 딱히 오류나 그런것도 없는데 왜이러는건지 알고싶습니다...
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
로직 스레드가 1개인 경우
강의로 지금까지 알려주신 구조가 로직 스레드가 1개인 경우라고 하셨는데,아래 영상에 7분 경에 나오는 오딘의 스레드 구조랑 크게 보면 똑같다고 보면 될까요?MMORPG의 성능 최적화 사례 공유 '카카오게임즈 - 오딘: 발할라 라이징' (youtube.com)그리고 또 영상에 13분 쯤부터 아키텍처를 설명해주는데 유저들이 게임 서버에 직접 안붙고, 게이트웨이에만 붙어서 플레이한다는데 이러면 서버를 기본적으로 2번 거쳐야되는 거 같은데 이렇게 해도 문제가 없는 걸까요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
Insight.bat 파일 실행 오류
배치 파일이 실행이 안됩니다 프로젝트 폴도 경로랑 공백을 확인해보았는데도 실행 오류가 뜹니다