inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

다중 타겟액터 설정할때, 자신이 제외가 안됩니다.

미해결

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

안녕하세요. 10강 다중 타겟으로 스킬 데미지 입히는 부분 학습중입니다. 그런데, 스샷처럼 CollisionQueryParams 생성할때 Source Character 를 넣어줘도 Overlaps 정보에보면 자신이 포함되있는 상태로 나옵니다. 실제로 게임 플레이시, 자신도 피해를 입는 상황이고요.. 혹시 어떤부분을 확인해봐야될지 알수있을까요? 감사합니다.

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
Impact 댓글 3 좋아요 0 조회수 244

강의중 HUD와 HPWIDGET

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

13강에서 HUD를 업데이트하면서 화면에 띄우는 작업을 하게되는데요, 좀 궁금한 사항이 생겼습니다. 기본적으로 케릭터마다 HP위젯을 가지고있는데, 만약 플레이어는 따로 HP를 가지고 있지 않게하고 HUD에 HP를 띄우는것만으로 UI를 변경하게 된다면, 플레이어쪽에서 HPBar위젯 CDO를 하지 않게 변경하고 몬스터들만 CDO를 생성하도록 변경하면 되는건가요? 그리고 이제 플레이어는 HUD를 통해서만 소유한엑터정보를 가저와서 스텟에 접근하는 방식으로 변경하면 될려나요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
wjh9330 댓글 2 좋아요 0 조회수 121

State에 Falling을 추가하고 싶습니다.

미해결

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

안녕하세요. 프로젝트 작업 중 점프가 아닌 Falling 스테이트를 부여하고 싶습니다. Effect를 만들어서 강제로 부여해야하는건지 아니면 다른 기능이 있는지 여쭤보고 싶습니다.

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
깨비 댓글 2 좋아요 0 조회수 127

로직 이슈 있음.

미해결

[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)

좌우로 추가 된다고 말씀주셨는데, 좌우로 추가되는 로직이 아닙니다. 그리고 보니까 offset 추가되는 부분에서, UserFacingExperienceList 의 Length 가지고 로직 돌리던데, Index 없이 돌리는 부분이 없네요. 저렇게 되면 무조건 0번쨰 인덱스 가지고 계산하게 됩니다. 수정은 상위 ForEachLoop 부분에서 ArrayIndex 반환하는 부분이 있는데, 그걸 쓰셔야할것 같아요. 보니까 포탈이 1개라서 눈치를 못채셨을것 같은데, 이 부분 영상수정 혹은 자막 첨부 부탁드립니다.

  • c++
  • unreal-engine
ksw85273 댓글 2 좋아요 0 조회수 275

ArenaBattle 과 ArenaBattleGAS 모듈을 분리하는 이유가 있을까요?

미해결

이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템

안녕하세요. 강의 듣다보니, ArenaBattle 과 ArenaBattleGAS 모듈이 분리되있는데, 혹시 모듈을 분리하는 특별한 이유가 있을까요? 아니면 GAS 시스템과 기존 제작된 ArenaBattle 을 명시적으로 나누기 위해서 분리한것인가요? 궁금합니다 ^^;

  • unreal-engine
  • ue-blueprint
  • unreal-engine5
  • 언리얼-c++
  • gas
Impact 댓글 2 좋아요 0 조회수 168

액터 생성/삭제와같은 중요한 행위에 대한 복제와 연관성

미해결

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

서버에서 어떤 AI 캐릭터 액터를 Spawn Actor 하거나 생성된 이 AI 캐릭터가 스스로 Destroy하여 삭제되는 행위가 서버에서 발생했을때 이러한 것들은 무조건 연관성 상관없이 복제되서 위치상 매우 멀리 떨어져있는 클라이언트에서도 같은 캐릭터 액터가 생성되고 삭제 되는 건가요?

  • unreal-engine
  • 네트워크
  • 언리얼-c++
themoon007 댓글 1 좋아요 0 조회수 145

클라이언트 새로 생성시 크래쉬 나는 문제..

