묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 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 (feat. 취준 멘토링)
혹시 노션으로 작성중인 강의 내용이...?
노션 페이지 강의 내용을 따로 공유해주셨나요? 아니면 그냥 보고 그대로 따라가면 되는 것이겠죠?
-
해결됨언리얼 엔진 5 스파르타 클래스 - 심화편
스테이트 머신으로 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 파일 실행 오류
배치 파일이 실행이 안됩니다 프로젝트 폴도 경로랑 공백을 확인해보았는데도 실행 오류가 뜹니다
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
타일단위이동강의중....
우선 강의 잘보고 있습니다. 공부에 많은 도움이 되고 있습니다. 언어를 일도 모르는데 잘보고 따라 하고 있습니다. 다름이 아니라 강의 전까지는 나이트가 키보드 조작대로 움직였는데.. 타일단위이동강의를 따라하고 나니 움직이지를 않고 제자리에서 방향 과 동작만 이루어지고 있는 상황입니다 아.. 제 실수라는것은 알아요.. 중간 중간 픞레이를 해봤어야 되는데 그걸 안하고 무작정 따라하다 보니 어디서 꼬였는지를 모른다는 겁니다 죄송합니다 이걸 bp_playcontroller에서 문제인거 같은데 도통 모르겠습니다 이렇게 되어 있는데... 뭐가 문제 일까요??이렇게 되어 있습니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Live Coding을 써야하는 이유
Live Coding을 쓰면 헤더파일 수정을 할때 에디터를 끄고 해야해서 불편한 것 같은데 VS에서 빌드하거나 컴파일 버튼을 누르지 않고 Live Coding을 쓰는 이유가 따로 있나요??
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
GetPrimaryAssetIdList 가 에셋을 읽어들이지 못하는 문제에 관한 내용입니다.
GetPrimaryAssetIdList 의 인자가 ABItemData 가 아닌 다른 이름으로 지정하였을때 에셋을 읽어들이지 못합니다.예를 들어서, 위와 같이 이름을 GEItemData 라고 한다면, 전혀 읽어들이지 못하는데 왜 이런 결과가 발생하는 건지 별 삽질을 다 해봐도 모르겠내요... 아 물론 GetPrimaryAssetId 오버라이드 하는것도 전부 변경하였습니다. 오로지 이름이 ABItemData 이어야만 에셋이 로딩이되네요.
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
27:20 쯤 LessonInterface->DoLesson(); 코드에 대해 질문드립니다!
LessonInterface는 이미 Person 오브젝트가 ILessonInterface 클래스로 형변환이 된 것이므로 ILessonInterface의 DoLesson() 함수만 호출이 될 것이라 생각했는데, 형변환 전 기존의 Person 오브젝트가 가지고 있던 DoLesson() 함수도 호출이 같이 되네요. 혹시 이 부분에 대해 설명해 주실 수 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
코딩 표준 In/Out 질문
2장 코딩 표준 도중 잘 이해가 안 가는 부분이 있습니다. 함수 파라미터가 레퍼런스인 경우에 관해서파라미터의 명명 규칙에 In/Out 접두사를 붙이는 부분을 설명해주셨는데요.교수님께서는 함수가 끝난 이후에 인자가 밖으로 나와서 계속 사용될 것인지 여부를 In/Out 접두사로 나타내라고 하셨습니다.근데 교수님께서 설명해주신 거랑 코딩 표준에 적혀 있는 것이랑 조금 내용이 다른 것 같아서 질문합니다.한국어 번역이 이상한 것 같아서 영문으로 보니까 다음과 같습니다.Though not required, we encourage you to prefix function parameter names with "Out" if they are passed by reference, and the function is expected to write to that value. This makes it obvious that the value passed in this argument will be replaced by the function. 함수 파라미터에 레퍼런스로 전달된 값을 함수가 변경할 지 아닐지 여부를 In/Out 접두사로 나타낼 것을 권장한다. 함수에서 파라미터의 내용을 변경하는 경우 Out 접두사를 붙여라.영어에 자신이 없는데, 혹시 이렇게 이해하는 것이 맞을까요? 교수님께서 중요하게 생각하신다고 해서 정확히 하고 넘어가고 싶습니다. ㅎㅎ
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
카메라 관련
안녕하세요. 강의 잘 듣고 있습니다.지금까지 강의해주신 내용대로 잘 따라했는데, Knight를 배치하고 이동시킬 때 아래 사진 2개와 같이 정상적인 카메라 화면과, 이상한 카메라 화면이 반짝거리며 등장하는 현상이 발생하는데, 혹시 이 문제는 왜 생기는걸까요?Play 했을때도 간헐적으로 아래 사진처럼 비정상적인 카메라 화면으로 플레이되곤 합니다.. Knight를 지웠다가 다시 배치하면 정상 동작하긴 하는데, 너무 번거롭네요 ㅜㅜ
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
언리얼 엔진 서버 관련 질문
안녕하세요 강의 잘 들었습니다! 언리얼 iocp서버 강의는 찾을 수 없었는데 이렇게 강의해주셔서 감사합니다ㅠㅠ 강의를 다 듣고 나니 궁금한 것이 생겨 질문합니다!언리얼 엔진으로 멀티게임을 제작할 때, iocp 서버를 제작하여 연결하려면 에픽 런처에서 다운받은 언리얼 엔진이 아닌 언리얼 깃허브에서 릴리즈 버전을 다운받아 개발하여야한다는 말을 들었는데 사실인가요? 데디케이트 서버를 사용하지 않고 iocp 서버를 자체적으로 제작하여 연결하는 것을 기준으로 질문드립니다. 해당 강의를 따라 서버를 제작한다면 에픽 런처에서 다운받은 언리얼 엔진(5.3)으로 iocp서버를 제작하여 멀티게임을 만들 수 있을까요?유용한 강의 영상 감사합니다!
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
언리얼 엔진 파일 생성 컴파일 오류
1강 초반에 vs와 언리얼엔진을 강의 내용대로 설치하고 파일을 생성하는데 컴파일 오류로 언리얼엔진이 생성되지 않습니다. 아래는 컴파일 실패 문구입니다. 환경은 언리얼엔진 현 최신버전인 언리얼5.3.2입니다. 프로젝트를 컴파일할 수 없었습니다. Visual Studio에서 여시겠습니까?Running C:/Program Files/Epic Games/UE_5.3/Engine/Build/BatchFiles/Build.bat Development Win64 -Project="C:/UE5Part1/HelloUnreal/HelloUnreal.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDEUsing bundled DotNet SDK version: 6.0.302Running UnrealBuildTool: dotnet "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" Development Win64 -Project="C:/UE5Part1/HelloUnreal/HelloUnreal.uproject" -TargetType=Editor -Progress -NoEngineChanges -NoHotReloadFromIDELog file: C:\Users\user\AppData\Local\UnrealBuildTool\Log.txtCreating makefile for HelloUnrealEditor (no existing makefile)@progress push 5%Parsing headers for HelloUnrealEditorRunning Internal UnrealHeaderTool C:\UE5Part1\HelloUnreal\HelloUnreal.uproject C:\UE5Part1\HelloUnreal\Intermediate\Build\Win64\HelloUnrealEditor\Development\HelloUnrealEditor.uhtmanifest -WarningsAsErrors -installedTotal of 0 writtenReflection code generated for HelloUnrealEditor in 0.6614988 seconds@progress popBuilding HelloUnrealEditor...Using Visual Studio 2022 14.39.33520 toolchain (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519) and Windows 10.0.22621.0 SDK (C:\Program Files (x86)\Windows Kits\10).Determining max actions to execute in parallel (12 physical cores, 20 logical cores)Executing up to 12 processes, one per physical core------ Building 6 action(s) started ------[1/6] Resource Default.rc2[2/6] Compile [x64] SharedPCH.Engine.Cpp20.cppC:\Program Files\Epic Games\UE_5.3\Engine\Source\predefined C++ types (compiler internal)(420): error C2248: 'FHazardPointerCollection::FHazardRecord::FHazardRecord': private ??('FHazardPointerCollection::FHazardRecord' Ŭ???????? ?????? ????? ?????ϴ?C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Experimental\Containers\HazardPointer.h(86): note: 'FHazardPointerCollection::FHazardRecord::FHazardRecord' ????? ????ʽÿ?C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Experimental\Containers\HazardPointer.h(77): note: 'FHazardPointerCollection::FHazardRecord' ????? ????ʽÿ?C:\Program Files\Epic Games\UE_5.3\Engine\Source\predefined C++ types (compiler internal)(420): note: ???? ??????ȭ ????Ʈ(??? ???????????ȭ ????Ʈ)??C:\Program Files\Epic Games\UE_5.3\Engine\Source\Runtime\Core\Public\Experimental\Containers\HazardPointer.h(133): note: ????Ǵ???????? ??????ȭ 'void __builtin_array_init_helper<FHazardPointerCollection::FHazardRecord>(_T *,size_t) noexcept(<expr>)'?? ??????? Ȯ??????with[_T=FHazardPointerCollection::FHazardRecord]Total time in Parallel executor: 9.94 secondsTotal execution time: 12.41 seconds
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
언리얼 오마카세 강의와 차이점
이번에 진행하신다는 언리얼 오마카세 강의랑 이 강의 포함 기존에 올리신 언리얼5 강의 3개랑 무슨 차이가 있나요?뭐가 더 깊게 알려주는 강의인가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
멘토링 신청 질문
혹시 이번에 올라온 Live 강의 신청이 안되는거 같은데 자리가 꽉차서 그런건가요??