묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
ProtoBuf UE 연동 문제
Spawn #2 따라하고 실행해보는데 메모리 충돌로 인해 언리얼 크래쉬가 발생하네요혼자 열심히 시도해 본 결과 UE FMemeory와 ProtoBuf 소멸자에서 delete 되는 부분에서 UE delete 오버라이드 문제인 것 까진 알게 되었으나 어떻게 해결해야 할 지 모르겠어서 질문 드립니다UE 5.6 버전이고, ProtoBuf는 C++ 5.29.5(29.5) 버전입니다vcpkg를 사용해서 라이브러리 다운 받았고 /MD 동적 라이브러리로 UE 프로젝트에 포함시켰습니다 (dll로 인해서 new/delete 오버라이드로 인한 메모리 충돌 문제가 더 쉽게 발생하여 /MT로 포함하는 것이 나을 수도 있겠다고 LLM(gpt, grok) 등이 말한 내용을 적용하고자 하였으나 빌드를 실패하여 그 부분은 진행하지 못하였습니다)다음 이미지는 실행했을 때 크래쉬가 발생하는 부분과 로그 일부 입니다LoginId:468bde9140a0ef5bd78746b7d5b86a2cEpicAccountId:e6607fa7037e41448797c486f54e5315Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000023d9d00116fUnrealEditor_CoreUnrealEditor_CoreUnrealEditor_S1!operator delete() [C:\Program Files\Epic Games\UE_5.6\Engine\Source\Runtime\Core\Public\HAL\PerModuleInline.inl:9]UnrealEditor_S1!Protocol::PlayerInfo::`scalar deleting destructor'()libprotobuf!google::protobuf::internal::RepeatedPtrFieldBase::DestroyProtos() [C:\Users\yudle\vcpkg\buildtrees\protobuf\src\v5.29.5-5bafd96eab.clean\src\google\protobuf\repeated_ptr_field.cc:90]UnrealEditor_S1!Protocol::S_LOGIN::~S_LOGIN() [D:\GitHub\S1\Source\S1\Network\Protocol.pb.cc:586]UnrealEditor_S1!std::_Func_impl_no_allocServerPacketHandler::Init'::2'::<lambda_1>,bool,TSharedPtr<PacketSession,1> &,unsigned char *,int>::_Do_call() [C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.38.33130\INCLUDE\functional:810]UnrealEditor_S1!PacketSession::HandleRecvPackets() [D:\GitHub\S1\Source\S1\Network\PacketSession.cpp:37]UnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_CoreUObjectUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_CoreUnrealEditor_CoreUnrealEditor_CoreUnrealEditor_CoreUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_EngineUnrealEditor_UnrealEdUnrealEditor_UnrealEdUnrealEditorUnrealEditorUnrealEditorUnrealEditorUnrealEditorUnrealEditorkernel32ntdllS_LOGIN 패킷의 소멸자에서 오염된 메모리 접근 문제로 크래시가 발생한 것으로 보입니다
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
Unreal 연동 후 Visual Studio 빌드오류 제발 살려주십쇼
Visual Studio에서 빌드 오류가 발생합니다..Net관련 오류와 dll파일 관련 오류가 발생합니다.공식 포럼 설치가이드대로 받아야할 필수 워크로드, 컴포넌트, 버전 호환성 등 모두 점검했는데도 불구하고 오류가 발생합니다... 솔루션 쪽에서 Restore NuGet Packages 마저 실패합니다. 이틀 동안 이것저것 계속 시도해봐도 도저히 해결할 수가 없습니다.....unproject에서 Generate visual studio project files도 설정 만질때마다 해주고 있는데 전혀 변함이 없습니다... 제발 도와주십쇼 ㅠㅠㅠㅠ Unreal 5.6버전이고 Visual Studio는 17.14로 최신버전입니다. .NET버전은 8.0런타임과 9.0 런타임 설치되어 있습니다.
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
언리얼에서 제공하는 스마트 포인터 라이브러리 사용
이는 이미 C++ 에서 구현된 스마트 포인터를 언리얼에 맞게(?) 재구성한 것이며, 언리얼 가비지와는 무관한 c++ 의 스마트 포인터의 그것과 동일하나 다만 언리얼 프로젝트에서는 언리얼에서 재구성된 스마트 포인터를 사용해야 하는 것이 올바른 것이지요?
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
Unreal VS 빌드오류 해결 도저히 못하겠습니다.
하루 박아도 도저히 해결이 안되서 올립니다...unreal 5.6버전 설치했고, visual studio 최신버전 설치했습니다. 공식 포럼 따라서 설치해야할 파일 다 받았습니다. visual studio빌드를 하면 Automation종류의 dll파일을 찾을 수 없다는 오류와 error NU1701: 경고를 오류로 처리: 프로젝트 대상 프레임워크 'net8.0' 대신 '.NETFramework,Version=v4.6.1, 4.6.2, 4.7,4.7.1, 4.7.2, 4.8, 4.8.1'을(를) 사용하여 패키지 'Microsoft.Build 17.14.28'을(를) 복원했습니다. 이 패키지는 프로젝트와 완벽하게 호환되지 않을 수 있습니다.라는 오류가 발생합니다...레딧과 포럼 공식 사이트 커뮤니티 등등 다 뒤져봤는데 도저히 해결할 수가 없습니다...다음 진도를 나갈 수가 없습니다 제발 도와주십쇼 dll 오류의 자세한 메시지는 다음과 같습니다.'C:\Program Files\Epic Games\UE_5.6\Engine\Platforms\VisionOS\Binaries\DotNET\AutomationTool\AutomationScripts\ref\VisionOS.Automation.dll' 메타데이터 파일을 찾을 수 없습니다. 'C:\Program Files\Epic Games\UE_5.6\Engine\Source\Programs\AutomationTool\AutomationUtils\bin\Development\ref\AutomationUtils.Automation.dll' 메타데이터 파일을 찾을 수 없습니다. 'C:\Program Files\Epic Games\UE_5.6\Engine\Source\Programs\AutomationTool\AutomationUtils\bin\Development\ref\AutomationUtils.Automation.dll' 메타데이터 파일을 찾을 수 없습니다.
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
FGCObject 상속 받은 객체에서 Uobject 삭제를 원할 때
강의를 보면 UPROPERTY 를 사용할 수 없는 일반 C++ 객체 내부의 UObject 를 상속받은 객체의 경우 C++ 객체에 FGCObject 를 상속받고 AddReferencedObjects 함수를 통해 가비지에 UObject 에 상속받은 객체를 선언하는 식으로 하여 가비지의 개입을 막는 것으로 보이는데요. 다만 이때 이럴 경우가 없겠지만C++ 클래스 생성자에서 UObject 를 상속받은 객체를 생성 후 C++ 클래스 소멸자에서 UObject 를 상속받은 객체를 삭제하고 싶다면저는 소멸자에서 무언가를 할 필요는 없는지요? C++ 객체 가 삭제되면 가비지는 알아서 그 안에 있는 UObject 들을 모두 알아서 메모리를 회수 하는지 궁금합니다.더불어서 C++ 클래스 내에서 n 개의 UObject 를 상속받는 객체를 관리한다면, 모두 AddReferencedObjects 에 등록하면 되는지도 궁금합니다.마지막으로 예를 들면 UMyGameInstance 에서 UPROPERTY() 를 선언한 UObject 를 상속받은 객체 A 가 있다면 이를 FStudentManager 에 포인터로 넘겨서 FStudentManager 내에서 A 에 대한 무언가 관리를 한다면A 는 이미 외부(UMyGameInstance ) 에서 UPROPERTY() 를 선언하였으니 FStudentManager ->AddReferencedObjects 를 통해서 등록할 필요는 없는지 궁금합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
게임 내 인벤토리 데이터를 관리 할 경우, TArray / TSet 무엇이 올바를까요?
인벤토리는 정렬을 지원합니다.데이터의 삽입과 삭제, 수정이 빈번할 수 있습니다. 이럴 때는 TArray / TSet 중 무엇이 올바를까요? TArray/TSet 을 Unity C#의 ArrayList( 혹은 List) / LinkedList 의 관계가 아닌가 생각했는데요. 강의를 듣고 보니, TSet 는 순서가 중요되지 않고, 빈 메모리가 들어 있다는 점에서 어떤지 궁금합니다.
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
CircumferenceMarkerWidget의 bReticleCornerOutsideSpreadRadius 초기화 관련
안녕하세요! 먼저 좋은강의 감사드립니다. 세션15. 64 CircumferenceMarkerWidget 강의에서 코드 흐름 의도가 자체가UCircumferenceMarkerWidget 클래스의 bReticleCornerOutsideSpreadRadius 값을 가지고 SCircumferenceMarkerWidget 클래스의 똑같은 bReticleCornerOutsideSpreadRadius 값을 초기화 해주는 형식으로 구현하는것으로 이해 했습니다. 근데 강의 코드도 그렇고 실제 Lyra 코드에서도 보니까SCircumferenceMarkerWidget::bReticleCornerOutsideSpreadRadius 값을 초기화 해주는 코드가 따로 안보여서요 결론적으로 bReticleCornerOutsideSpreadRadius 값에 쓰레기값이 들어가서 게임을 실행할떄마다 MarkerWidget이 랜덤으로 Spread 반경 밖으로 벌어지거나 안벌어지거나 문제가 생기는거 아닌가요? 이게 실제 Lyra샘플 코드에서도 초기화 하는 코드가 안보이길래 이게 의도된것 일지 아니면 일종의 버그라고 보면되는것인지 궁금합니다!
-
해결됨이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
8강 컴포지션 중 궁금한 것이 있습니다.
컴포지션 정보 구축 중.NewObject 를 통해 하위 오브젝트를 생성 시, Outer, 즉 하위 오브젝트를 생성하는 주체가 생성하는 클래스라면 this 를 넣는데요. 이때 컴포지션 정보를 넣지 않거나 다르게 넣는다면, 가비지 등에서 해당 객체를 원하지 않는 타이밍에 삭제가 되거나 하는 문제가 발생할까요? CDO 를 통해 생성자에서 하위 오브젝트를 생성시 일단 식별자(FName)만 기입하는데요. 이때는 알아서 컴포지션 정보 즉 생성주체의 정보가 생성자에게 알아서 들어가나요?궁금합니다.
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
Retargeting - export후 scale 관련 문제
본의 scale이 이상하게 적용되는 문제가 있어서 scale값을 수정 후에 key등록을 했습니다.하지만, 값이 바뀌긴 하지만 이상한 값으로 바뀌더라고요도저히 해결 못하겠어서 질문 드립니다faceAttach bone의 scale이 1로 고정되는 문제가 있어서 0.78로 수정 후 key를 등록했는데, 다시키니까 .6084라는 이상한 값이 들어있는 문제입니다. Reference쪽에는 정상적인 값이 들어있는데, Bone쪽의 값이 계속 이상하게 되네요 Skeleton Tree에서 해당 bone의 옵션을 Animation으로도 줘보고 다양하게 해봤는데 해결이 안되서 올립니다.
-
해결됨[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
UE5 Retargeting시 bone의 scale문제 발생
Retargeting preview에서는 정상적으로 얼굴이 출력됩니다. 다만, 애니메이션을 export했을 때 bone의 scale값이 변경되고 수정또한 되지 않는 문제가 발생합니다 저와 같은 현상을 가진 질문글을 찾아서 FaceAttach Bone의 Scale값을 조정해봤는데, 정상적으로 되는 듯 싶었으나 저장을 하고 다시 키면 scale값이 다시 1.0으로 돌아와있더라고요 수정이 먹히지 않는 문제가 있습니다. https://inf.run/wiMsx
-
해결됨[Rookiss R&D Lab] UE5 Framework Insight (Liu)
KeepRelative 와 KeepWorld 의 설명을 정확히 모르겠습니다.
상대 Transform 을 유지하겠다. 와 WorldTransform 을 그대로 사용하겠다는 의미가 어떤 것인지 정확히 모르겠습니다.
-
미해결[언리얼 공인 강사 직강] 하루만에 언리얼 엔진5 입문하기
강의에 잘린 부분이 있는 것 같아요
벽이 뭘 해도 안날아오고 에러로그가 생겨서 화면을 자세히 살펴보니 벽의 트랜스폼이 처음엔 Static 이었는데, 테스트하실 땐 Movable 로 바뀌어 있었어요. 그런데 그걸 바꾸는 장면이 안보여요..!
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
리타겟팅 관련 문의드려요.
안녕하세요. 제가 선생님이 알려주신대로 리타겟팅을 해서 익스포트를 했는데요.Walk_Fwd를 리타겟팅 했더니, 기존 애니메이션들 과는 다르게 실제로 이동을 하고 있습니다.검색해보니 루트세팅 트랜슬레이션 모드랑 수치도 첨부 이미지처럼 변경했는데, 그래도 계속 이동하네요. 어떻게 해야하나요..
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
WidgetBlueprint 복사 방법 질문
안녕하세요 46.UI #3 강의 관련 질의 드립니다. 강의의 12:25 에, 하나씩 만들면 시간이 오래가기 때문에, 복사해서 사용하는 걸 권장드린다 하셨는데,WidgetBlueprint 를 어떻게 복사하는지 몰라서 이렇게 글을 남깁니다. 위 사진을 보면 아시다시피, 원본에서 Migrate해서 가져온다면, 클래스가 유효하지 않다며, 사용할 수 없다고 나옵니다. (버전은 강의에서 사용중인 버전인 5.3.2 와 동일한 버전입니다) 그래서 여러 방법을 시도해봤습니다. 했던 방법 중 가장 유효했던건, 위처럼 원본 BP로 들어가, Ctrl + C 로 복사해서, 만드는 BP에 복사하는 것이었습니다. 그런데 크기가 맞지 않아서 크기를 수정해야 되네요.. 언리얼 엔진을 입문하는 목적으로 이 강의를 듣는 제 입장에서는, 강의에서 이렇게 생략된 부분이 있다는 게 버겁네요..
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
CompressedFlag 질문
캐릭터 움직임 구조체에 CompressedFlag가 8개 있는데, 일반 개발자가 사용할 수 있는 게 4개 남았다면 좀 적은 게 아닌가 싶습니다. 규모가 좀 큰 게임이라면 특수한 이동 능력이 4개보다는 더 많지 않을까 싶은데, 실제로는 어떤 지 궁금합니다.
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
수강생으로서의 고민
안녕하세요!저는 프로그래밍 전공자가 아닌 기획자이지만, 언리얼을 더 알고 싶어서 part1부터 따라오다가 part4까지 듣게 되었는데요.part4에 딱 진입하자마자 (옛날이지만 C++ 기초를 배웠음에도 불구하고) 언리얼 C++이 매우 어렵다고 느껴졌습니다 ㅜㅜ강의 내용을 간신히 따라하기만 급급하다가, 지금은 약간 마음을 내려놓고 구조를 파악하는 것에만 집중하고 있는데요.구현 내용의 대부분이 c++이 아닌 블루프린트로 충분히 구현이 가능해 보이기도 합니다.그래서 기획자 기준에서 언리얼 엔진의 전문성을 키우고자 한다면기초 c++ 공부와 해당 C++ 강의를 한 번 더 듣고 이해도를 높이는 게 좋을지(프로그래머 시점에서 더 좋은 협업 파트너가 될 수 있는 건지), 아니면 구조를 이해하고 블루프린트로 활용해 보는 것에 더 힘을 쏟는 것이 좋을지 강사님 의견이 궁금합니다!특히 AI가 무섭게 발전하는 시대에 어디까지 배우는 게 효율적인지 가늠하기가 더 어려운 것 같습니다.감사합니다~!
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Pawn 교체, Possess 후 위젯이 이전 값(상태)을 잘못 보여줄 때 처리법이 궁금합니다.
만약 캐릭터와 PlayerState, PlayerController 간 참조가 꼬이거나 값을 못 받아오는 상황(예: Pawn이 교체되거나 Possess가 여러 번 된 경우 등)에 위젯이 이전 값이나 잘못된 값을 보여주는 사례가 종종 나올 수 있는데, 이런 경우를 실전에서 어떻게 처리하는 게 안전할지 실무 팁도 부탁드리고 싶습니다.
-
해결됨[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Pawnextension#3 9:19 질문이 있습니다.
우선 SetupPlayerInputComponent() 에서 CheckDefaultInitialization() 을 호출하여 PawnExtensionComponent 의 상태를 업데이트 하는 것으로 보이는데, 이 시점에서 PlayerController 가 존재하기 때문에 DataAvailable 로 넘어가게 된다 라는 것까지는 이해할 수 있었습니다. 근데 자신의 업데이트 과정은 CheckDefaultInitialization() 내부에서의 ContinueInitStateChain(StateChain) 이 호출될 때 진행되는 것으로 알고 있는데, 코드상에서 보이듯 이 호출 이전에 implementers의 CheckDefaultIntialization() 호출을 먼저 한 다음에 자신의 상태 업데이트가 이루어지는 것이 맞는지 확인하고 싶습니다.왜냐면 강의에선 마치 ContinueInitStateChain(StateChain) 가 먼저 이루어진 다음에 Implementers 의 CheckDefaultIntialization() 를 호출하는 것처럼 말하는 걸로 느껴졌습니다.
-
미해결[입문자를 위한 UE5] Part4. 언리얼 엔진 C++
13강. 모듈 내 하위 디렉터리 인식 못하는 문제 해결법
https://makerejoicegames.tistory.com/698 강의 13의 R1GameInstance 를 생성할 때 나타났던 오류 해결법을 기록 겸 등록합니다.5.2.3 버전에서 나타나는 문제인 것 같은데, 모듈 내 하위 디렉터리 내 클래스 생성시, 해당 헤더 를 읽어드리지 못하는 문제가 있었습니다. 위 링크의 글을 읽고나서 해결했네요.. Build.cs 에 수동으로 모듈의 디렉터리 명을 읽어드리도록 추가해야 합니다.
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
CreateInnerProcessPIEGameInstance 함수에서
안녕하세요!처음 엔진을 초기화할 때 World->InitializeNewWorld()에서도 에디터 월드를 대상으로 (1) UpdateWorldComponents()를 호출하는데,CreateInnerProcessPIEGameInstance()에서 호출하는 World->InitializeActorsForPlay()에서도 (2) UpdateWorldComponents()가 있어서요.PIE 월드를 GetDuplicateWorldForPIE()를 통해 전부 복사하는 것 아니었나요? StaticDuplicateObjectEx 내부에 subobject도 복사하는 코드가 있구요. 비록 (2)번은 PersistentLevel에 한해 업데이트를 진행하지만, (1)번에서 에디터 월드를 대상으로 한 업데이트 내용이 (2) PIE월드로 넘어오면서 소실되는 것인지 궁금합니다.좋은 강의 감사드립니다비록 ㅇStaticDuplicateObjectExGetDGuplicateWor