해결됨

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

안녕하세요. 영상을 보면서 언리얼을 배우고있는 학생입니다. 선생님께서 알려주신대로 제가 따로 만든 프로젝트에 점목을 시키고있는데 클라이언트 추가 생성시 GameMode를 상속받은 클래스에서 Login()함수에 NewPlayer의 플레이어 컨트롤러가 NULL로 들어와 크래쉬가 나 에디터가 꺼지는 현상이 일어 나고있습니다.. 어떻게 해결이 가능할까요???

  • unreal-engine
  • 네트워크
  • 언리얼-c++
댓글 2 좋아요 0 조회수 294

abort와 관련한 질문이 있습니다.

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

27:03 부분에서, target이 is not set으로 시작하여 오른쪽 시퀀스의 하위 테스크를 순차적으로 실행중인 상황에서, 만약 target이 detect에 의해 감지되어 is set이 되면 blackboard:target is not set <- 이 데코레이터는 실시간으로 target 값을 감지하여, detect로 인해 데코레이터의 target이 is set으로 될 경우 실행중이던 task는 즉시 failed를 반환한 후 abort를 하게 되는건가요? (데코레이터도 service처럼 tick 함수가 호출되나요?) 이것이 참이라면, abort가 된 후에 root로 돌아가는것이 아니라 상위 노드인 selector로 돌아가서 평가를 다시 하게 되는 원리인가요? 아니면 root로 돌아가게 되나요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
댓글 1 좋아요 0 조회수 131

Serialzation 부분 Object Graph 질문입니다.

미해결

Go Hard to Unreal Engine

하나의 오브젝트가 다른 오브젝트를 속성으로 가지고 있는 관계를 오브젝트 그래프라고 설명해주셨는데, Object그래프와 Has-a관계와는 어떤 비교가 가능할까요?

  • unreal-engine
  • 언리얼-c++
동호 댓글 1 좋아요 0 조회수 134

OnHpChanged 델리게이트의 broadcast 호출시점에 대한 궁금증이 있습니다.

해결됨

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

우선 제가 알고있는 바로는 UABCharacterStatComponent::BeginPlay() 가 호출될 시, 내부에서 SetHp 함수가 호출되며 그 안에 있는 OnHpChanged.Broadcast(CurrentHp); 가 호출되므로, 그 전에 OnHpChanged가 바인딩되어 있어야 한다. UABHpBarWidget::NativeConstruct() 내부에 SetupCharacterWidget(this) 가 호출되고, 이 안에서 Stat->OnHpChanged.AddUObject를 통해 &UABHpBarWidget::UpdateHpBar 를 바인딩한다. --- 먼저 OnHpChanged 에 어떤 함수를 바인딩 후에 1. 처럼 Broadcast 를 하는것이 순서로 알고 있는데, 위젯의 NativeConstruct() 는 스탯컴포넌트의 BeginPlay() 보다 늦게 호출되는 것으로 알고 있어서 만약 이것이 사실이라면, 2. 의 바인딩 과정 이전에 이미 스탯컴포넌트의 BeginPlay를 통해서 바인딩되지 않은 OnHpChanged를 Broadcast를 해버리는 결과가 생길수도 있는건가요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
hush park 댓글 2 좋아요 0 조회수 168

수업과 좀 관련없는 문제지만 질문 있습니다

미해결

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

