묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결언리얼 엔진4 입문 (C++ 기반)
GAS랑 Game Features 앞으로 많이 쓸까요?
GAS랑 Game Features 플러그인은 꼭 배우는게 좋을까요?
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
포맷 텍스트 엔터
총알 재장전 강의에서 Fire Ammo (0)을 쓰고엔터를 눌러도 Add pin이 안돼요...다른 방법으론 되는데 꼭 글 쓰니까 안되더라고요...(0) 말고 카운트도 써봤는데 안되네요...
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
[40:20] retry count가 2번 올라갔습니다.
retry 버튼을 눌렀을 때 1 -> 2가 되었는데그 이후로 [40:24] 쯤에 2->3으로 또 올라갔는데 BeginPlay외에는 카운트가 올라가는 코드가 없는 거 같은데 왜 2번 올라갔는지 알 수 있을까요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
"generated.h" 의 위치에 대해서 궁금한 점이 있습니다.
안녕하세요. 강의를 듣다 궁금한 점이 생겨 질문해봅니다.강의 중에 헤더에서 'generated.h' 는 항상 밑에 있어야 하고, cpp에서는 해당 클래스의 include 가 항상 가장 위쪽에 있어야 하는 이유가 궁금해졌습니다. 인터넷에 여러가지 검색을 해봤으나, 제대로 된 답을 찾지 못했고, ChatGPT를 통해 검색해보니,"먼저 #include "Student.generated.h" 가 나와 Student 클래스의 종속성을 로드하려고 하지만, Person 클래스에 대한 정보가 아직 로드되지 않았기 때문에 에러가 발생합니다." 라는 답변이 나왔는데, 이 사실이 맞는지 정확히 믿기 힘들어 질문드립니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
액터 스폰과 생성자에 대한 질문이 있습니다.
아이템박스에 상호작용 하면 아이템이 스폰되도록 시스템을 수정하고있습니다. 현재 아이템 액터를 다양하게 만들고 싶어액터 생성자에서 메시의 패스를 받아서 초기화하는 방법을 생각했습니다.현재 이 코드를 빌드하면 오류가 생기는데요 UObject() constructor called but it's not the object that's currently being constructed with NewObject. Maybe you are trying to construct it on the stack, which is not supported. 언리얼에서는 생성자를 여러개를 못만드는건가요? 또 생성자를 여러개를 만들수 있으면 SpawnActorDeferred에 어떻게 전달할 수 있는지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
Authority 엑터 질문
게임에 있는 카드보드 캐릭터로 볼때 리슨서버로 동작하는 어플리케이션에서는 Authority를 가진 엑터이고 이 리슨서버에 접속된 클라의 입장에서 봤을때 이 엑터(햔재 리슨서버의 카드보드)는SimulatedProxy엑터가 되는게 맞을까요??그리고 클라의 카드보드 캐릭터는 Authority로 되던데이렇게 되면 자기 자신은 신뢰하게 되는건가요...?? 햇갈리네요 ㅜㅜ
-
미해결언리얼 엔진4 (Unreal Engine) 3D 횡스크롤 게임 만들기
시네마틱 영상 재생 이후 활성화가 되지 않습니다.
Hidden In Game 을 체크하여 시네마틱 재생 중에는 인게임 인풋, 액터를 보이지 않게 설정하는 것까지는 동작하지만 시네마틱 재생이 끝난 다음에 원상복구 하는 로직들이 작동하지 않습니다. 카메라가 FollowCamBP가 아닌 뷰포트 정면으로 되돌아가버리고 비활성화 되었던 액터들은 활성화가 되지 않습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
RecvBuffer 관련
안녕하세요, RecvBuffer 관련하여 링버퍼를 사용하시지 않고 다른 방법을 이용하시던데, 강의에서 링버퍼를 별로 안 좋아한다고 얘기를 해주셨는데 이유가 있는지 궁금합니다. 매번 꺼낼때마다 앞쪽에 추가적인 공간이 더 있는지 확인 작업 연산이 더 들어가서 비효율적으로 느껴지긴 하네요..
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
Insight .bat파일 실행안되시는분들은 경로에 공백이나 한글 확인해보시면될거같습니다.
실행안되서 확인해보니 공백때문에 실행이안됬었네요
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
강의 22:21에 SweepSingleByChannel 함수 부분 질문 있습니다
안녕하세요 강의 항상 잘 듣고 있습니다!강의에서는 Attack Range = 40.0f로 설정하고 Sweep하는 구체의 반지름을 50.0f로 설정하셨던데 콜리전이 감지되는 부분은 40까지인데 보다 높은 값으로 구체의 반지름을 설정한 이유가 따로 있는지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
33:18 패밀리에 묶인다는게 어떤뜻일까요??
패밀리안에 묶인다는 표현이 자주등장하는데, 이말이 어떤 의미일까요?? 이것도 이후에 나오는 내용일까요?
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
런타임 중 NewObject<>()의 Replicate에 대해 조금 더 궁금합니다.
런타임중에 SpawnActor<>()와 NewObject<>()를 멀티플레이 환경에서 사용하고 싶은데,강의를 듣고 엔진 코드도 살펴보고 문서도 읽어보고 5.3 환경에서 실험도 해보고 했지만잘 모르겠어서 이렇게 질문드립니다." AActor 상속 클래스를 Replicate = true로 하고 서버에서 SpawnActor를 사용해 스폰하면 클라이언트에도 자동으로 생성이 된다. "-> 이건 실험도 해보았고 에픽 포럼 글 확인해보니 맞는거 같습니다위 실험 결과를 토대로 UActorComponent는 어떻게 동작할까? 궁금해서 실험을 해보았을 때 로그를 찍으며 실험해본 결과는 아래와 같습니다. - UActorComponent는 UActorComponent의 Replicate 속성 true false 여부에 상관없이, - 서버에서 NewObject<>()로 생성 후, (여기서 outer는 ACharacter 같은 걸로 설정해서 추후 RegisterComponent()시 문제가 없도록 하고)- RegisterComponent를 통해 등록하면 https://docs.unrealengine.com/5.3/ko/replicated-subobjects-in-unreal-engine/의 과정을 거치지 않았는데도 클라이언트에서도 자동으로 생성이 된다.라는 결과를 얻었습니다. 이게 맞나요? 제 생각엔 'NewObject<>()시 사용한 Outer가 Replicate가 true인 Actor이면, UActorComponent는 UObject를 서브 오브젝트 레플리케이트 시키기 위한 추가 로직(위 문서 링크에 나와있는) 없이도 자동으로 잘 된다' 라는 생각이 드는데이게 맞는건지 아니면 틀린건지 위에 실험도 잘못한건지 잘 모르겠습니다 ㅜㅜ혹시나 맞다면 UActorComponent를 위처럼 동적으로 수정 / 삭제 시 RemoveReplicatedSubObject도 호출하지 않아도 되나요?
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
22분 52초까지 진행하던 중 Faild to Find 오류가 나왔습니다
분명 파일에 있는 경로를 참조하여 붙여넣기 했는데 왜 이러는걸까요? #include "Character/ABCharacter.h" #include "Components/CapsuleComponent.h" #include "GameFramework/CharacterMovementComponent.h" // Sets default values AABCharacter::AABCharacter() { // Pawn bUseControllerRotationPitch = false; bUseControllerRotationYaw = false; bUseControllerRotationRoll = false; // Capsule GetCapsuleComponent()->InitCapsuleSize(42.f, 96.0f); GetCapsuleComponent()->SetCollisionProfileName(TEXT("Pawn")); // Movement GetCharacterMovement()->bOrientRotationToMovement = true; GetCharacterMovement()->RotationRate = FRotator(0.0f, 500.0f, 0.0f); GetCharacterMovement()->JumpZVelocity = 700.f; GetCharacterMovement()->AirControl = 0.35f; GetCharacterMovement()->MaxWalkSpeed = 500.f; GetCharacterMovement()->MinAnalogWalkSpeed = 20.f; GetCharacterMovement()->BrakingDecelerationWalking = 2000.f; // Mesh GetMesh()->SetRelativeLocationAndRotation(FVector(0.0f, 0.0f, -100.0f), FRotator(0.0f, -90.0f, 0.0f)); GetMesh()->SetAnimationMode(EAnimationMode::AnimationBlueprint); GetMesh()->SetCollisionProfileName(TEXT("CharacterMesh")); static ConstructorHelpers::FObjectFinder<USkeletalMesh> CharacterMeshRef(TEXT("/Script/Engine.SkeletalMesh'/Game/Characters/Mannequins/Meshes/SKM_Quinn_Simple.SKM_Quinn_Simple'")); if (CharacterMeshRef.Object) { GetMesh()->SetSkeletalMesh(CharacterMeshRef.Object); } static ConstructorHelpers::FClassFinder<UAnimInstance> AnimInstanceClassRef(TEXT("/Game/Characters/Mannequins/Animations/ABP_Quinn.ABP_Quinn")); if (AnimInstanceClassRef.Class) { GetMesh()->SetAnimInstanceClass(AnimInstanceClassRef.Class); } }
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
언리얼 기본 제공 태스크 UAbilityTask_WaitTargetData
언리얼이 기본제공하는 태스크들이 정말 많아서 좀 둘러보다가 저희가 만든 AT_Trace랑 비슷한 "UAbilityTask_WaitTargetData"라는 게 있어서 좀 살펴봤는데요. Activate()에 있는 구현 내용이 중복되는 BeginSpawningActor()와 FinishSpawningActor() 함수가 있는데 임의로 블루프린트에서 이 태스크를 실행해보니 Activate()가 실행이 안되고 이 두 함수가 실행되는 걸 봤습니다.이런 식으로 그냥 실행해봤는데요.사실 코드에선 어빌리티에서 CreateTarget()을 하고 ReadyForActivation()까지 호출해야 AT의 Activate()가 실행되는데 블루프린트에서는 이 노드 호출만으로 어떻게 AT가 실행까지 되는지도 잘 모르겠습니다. 거기에 UAbilityTask_WaitTargetData 처럼 Activate() 대신에 BeginSpawningActor()/FinishSpawningActor() 가 실행되는 이유도 알고 싶습니다....이 두 함수 존재의 설명은 엔진 주석에 나와있어서 어느정도 파악이 됐는데 문제는 코드에서든 블루프린트에서든 호출되는 조건을 잘 모르겠습니다...
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
어빌리티 태스크의 블루프린트 핀에 Async Task는 용도가 뭔가요?
찾아보려 했는데 정보가 잘 안 나오네요... +아, 그리고 블루프린트에서는 태스크 생성과 동시에 자동으로 ReadyForActivation 까지 호출되는 건가요??? 그러고보니 이 함수가 없네요
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
[5:03] operator+ 연산자 질문입니다.
덧셈 연산을 고칠 필요가 없다는 부분을 저는 속성이 늘어나도 속성이 늘어남에 따라 더해주는 코드를 추가할 필요 없이 속성들을 float으로 통일을 해서 (구조체 크기 / float 크기)를 통해 계산하기 때문에 고칠 필요가 없다고 이해를 했습니다.근데 다시 보니 새로운 연산자를 추가해도 고칠 필요가 없다고 말씀하셨는데 제가 이 부분이 잘 이해가 되지 않습니다. 다른 operator를 추가하는 것과 operator+를 고치는 것과의 상관관계를 잘 모르겠습니다.
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
여러 대상에게 Effect를 전달하는 방법
AttackHit어빌리티의 스킬 공격 판정 결과 함수에서스킬 타겟 액터는 HitResult 대신 Actors 에 충돌된 액터들을 넣어서 보내주기 때문에 TargetDataHandle에 대상 액터들이 들어있을 텐데요. 이를 엔진 내부에서 사용하여한번의 ApplyGameplayEffectSpecToTarget() 호출로 각 대상 액터들에게 모두 Effect를 적용하는 걸로 예상하고 있습니다. 그런데 ASC에서 직접 BP_ApplyGameplayEffectSpecToTarget()을 할 때는 대상 액터가 여러개라면 For문으로 직접 여러번 호출할 수 밖에 없어 보이는데, 혹시 ASC도 Effect를 한번 호출로 여러 타겟에 적용하는 함수가 있나요??
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
컴포넌트 활성화/비활성화 관련 질문
안녕하세요! SetHiddenInGame()는 비활성화가 아닌 렌더링만 막는 함수인건가요?그렇다면 유니티처럼 각각의 컴포넌트를 비활성화하는 경우는 없는지, 그리고 액터를 비활성화시킬 때 Visibility와 Collision 외에 따로 고려할 사항이 있는지 궁금합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
SendGameplayEventToActor() 발동 시 ASC 동작
나름대로 제가 알아볼 수 있을 정도만 정리 중인데요. SendGameplayEventToActor()가 어빌리티랑 이벤트 델리게이트를 활성화 할 수 있던데, 만약 이 두 개가 우연히 같은 Tag를 가지고있다면 Send 함수 호출 한번으로 둘이 동시에 실행되는 건가요???
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
위치 지정에 대한 질문입니다.
안녕하세요. 강사님!궁금한점이 있어, 이렇게 질문 남깁니다.오른쪽 핸드 소켓을 설정할 때 상대 위치와 회전을 지정하셨는데, 보통 기획적으로 이미 설정된 값으로 설정되는 것인지 아님 아트쪽에서 설정하는지 아님 이 강의처럼 프로그래머가 직접 무기를 들었을 때 어색하지 않는 위치를 찾아서 설정하는지 궁금합니다.또한, 보통 무기가 한 개가 아닌 여러 개의 종류가 있다면, 위치의 변동이 생기지 않을까?..라는 생각이 드는데 이때는 위치와 회전값을 동적으로 할당하나요? 아님 중간 타협점을 찾아 배치하나요???답변 주신다면 더 열심히 공부하겠습니다! 정말 감사합니다!