묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
섹션 4 퀴즈 3번이 잘못된 것 같습니다.
정답은 '경량 데이터 저장/전송 및 'UPROPERTY()'인데 보기에 없습니다.
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
5.5 에서 AddPlayerMappableConfig를 대체할 함수
Subsystem->AddPlayerMappableConfig(Pair.Config.LoadSynchronous(), Options); 5.5 버전에서는 해당 함수가 없어진 것 같습니다. 그래서 for (const FLyraCloneMappableConfigPair& Pair : DefaultInputConfigs) { if (Pair.bShouldActivateAutomatically) { FModifyContextOptions Options = {}; Options.bIgnoreAllPressedKeysUntilRelease = false; // 내부적으로 Input Mapping Context를 추가한다: // - AddPlayerMappableConfig를 간단히 보는 것을 추천 for (const auto ConfigObject = Pair.Config.LoadSynchronous(); const auto& MappingContextPair : ConfigObject->GetMappingContexts()) { const UInputMappingContext* MappingContext = MappingContextPair.Key; const int32 Priority = MappingContextPair.Value; // 우선순위 값도 가져옵니다 Subsystem->AddMappingContext(MappingContext, Priority, Options); } } }이렇게 해주시면 5.5에서도 정상적으로 실습이 됩니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Montage_JumpToSection 미호출 문제
안녕하세요. 이득우 선생님. 늘 좋은 강의 감사드립니다.다름이 아니라 제가 저만의 프로젝트를 제작하며 해당 강의를 복습중에 이해가 안되는 부분이있어서, 하루종일 헤메다가 질문드립니다...ㅠㅠ현재 ABAComboAttack의 Data중 EffectiveFrameCount으로 설정한 프레임 이전에 입력이 발생하면, 해당 시점에 Montage_JumpToSection으로 다음 섹션으로 넘겨주는 구조로 이해했습니다. 다만 궁금한 점은, 수업 예제에서 첫 번째 콤보 공격 애니메이션의 총 프레임, 즉 애니메이션 전체 길이에 해당하는 프레임이 44프레임인것으로 보이는데, (사진 참조)제가 이해한것을 바탕으로 생각했을때는, 첫 번째 EffectiveFrameCount는 44이하이기만 하면 상관없다고 생각했고, 약간의 계산 오차를 생각했을때도, 적어도 40이하에서는 안전하게 동작할것이라 예상했습니다.하지만 예상과 달리 36이상의 값 부터는 문제가 됐습니다. 아무리 연타를 해도 두 번째 콤보 공격이 등장하지 않습니다. 해당 부분 로그를 찍어 디버깅 해보니, Montage_JumpToSection 함수 내부의 GetActiveInstanceForMontage라는 함수에서 인자로 받아온 몽타주가 현재 실행중인 몽타주 인스턴스 목록, 즉 ActiveMontagesMap내부에 존재하는지 찾고, 존재하면 해당 섹션으로 이동하도록 되어있는데, 이 부분에서 계속 찾지 못하고 있었습니다. 결론적으로, 1번 섹션이 끝나기 이전에 이미 ActiveMontagesMap에서는 몽타주 인스턴스가 사라져 있었습니다.이것이 첫 번째 콤보 공격 애니메이션인 WarriorAttack1 에서 EffectiveFrameCount값이 35이하 일 때는 Montage_JumpToSection 호출 시점에 존재하고 있고, 36이상의 값에서는 존재하지 않는것이 문제였습니다. 혹시나, 계산 문제일 수도 있겠다 생각하여void AABCharacterBase::SetComboCheckTimer() { int32 ComboIndex = CurrentCombo - 1; ensure(ComboActionData->EffectiveFrameCount.IsValidIndex(ComboIndex)); const float AttackSpeedRate = 1.0f; float ComboEffectiveTime = (ComboActionData->EffectiveFrameCount[ComboIndex] / ComboActionData->FrameRate) / AttackSpeedRate; /*Test Code*/ float SectionStart = ComboActionMontage->CompositeSections[ComboIndex].GetTime(); int NextIndex = FMath::Clamp(ComboIndex + 1, 0, ComboActionData->MaxComboCount - 1); float SectionNext = ComboActionMontage->CompositeSections[NextIndex].GetTime(); float Length = SectionNext - SectionStart; /*************/ UE_LOG(LogTemp, Warning, TEXT("Section Length : %f, EffectiveTime : %f"), Length, ComboEffectiveTime); if (ComboEffectiveTime > 0.0f) { GetWorld()->GetTimerManager().SetTimer(ComboTimerHandle, this, &AABCharacterBase::ComboCheck, ComboEffectiveTime, false); } } void AABCharacterBase::ComboCheck() { ComboTimerHandle.Invalidate(); if (HasNextComboCommand) { UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance(); CurrentCombo = FMath::Clamp(CurrentCombo + 1, 1, ComboActionData->MaxComboCount); FName NextSection = *FString::Printf(TEXT("%s%d"), *ComboActionData->MontageSectionNamePrefix, CurrentCombo); /*Test Code*/ if(AnimInstance->Montage_IsPlaying(ComboActionMontage)) { UE_LOG(LogTemp, Warning, TEXT("Montage Is Playing")); } else { UE_LOG(LogTemp, Warning, TEXT("Montage Not Playing")); } /*************/ AnimInstance->Montage_JumpToSection(NextSection, ComboActionMontage); SetComboCheckTimer(); HasNextComboCommand = false; } }위와 같이 테스트 코드를 넣어서 로그도 점검해 봤지만,계산에는 이상이 없는것으로 보였습니다....서론이 너무 길었는데, 제가 궁금한점은 몽타주가 종료되지 않았음에도 불구하고 ActiveMontagesMap에서 몽타주 인스턴스가 삭제될 수 있는건지, 만약 그럴 수 있다면 현재 상황에서는 왜 삭제되는것인지 궁금합니다.긴글 읽어주셔서 감사합니다.
-
미해결실전! 언리얼 소울라이크 개발: A to Z
AnimNotifyState 이름에 관하여
무기 콜리전 시스템과 데미지 처리 강의를 듣고 있는데 강사님이 제공해주신 파일에는 AnimNotifyState_DS1WeaponCollision 파일이 있는데 언리얼에서 생성하려고 보니 클래스의 이름이 32글자 이하로 설정해야 한다고 하면서 막히더라구요. 이런 경우는 어떻게 해야 하나요? 강사님 파일을 그대로 사용해도 되겠지만, 제가 조금씩 추가해 놓은 기능들이 있어서 일일히 바꾸기는 어려워서 질문 남깁니다.
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
Rider 디버깅 관련 질문입니다.
Experience Load #4에서 강의와 동일하게 종단점을 찍어보면서 디버깅을 진행하고 있는데, VS와 다르게 상당히 Low한 부분(Assembly)까지 디버깅이 들어갑니다. 혹시 이게 원래 Rider가 강의에서 VS로 디버깅 하는 것과 다르게 더 세세하게 디버깅을 보여주는건가요?
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 실전편
블루프린트 부분 질문드립니다.
안녕하세요 강의 2분 부분쯤 BP_ThirdPerxosnCharater 부분이 강사님의 내용과 다르게나와서 혹시 어떤게 문제인지 알 수 있을까요?
-
미해결[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
빌드시 f_sps.pdb가 포함 안되있다고 오류가 납니다
비쥬얼 스튜디오 환경에서 DebugGameEditor로 설정하고 f5를 눌러 실행하면에디터가 거의 로딩이 다 끝나고 켜질때 f_sps.pdb 포함 안된다고 합니다.언리얼 폴더에서 3개 삭제 (캐쉬, 이미데이트 등) 하고 uproject다시 regenerate 하고 새롭게 빌드하고 해도 뭔가 모듈에 지정이 안되어있다고 하네요.글레디에이터 플러그인에 대한 모듈을 뭔가를 넣어줘야 하나요
-
해결됨[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
언리얼도 Sprite Editor 가 있나요?
안녕하세요유니티에서는 아틀라스에서슬라이스 한다음 한장당 이름을 따로 부여하고피봇, 사이즈 등 세팅하는 기능이 있었는데그냥 궁금해서 질문드려요
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
블프 에디터 사용 관련해서 질문있어요
혹시 블루프린트 창 내이벤트 그래프 / 뷰포트 창이 있잖아요?단축키로 최대화 <-> 원상태로 토글 관련 단축키가 있을까요?
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
무기마다 장착모션을 다르게 하고 싶은데 어떻게 처리하는 게 좋은가요?
무기 장착 및 해제 애니메이션 처리 강의를 듣고 나서 완성물을 보니까 장착 완료시 손의 모양이 무기를 쥐고 있지 않아 어색한 것 같아 수정해보고 싶기도 하고 에셋에도 여러 무기들이 있길래 활용해 보고 싶은데 어렵네요.. Define에 Enum으로 WeaponType를 정의하고 Weapon에서 설정하고 애니메이션을 연결하면 되는 건지 아니면 이렇게 작업하면 나중에 설계적으로 꼬여서 확장할 때 어려움이 생길지 잘 모르겠습니다. 혹시 좋은 방법이 있는지 궁금합니다.
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
DoAttack() 함수
혹시 이 함수는 동기 함수인가요..?!한 프레임 내에서 ToggleStaminaRegeneration의 bEnabled가 false도 되고 바로 true도 되는 건지 궁금합니다..!
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
타겟팅 시스템 강의 중 에러가 발생했어요
#include "KismetAnimationLibrary.h"를 추가하는 부분인데, 영상을 따라해도 자꾸 붉은 줄이 그어져있습니다...자꾸만 에러가 떠요build.cs파일의 PublicDependencyModuleNames.AddRange와PrivateDependencyModuleNames.AddRange에 각각 추가해봤는데도 똑같습니다..이유가 대체 뭘까요?? 문제는, 빌드하면 실행은 됩니다 이게 앞으로 강의 진행할때 크래시를 유발할까봐 해결하고 가고싶은데 어떻게 해야하나요?
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
언리얼 애니메이션 몽타주의 장단점
안녕하세요! 콤보 시스템 강의를 듣다가, 전에 어디선가 들은 듯한 말이 생각나서 질문을 드립니다.언리얼의 애니메이션 몽타주가 편리하지만, 가끔 씹히는 (..? 더 어울리는 표현이 생각나지 않는군요..) 문제가 있다고 들었는데, 주로 어떤 상황에서 그런지 궁금합니다..! 멀티플레이어 게임에서 그런건지,아니면 로직이 허술해서 그런건지,, 궁금합니다.그리고 이런 문제를 예방하거나 보완하는 방법도 궁금합니다!!
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
엔진 코드에 작성된 주석
안녕하세요.엔진 코드에 한글로 작성된 주석들부록에 있는 엔진이 포함된 소스코드를 받으면 볼 수 있을까요??
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
비동기 로딩 질문 드립니다.
안녕하세요. 유익한 강의 감사합니다. TSoftObjectPtr 통한 약참조된 객체의 경우 비동기 로딩 코드 문의 드립니다. UABWeaponItemData* WeaponItemData = Cast<UABWeaponItemData>(InItemData);if (WeaponItemData){if (WeaponItemData->WeaponMesh.IsPending()){WeaponItemData->WeaponMesh.LoadSynchronous();}Weapon->SetSkeletalMesh(WeaponItemData->WeaponMesh.Get());} 위에 것이 원래 코드인데, 소프트 참조를 적극 활용할 경우, 런타임에 지연된 로딩을 많이 사용하게 되면 hitch 가 많이 발생할까 싶어 비동기로딩 방법을 찾아보았습니다 ( 제가 짠 건 아니고, 코파일럿 도움 ) if (WeaponItemData->WeaponMesh.IsPending()){// 비동기 로드 시작WeaponItemData->WeaponMesh.LoadAsync([this](UObject* LoadedObject){// 로드 완료 후 처리USkeletalMesh* LoadedMesh = Cast<USkeletalMesh>(LoadedObject);if (LoadedMesh){Weapon->SetSkeletalMesh(LoadedMesh);}});}else{// 이미 로드된 경우 바로 설정Weapon->SetSkeletalMesh(WeaponItemData->WeaponMesh.Get());}언리얼이 내부적으로 LoadAsync 를 처리하는 방법까지 분석해보진 못했습니다만,여러 틱에 나눠 시분할로 나눠서 로딩하는 방법인가? 짐작만 하고 있습니다.이런 경우 비동기 로딩을 하는 게 일반적으로 더 나은 방법일 지 문의 드립니다.
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
인터렉션 시스템에서 디버그 로그가 안뜨면 무엇이 문제인가요?
다음 사진과 같이 제대로 콜리전 충돌도 인식하는거 같은데디버그 로그만 안뜹니다
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
장비 아이템과 인터랙션 강의 수강 중 빌드가 안돼요
강의 학습 도중, CombatComponent를 UDS1CombatComponent로 변경하는 작업을 한 이후로빌드가 안돼요...헤더 , cpp파일의 이름 및 include한 목록들 전부 수정해도 안되는데 이유가 뭘까요?오류는 다음과 같습니다 정의되지 않은 형식 'UDS1CombatComponent'을(를) 사용했습니다.심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 세부 정보 오류 C2440 'static_cast': 'UObject '에서 'UDS1CombatComponent '(으)로 변환할 수 없습니다. DS1 C:\Program Files\Epic Games\UE_5.5\Engine\Source\Runtime\CoreUObject\Public\UObject\Object.h 151심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태 세부 정보 오류 MSB3073 ""C:\Program Files\Epic Games\UE_5.5\Engine\Build\BatchFiles\Build.bat" DS1Editor Win64 DebugGame -Project="C:\Unreal Projects\DS1\DS1.uproject" -WaitMutex -FromMsBuild -architecture=x64" 명령이 종료되었습니다(코드: 6). DS1 C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets 44 강사님께서 IDE를 다른걸 쓰시는건지 설정이 다른건지는 모르겠습니다만따라가기 힘들고, 강의 영상처럼 변경사항이 잘 반영되지 않아서 자꾸 이런 오류 뜰때마다 너무 속상합니다..
-
미해결[Rookiss University] UE5 Lyra 클론 코딩 (Haker)
고민이있습니다. 루키스에 수많은 강의가 있는데 어떤 강의를 봐야할지 헷갈립니다.
[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #2 (네트워크)[Rookiss University] UE5 Lyra 클론 코딩 (Haker)[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1) 저는 언리얼엔진게임개발자가 꿈인데이렇게 네 가지 강의를 듣고서 공부하고 싶습니다. 근데 문득 고민이 드는게 이 네 가지 강의를 한번에 다 들어야 할 필요가 있을까요? 만약 다 들어야 한다면 이유는 무엇인지가 궁금합니다. 만약 이 많은 강의들을 들어야 한다면 어떤식으로 어떤순서로 체계적으로 공부할지 고민이 됩니다.
-
해결됨실전! 언리얼 소울라이크 개발: A to Z
스태미나 UI 만들기 강의 초반부 따라하다가 캐릭터가 사라졌어요
초반에 _Game 파일을 만들고 폴더들을 옮기셨는데리다이렉션인가 알려주시는 부분 모르고 그냥 다 옮기다가 뭔가 오류가 나서 맵도 도중에 이동이 안되고블루프린트랑 인풋 폴더를 옮겨도 그대로 남아있고,삭제해도 삭제가 안됐었어요 그러다가 몇번 시도했는데, 이젠 아예 캐릭터가 안보여요 맵에서 아직 초반부라 그런진 모르겠는데, 강의 도중 너무 휙휙 넘어가시는 부분들이랑 선행되어야 하는 작업들을 안알려주셔서 헷갈리는 부분이 너무 많아요..
-
미해결[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
예습용 프로젝트에서 B_Chest와 GA_Interact_Chest를 확인할 수 없습니다.
섹션 9의 다운로드에서 에셋을 가져오려고 했으나 영상에서 사용된 에셋이 존재하지 않습니다.