안녕하세요. 항상 강의 잘 듣고 있습니다. 제가 집에서 듀얼 모니터를 사용하면서 노트북 모니터가 아닌 다른 모니터에서 언리얼 엔진을 띄우고 공부를 합니다. 근데 밖에 나가서 노트북 모니터로만 하다가 그동안은 잘 됐었는데 갑자기 GPU Crashed or D3D Device Removed. Use -d3ddebug to enable the D3D debug device. Check log for GPU state information. 이라는 에러 창이 뜨면서 프로젝트가 켜지질 않습니다. 제가 인터넷에서 방법을 찾아보면서 드라이버 재설치, defaultengine.ini에서 dx11로 바꾸고 실행, trddelay 설정, 엔비디아 제어판 전원파워 최고 성능 선호로 설정, 언리얼 엔진 외장 그래픽만 사용하도록 설정 이렇게 다양한 방법들을 해봤는데 그래도 안되더군요. 근데 집가서 다시 듀얼 모니터로 연결하고 실행해보니 언리얼 엔진이 잘 켜졌습니다. 어디가 문제고 어떻게 해결할 수 있을까요? 다음은 크래쉬 리포터에 뜨는 내용입니다. LoginId:e119c4204e141de266d9dca94151ea5a EpicAccountId:2ceddc945c6f4fcab6b011ccf8e10152 Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Util.cpp] [Line: 868] hr failed at D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\Windows\WindowsD3D12Viewport.cpp:189 with error DXGI_ERROR_DEVICE_REMOVED UnrealEditor_D3D12RHI!D3D12RHI::VerifyD3D12Result() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Util.cpp:868] UnrealEditor_D3D12RHI!FD3D12Viewport::Init() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\Windows\WindowsD3D12Viewport.cpp:180] UnrealEditor_D3D12RHI!FD3D12DynamicRHI::RHICreateViewport() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Viewport.cpp:831] UnrealEditor_SlateRHIRenderer!FSlateRHIRenderer::CreateViewport() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:409] UnrealEditor_SlateCore!SWindow::ShowWindow() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateCore\Private\Widgets\SWindow.cpp:1410] UnrealEditor_MainFrame!FMainFrameHandler::ShowMainFrameWindow() [D:\build\++UE5\Sync\Engine\Source\Editor\MainFrame\Private\Frame\MainFrameHandler.h:265] UnrealEditor_MainFrame!FMainFrameModule::CreateDefaultMainFrameAuxiliary() [D:\build\++UE5\Sync\Engine\Source\Editor\MainFrame\Private\MainFrameModule.cpp:319] UnrealEditor_UnrealEd!EditorInit() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdGlobals.cpp:171] UnrealEditor!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:176] UnrealEditor!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:107] UnrealEditor!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:244] UnrealEditor!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:282] UnrealEditor!__scrt_common_main_seh() [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288] kernel32 ntdll

  • unreal-engine
  • 네트워크
  • 언리얼-c++
김민기 댓글 1 좋아요 0 조회수 370

부록 강의를 듣지 않아도 수료증을 받을 수 없을까요?

미해결

[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)

안녕하세요, 강의를 결제 후 완강하여 수료증을 제출해야 하는 상황입니다. 그런데 보니 부록 강의가 30시간이 넘는데도 불구하고, 해당 강의를 완강하지 않으면 수료증이 나오지 않는 것 같아요. 커리큘럼에 필수적인 내용이 아니라면, 부록 강의를 듣지 않아도 수료증을 발급 받을 수 없을까요? 감사합니다.

  • c++
  • unreal-engine
충실한 백조 댓글 2 좋아요 0 조회수 245

시퀀스 하나가 성공을 반환하면 트리 전체가 종료가되나요?

해결됨

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

예를들어 13:50 에서 "친구에게 간다" 가 "친구와 약속"이라는 데코레이터를 만족하여 "약속장소로 이동"을 수행하고 이를 성공적으로 수행했다면, "친구에게 간다"라는 시퀀스는 root에게 성공을 반환하게 되고, 나머지 두 개의 시퀀스는 검토하지 않고 바로 트리 전체를 종료하는 원리인건가요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
hush park 댓글 1 좋아요 0 조회수 160

배운 내용을 따로 정리해도 가능할까요?

해결됨

[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)

안녕하세요 Rookiss님, 언제나 좋은 강의를 만들어주셔서 감사합니다. 강의에서 배울 수 있는 정보들을 블로그에 정리하고자 합니다. 하지만 그전에 먼저 Rookiss님의 허락이 필요하다고 생각되어 이렇게 글을 쓰게 되었습니다. 언제나 건강하시고 다시 한번 좋은 배움의 기회를 제공해주셔서 감사드립니다.

  • c++
  • unreal-engine
