묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
AnimNotify 구현 질문
AnimNotify 를 상속받아 Custom AnimNotify 를 만들고 Animation blueprint 의 track 에 추가했습니다. 잘 작동한 듯 하나, 에디터를 껐다 켜면, 트랙상에 AnimNotify 가 녹색으로 바뀌어 있고 동작하지 않습니다. 지우고 새로 작성, 리빌드 다 해봤는데 안됩니다. 에디터에서 클래스를 인식하지 못하면 녹색으로 나온다고 하는데 어떻게 수정해야 하나요? 에디터가 켜져 있는 동안 추가하면분홍색으로 DeadCheck 라고 뜨는데껐다 켜서 확인하면 GASDeadCheck 라고 녹색으로 떠 있습니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
[6강] ShowDebug에서 Attributes for avater가 변하지 않아요..
https://github.com/YIDO96/AttributeErrorTest 엔진은 5.4.4입니다.ASC와 AttributeSet의 기본적인 코드만 작성한 상태입니다. 한번만 확인해주세요.. 어디가 문제인지 잘 모르겠습니다..
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
4강에서 콤보 공격시 다음 공격을 할 경우 ActivateAbility가 자동으로 발동되는 이유
언리얼 5.6으로 진행하다가 이상한 버그가 터져서 다시 5.4로 복습도 할겸 해서 처음부터 만들어보고 있는데 콤보 공격할 때 ActivateAbility가 발동되고 콤보의 첫번째 공격이 끝나게 되면 무조건 EndAbility가 발동합니다. 5.6으로 했을때와 5.4로 했을때의 코드적으로 다른점도 없는데왜 처음에는 첫번째 공격을 하고 두번째 콤보 공격을 하면 EndAbility가 아닌 ActivateAbility가 다시 호출되고,두번째 할때는 왜 첫번째 공격이 끝나면 무조건 EndAbility가 호출될까요..??ㅠ
-
미해결언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
블루프린트
블루프린트를 실무에서도 실제로 많이 사용하는지 궁금합니다.프로젝트 규모가 크고 복잡할 경우 그냥 코드로 전부 제어하는 게 나을 것 같다는 생각도 들어서요.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
9강 44:59 부분에서 질문이 있습니다.
현재 버전(5.6)에서 modifier op 는 Add가 아니라 Add(Base) 로 기재되어 있는데, 그럼에도 불구하고 강의의 내용과 똑같이 Current Value만을 변경합니다. 그렇다면 현재 버전의 Add(Base) 에서 Base 는 무슨 의미일까요...? 설명이 잘못된건가요? 마치 Base 에 Add를 하는 것 같아서 오히려 혼동을 불러일으키는 느낌인데
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
8강 24:22 CurrentAttributeSet 질문입니다.
정석적으로 코드를 변경하기 전에 에디터를 실행하려 하면 ensure(CurrentAttributeSet); 부분에서 에러가 발생하는데, 해당 시점에 CurrentAttributeSet 이 null 이라 에러가 발생하는 것이라면, 이를 피하기 위해 정석적으로 변경 한 후에 똑같은 시점에서 if문을 통과하는 방식으로 바꾼것 까진 이해했습니다.1. 근데 에디터 실행 시점에는 해당 CurrentAttriabuteSet 이 null 이었다가, 게임 시작 시점에는 값이 채워지는데 이유가 무엇인가요?게임 시작시점에는 문제 없으나 에디터를 실행할때 ensure 구문으로 인해 위와 같은 불필요한 크래쉬가 발생한다면, 그냥 ensure을 안쓰고 if문으로 처리하는게 일반적인가요?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
ASC 에서 AttributeSet 함수에 대한 mutable 반환 함수가 없는 이유
안녕하세요. UABGA_AttackHitCheck::OnTraceResultCallback 구현에서 질문 드릴 게 있습니다. UABCharacterAttributeSet* TargetAttribute = const_cast<UABCharacterAttributeSet*>(TargetASC->GetSet<UABCharacterAttributeSet>()); 게임 로직 만들면서 AttributeSet 의 값을 변경해야 할 경우가 많을 것 같은데요. ASC 에서 변경가능한 AttributeSet 의 참조나 mutable 포인터를 반환하는 함수를 구현하지 않은 이유가 있나요?const_cast 로 억지로 const 를 벗겨내는 게 자연스럽게 느껴지진 않아서요. 다른 곳에서 값을 변경하게 코드를 작성해야 하는 디자인 측면이 있는 건지, 경험적인 정책 측면이 있는 건지 궁금해서 질문 드렸습니다.
-
미해결언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
21번 강의와 22번 강의가 이어지지 않습니다.
제목 그대로 이어지지 않는 것 같습니다. 확인 부탁드립니다
-
미해결언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
Layered blend per bone에 대해 질문 있습니다!
Blend Depth : 총 몇 단계 자손 본까지 blend 대상으로 포함을 시키겠다.ex pelvis(3) : pelvis로부터 3단계 자손까지 blend 대상으로 포함ex thigh_r(-1) : 이 본과 그 하위에 있는 본들을 이 blend 대상으로부터 제외 (허벅지 밑에 하위에 종속되어 있는 본들은 다 블렌드를 하지 않을 것)강의를 들으며 정리한 내용입니다.제가 잘 이해했는지 헷갈려서 질문드립니다.Base Pose가 재생되는 기본 포즈이고 , Blend Poses 0의 포즈에서 Layer setup을 통해 pelvis(3) 즉 3단계 자손까지 blend 한다. (하지만 음수인 thigh_l , thigh_r의 자손들은 blend하지 않는다.) 라고 이해하면 될까요?
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
AActor를 APhysicsVolume으로 Cast가 되는 이유
안녕하세요!아래 코드는 UPrimitiveComponent의 UpdatePhysicsVolume 함수인데, 컴포넌트의 owner인 액터를 가져와서 그대로 Cast<APhysicsVolume>을 했는데, 액터가 캐릭터일 수도 있을 텐데 이게 어떻게 가능한 것인지 모르겠습니다... 감사합니다// haker: just get the owner Actor and compare Physics Volume's priority APhysicsVolume* V = Cast<APhysicsVolume>(OtherComponent->GetOwner()); if (V && V->Priority > BestPriority) { if (V->IsOverlapInVolume(*this)) { BestPriority = V->Priority; BestVolume = V; } }
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
IMC 매핑 관련 질문이 있습니다!
IA_Move에서 Negate(부정)설정 중XYZ 박스를 모두 체크하는 것은 특별한 이유가 있나요? (그렇게 하지 않아도 사용하지 않는 축의 영향을 받지 않기 때문에 그런 것으로 이해했습니다.)IA_Move 설정에서 후방 이동(S)과 마우스 Y축 부정의 개념이 살짝 혼동이 생겼습니다.(IA_Look에서 설명해주셨을 때 "엔진에서 Y 축의 양수는 아래 방향을 의미한다."는 말을 듣고 나니, IA_Move의 Y는 그럼 S키 입력에 부호를 바꾸는 것이 아니라(Negate) W키를 반전해야 하는 거 아닌가? 라는 생각이 들어서요.. W,S는 캐릭터를 기준으로 전방, 후방 값이기에 화면을 기준으로 한 Y축 방식과는 다르다고 해석하면 될까요?)
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
AActorComponent의 RegisterComponentWithWorld()에서 이어지는 Activate()에 관한 질문입니다
안녕하세요!Activate() 이후 PrimaryComponentTick.SetTickFunctionEnable()이 호출되는데,이후 GameWorld인지 Owner가 있는지 여부 등을 따져가며 RegisterAllComponentTickFunctions()를 호출할 때도 결국 SetupActorComponentTickFunction()을 통해 인자로 전달된 PrimaryComponentTick의 SetTickFunctionEnable()이 호출됩니다.왜 이렇게 같은 과정이 굳이 두 번이나 이루어지는지 궁금합니다물론 두 번째 단계에서는 등록 여부를 확인하여 걸러지지만 실행 조건을 살펴보아도 GameWorld가 아니라는 조건 때문에 두 번 실행될 가능성이 있는 것 같아 질문드립니다.읽어주셔서 감사드립니다.
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
디폴트로 추가되는 데이터가 존재하지 않아 문의드립니다.
언리얼 5.6 버전으로 깔고 진행하는데 강좌를 보면 콘텐츠 브라우저 / 콘텐츠 폴더에 기본으로 생성 되서 들어가는 데이터가 있는 것 같은데(World, Level, Scene 강좌에서 보여졌던 의자 파티클 이 있는 레벨) 존재하지 않아서 문의 드립니다.
-
해결됨언리얼 엔진 5 핵심 용어와 구조, 단숨에 이해하기!
C++과 에디터 로직 기능의 사용처 구분
영상 참조 [2:07]실무에서 게임을 개발할 때 C++을 안쓰고 에디터 기능인 Behavior Tree, Blackboard만으로 로직을 만들어야 하는 경우가 있을까요?두 방식을 각각 어떤 로직에 쓰는 것이 적합할 지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
SetupGASInputComponent 함수 호출위치가 이해가안갑니다.
void AABGASCharacterPlayer::PossessedBy(AController* NewController) { Super::PossessedBy(NewController); AABGASPlayerState* GASPS = GetPlayerState<AABGASPlayerState>(); if (GASPS) { ASC = GASPS->GetAbilitySystemComponent(); ASC->InitAbilityActorInfo(GASPS, this); int32 InputId = 0; for (const auto& StartAbility : StartAbilites) { FGameplayAbilitySpec StartSpec(StartAbility); StartSpec.InputID = InputId++; ASC->GiveAbility(StartSpec); SetupGASInputComponent(); } } }위 코드에서 제생각에는 서버에서는 input과 관련된 처리가 전혀 필요가 없기 때문에 SetupGASInputComponent 를 안넣어도 될것같은대요. 혹시 꼭 넣으셔야만 하는 이유가있을까요? (그리고 for문안에 두신건 단순 실수이신것 같습니다.) => for문안에 넣으셨던 것은 나중에 수정해주셨네요. 확인했습니다.클라는 참고로 아래코드를 씁니다.void AABGASCharacterPlayer::SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) { Super::SetupPlayerInputComponent(PlayerInputComponent); SetupGASInputComponent(); }
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
[GAS] Player State에 대해 궁금한 점이 있습니다.
안녕하십니까. 1강 2강 4강을 수강한 학생입니다. 다름아니라, 6강에서 NonPlayer의 경우에는 ASC와 AttributeSet을 직접 들고 있는 이유가 궁금해서 질문을 드리게 되었습니다.Player의 경우에는Owner를 PlayerState로 설정하고 Avatar를 Character로 설정하는 것이 네트워크 멀티 플레이어 환경에서 적합하다고 저번 시간에 학습했는데, NonPlayer는 그렇게 하지 않는 이유가 궁금합니다. 언리얼 엔진에서도 Player State 클래스만 제공해주고 NonPlayer State 클래스는 제공하지 않던데, 이 부분도 멀티 플레이 부분과 연관이 있을까요?
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
UE5.3.2 빌드시 에러
해당영상이 5.3.2로 진행되고있어 ue5.3.2 버전 풀소스 다운받아 빌드하려고하니 에러가 납니다.UE5프로젝트만 빌드했는데아래와 같은 에러로 빌드실패가 나와서 진행을 할수 없습니다.visual studio 2022 최신업데이트된 버전 쓰고있습니다. 어떻게하면 좋을까요? 1>------ 빌드 시작: 프로젝트: UE5, 구성: Development_Editor x64 ------1>Using bundled DotNet SDK version: 6.0.3021>Running UnrealBuildTool: dotnet "..\..\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" -Target="UnrealEditor Win64 Development" -Target="ShaderCompileWorker Win64 Development -Quiet" -WaitMutex -FromMsBuild1>Log file: D:\UnrealEngine-5.3.2-release\Engine\Programs\UnrealBuildTool\Log.txt1>Building UnrealEditor and ShaderCompileWorker...1>Using Visual Studio 2022 14.36.32548 toolchain (C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.36.32532) and Windows 10.0.26100.0 SDK (C:\Program Files (x86)\Windows Kits\10).1>Determining max actions to execute in parallel (6 physical cores, 12 logical cores)1> Executing up to 6 processes, one per physical core1> Requested 1.5 GB memory per action, 4.26 GB available: limiting max parallel actions to 21>------ Building 372 action(s) started ------1>[1/372] Compile [x64] Module.RenderCore.2.cpp1>D:\UnrealEngine-5.3.2-release\Engine\Source\Runtime\RenderCore\Private\RenderGraphPrivate.cpp(195): error C4756: 상수 산술 연산에서 오버플로가 발생했습니다.1>[2/372] Compile [x64] Module.RenderCore.2.cpp1>D:\UnrealEngine-5.3.2-release\Engine\Source\Runtime\RenderCore\Private\RenderGraphPrivate.cpp(195): error C4756: 상수 산술 연산에서 오버플로가 발생했습니다.1>[3/372] Compile [x64] Module.AudioSynesthesiaCore.cpp1>D:\UnrealEngine-5.3.2-release\Engine\Plugins\Runtime\AudioSynesthesia\Source\AudioSynesthesiaCore\Private\PeakPicker.cpp(17): error C4756: 상수 산술 연산에서 오버플로가 발생했습니다.1>[4/372] Compile [x64] Module.LiveLink.cpp1>D:\UnrealEngine-5.3.2-release\Engine\Plugins\Animation\LiveLink\Source\LiveLink\Private\LiveLinkClient.cpp(1711): error C4756: 상수 산술 연산에서 오버플로가 발생했습니다.1>[5/372] Compile [x64] attention_fusion.cc1>D:\UnrealEngine-5.3.2-release\Engine\Plugins\Experimental\NNERuntimeORTCpu\Source\ThirdParty\onnxruntime\Onnxruntime\Private\core\optimizer\attention_fusion_helper.h(767): error C4756: 상수 산술 연산에서 오버플로가 발생했습니다.1>[6/372] Compile [x64] Module.PoseSearch.cpp1>D:\UnrealEngine-5.3.2-release\Engine\Plugins\Experimental\Animation\PoseSearch\Source\Runtime\Private\PoseSearchLibrary.cpp(41): error C4756: 상수 산술 연산에서 오버플로가 발생했습니다.1>Total time in Parallel executor: 36.97 seconds1>Total execution time: 39.04 seconds1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets(44,5): error MSB3073: "..\..\Build\BatchFiles\Build.bat -Target="UnrealEditor Win64 Development" -Target="ShaderCompileWorker Win64 Development -Quiet" -WaitMutex -FromMsBuild" 명령이 종료되었습니다(코드: 6).1>"UE5.vcxproj" 프로젝트를 빌드했습니다. - 실패========== 빌드: 0개 성공, 1개 실패, 10개 최신 상태, 0개 건너뜀 ==================== 빌드이(가) 오전 7:04에 완료되었으며, 40.529 초이(가) 걸림 ==========
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
AnimNotify를 GA에서 받는방법이 있을까요?
AnimNotify신호를 GA의 함수로 받고싶은데 방법이있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
ABP의 skeleton 오류
Git에서 https://github.com/ideugu/UnrealGAS1/tree/main다운받아서 실행하는데 에디터 실행을 누르면 Anim Blueprint 'ABP_ABCharacter'의 skeleton을 찾을 수 없다고 나오면서 실행이 안 됩니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
장판스킬을 만들때 콜리전설정
수업내용은 아니장판 스킬을 만들고싶은데 구상한바로는 액터를 생성하고 capsuleComponent를 붙여서 Overlap이 발생할때 데미지를 주는 방식으로 만들려고하는데요 Collision부분에서 걸리는게 있습니다.지금 이 장판액터는 몬스터나 플레이어들만 Overlap이 되고 나머지는 무시를 해야하는데요 이러면 장판액터가 바닥에고정되어있지않고 땅으로 꺼지는현상이 발생합니다. PhysicsSimulate를 꺼도 이런현상이 발생합니다 바닥이랑만 Block되게 만드는 방법도 있지만 혹시 다른방법이 있을까요?