monstro 댓글 2 좋아요 0 조회수 247

DefaultArenaBattle.ini 관련 질문입니다

해결됨

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

우선 메모장을 이용해서 만들기는 했는데, 여기 안에 있는 내용물은 직접 작성하는 것인가요? 메모장을 만들어놓으면 자동으로 내용이 로드되는게 아닌건가요?

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
hush park 댓글 1 좋아요 0 조회수 186

매크로 수식

미해결

[Rookiss University] UE5 Lyra 클론 코딩 (Haker&Liu)

이제는 PRAGMA_DISABLE_OPTIMIZATION PRAGMA_ENABLE_OPTIMIZATION 대신에 UE_DISABLE_OPTIMIZATION UE_ENABLE_OPTIMIZATION 사용하라고 언리얼에서 권장하고 있습니다. 위 PRAGMA 매크로들 곧 폐기된다고 경고문에서 나오네요.

  • c++
  • unreal-engine
ksw85273 댓글 0 좋아요 1 조회수 266

umg

미해결

[입문자를 위한 UE5] Part4. 언리얼 엔진 C++

umg를 캐릭터 클래스에서 addtoviewport 하면 캐릭터에서는 보이는데 이때 컨트롤러를 이용해 다른 폰에게 빙의 하면 캐릭터에서 보이던 umg는 사라지나여? 아니면 말 그대로 레벨을 새로 로드하지않는이상 다른 폰에 빙의해도 캐릭터클래스에 있던 umg는 그대로 보이나여?

  • unreal-engine
zzodong0309 댓글 0 좋아요 0 조회수 90

패키지 관련 코드 질문이요.

해결됨

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

UPackage* StudentPackage = ::LoadPackage(nullptr, *PackageName, LOAD_None); if (nullptr == StudentPackage) { UE_LOG(LogTemp, Warning, TEXT("패키지를 찾을 수 없습니다.")); return; } //내부에 가지고 있는 에셋을 모두 다 로딩해주는 함수 StudentPackage->FullyLoad(); 다음 코드에서 내부에 가지고 있는 애셋을 모두 다 로딩해주는 함수가 FullyLoad()라고 들었는데요. 애초에 하나의 패키지는 하나의 애셋만 가질수있는 구조라고 들었는데 그러면 FullyLoad()는 애셋을 하나만 로딩해주는 거 아닌가요? 그리고 SaveStudentPackage( ) 함수에서 패키지를 생성하고 저장하기 전에 UPackage* StudentPackage = ::LoadPackage(nullptr, *PackageName, LOAD_None); if (StudentPackage) { StudentPackage->FullyLoad(); } 이 작업을 하면 더 안정적 이다고 하셨는데, 잘 이해가 안가요.. 제가 이해한 바로는 로딩해주는 작업은 에디터 상 애셋을 코드상에 가져오기 위해 쓰이는 걸로 알고있는데 그게 아닌가요?

  • unreal-engine
  • 언리얼-c++
임동재 댓글 2 좋아요 0 조회수 278

13강 직렬화 관련 코드 질문이 있습니다.

해결됨

이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해

질문은 총 2개 있습니다. 첫 번째 질문입니다. FMemoryReader MemoryReaderAr(BufferArrayFromFile); UStudent* StudentDest = NewObject<UStudent>(); StudentDest->Serialize(MemoryReaderAr); 다음 코드는 Serialize함수이지만 역질렬화을 하고 있다고 보면 될까요? 단순화시킨 Array<uint8> 타입의 BufferArrayFromFile 바이트스트림을 오브젝트 그래프(StudentDest)로 변환한다고 보면 될까요? ---------------------------------------------------------------------------------- 두 번째는 질문이라기 보다는, 제가 제대로 이해한 게 맞는지 검토 한번 부탁드립니다. 오브젝트 그래프를 바이트 스트림으로 변환하는 작업은 직렬화 라고 한다. 따라서 오브젝트의 데이터를 바이트 스트림에 쓰는 Writer작업은 모두 직렬화를 위해 쓰인다. 2가지 케이스가 있다. 1). TArray<uint8> BufferArray; FMemoryWriter MemoryWriterAr(BufferArray); StudentSrc->Serialize(MemoryWriterAr); 2). FString JsonOutString; TSharedRef<TJsonWriter<TCHAR>> JsonWriterAr = TJsonWriterFactory<TCHAR>::Create(&JsonOutString); FJsonSerializer::Serialize(JsonObjectSrc,JsonWriterAr); 반대로 바이트 스트림을 오브젝트 그래프로 변환하는 작업은 역직렬화 라고 한다. 따라서 오브젝트가 바이트 스트림의 데이터를 읽어오는 Reader작업은 모두 역직렬화를 위해 쓰인다. 2가지 케이스가 있다. 1). TArray<uint8> BufferArrayFromFile; ( "" BufferArrayFromFile 이 파일 읽어오는 과정 생략 "" ) FMemoryReader MemoryReaderAr(BufferArrayFromFile); UStudent* StudentDest = NewObject<UStudent>(); StudentDest->Serialize(MemoryReaderAr); 2). FString JsonInString; FFileHelper::LoadFileToString(JsonInString, *JsonDataAbsoultePath); TSharedRef<TJsonReader<TCHAR>> JsonReaderAr = TJsonReaderFactory<TCHAR>::Create(JsonInString); TSharedPtr<FJsonObject> JsonObjectDest; FJsonSerializer::Deserialize(JsonReaderAr, JsonObjectDest);

  • unreal-engine
  • 언리얼-c++
임동재 댓글 1 좋아요 0 조회수 236

데이터에셋 블루프린트 reload 후 저장 관련 질문

미해결

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

45:30 부분에서 에서 세 데이터에셋의 블루프린트를 하나로 묶고 Reload 후 Save All을 했을때, Reload 된 각각의 에셋들이 실제로는 Reload가 안된 채로 저장이 되는 것 같습니다.(다만, 마우스를 갖다대면 primary Asset Type은 표면적으로 변경된것처럼 보입니다.) 반면, 묶음으로 Reload를 한 후, 개별적으로 블루프린트를 열고 일일이 저장버튼을 누르면 그제서야 Reload가 적용이 되는지, ensure()이 통과가 됩니다. 예를들어 에러를 띄우기 위해 ,ABItemData.h 에 있는 코드 return FPrimaryAssetId("ABItemData", GetFName()); 부분에 태그ID 를 "ABItemData3333", GetFName()) 로 바꾼 후, ABItemBox.cpp 에서 FPrimaryAssetId SpecificAssetId(TEXT("ABItemData"), TEXT("ABIS_ScrollTest")); FSoftObjectPtr AssetPtr(Manager.GetPrimaryAssetPath(SpecificAssetId)); 로 바꿔서 아이템 전부를 의도적으로 Scroll 자산으로 설정하고 에디터 실행 후에 설명하신 대로 전체묶음+Reload+save all 을 한 후 플레이를 누르면, 아이템이 생성되는 시점에 ensure(Item) 에서 에러가 발생되길 기대했지만 에러가 발생하지 않고 여전히 정상적으로 아이템박스 인스턴스가 생성이 됩니다. 반면 세묶음으로 Reload를 한 후 세이브는 데이터에셋 블루프린트 각각을 열어 개별저장 한 후에 다시 플레이를 하면 원하던 에러가 뜹니다. 아무래도 save all 이 Reload한 데이터 에셋들을 제대로 저장시키지 못하고 있는게 아닌가 싶습니다. 버그인지 아닌지는 모르겠지만..

  • unreal-engine
  • ue-blueprint
  • 언리얼-c++
hush park 댓글 2 좋아요 0 조회수 207

인기 태그

인프런 TOP Writers

주간 인기글