묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
파트4는 언제 출시하는지 알 수 있을까요?
그리고 파트 4에 나오는 내용은 3~4월달에 진행하는 라이브 강의와 같은 목차인가요?
-
해결됨2025 언리얼 공인강사 – UE5 스파르타 클래스: 심화편
애니메이션 리타겟 오류
인강에서 보여주신대로 해봤는데 손가락이 꼬이는 현상이 발견되었습니다. 이건 어떻게 해야 하나여
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
TSoftObjectPtr로 변경하여도 Weapon에셋이 로드가 됩니다.
8강 아이템 시스템 이해 39분 쯤 UPROPERTY(EditAnywhere, Category = "Weapon")TSoftObjectPtr<USkeletalMesh> WeaponMesh; 으로 코드를 변경한 후, 언리얼을 종료하고 VS에서 ctrl + F5로 다시 빌드해서 언리얼을 열고 게임을 실행 후 Obj List Class=SkeletalMesh를 쳐도 드래곤 소드 에셋이 계속해서 존재합니다. 제가 쓰고 있는 버전이 5.3이라 무언가의 차이점이 있는 것일까요..?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
(게임수학 - 역삼각함수) 벡터 외적으로 시계/반시계 방향 체크 하는 부분 질문 드립니다
안녕하세요 선생님, 강의 열심히 듣고 있습니다! 먼저 질문부터 말씀 드리자면, 벡터A X 벡터B일 때, 벡터 B가 시계방향에 있음에도 왜 코드에서는 외적(Cross)값이 양수가 나오는지 궁금합니다! 벡터 외적으로 벡터들 간의 상대적인 위치(시계/반시계) 구하는 방법 공부하는데, 잘 이해가 되지 않아 구글이나 다른 자료를 통하여 벡터 외적 쪽을 추가적으로 공부하였습니다.2차원 평면 상에서 하기와 같이 벡터a x 벡터b 를 했을 때, 양수가 나오면 벡터b는 벡터a에 대해 '반시계'방향으로 있으며, 음수가 나오면 벡터b는 벡터a에 대해 '시계'방향으로 나온다고 설명 되어 있으며, 다른 자료들을 찾아봐도 다 위와 같이 나와있더라구요. (출처 : https://bowbowbow.tistory.com/14 ) 다만 강의 코드에서는 아래와 같이 몬스터가 바라보는 방향(lookDir)벡터에서 몬스터에서 마우스로의 방향(MonsterToMousedir)을 외적 계산하였을 때, 이때 마우스 방향이 몬스터 기준으로 오른쪽('시계방향')으로 있으면 cross 값이 음수가 나와야 하지 않나 싶은데 실제로는 cross 값이 양수가 나오더라구요. 강의에서도 cross값이 0미만(음수)일 때는 반시계 방향이 있게 되므로 이때 값 보정을 위해 angle에 360-angle 처리하는 것으로 나와 있는 것으로 보니 반시계 방향일 때 음수가 되는 것이 맞는 것 같기는 한데,, 왜 이 코드에서는 양수가 나오는지 궁금합니다.수학적 지식이 너무 없어서 그런가 암만 코드를 봐도 왜 이렇게 되는지 잘 이해가 안 되네요ㅠ 도움 주시면 감사 드리겠습니다
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
리타게팅하고 애니메이션 익스포트했을 때 애니메이션따라서 이동합니다.
리타게팅을 하고 추출한 애니메이션을 실행시키면 영상에서는 제자리에서 애니메이션이 실행되는데 저는 앞으로 이동합니다. 찾아보니 루트 모션을 활성화해도 변화 없습니다.
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
SetupGASInputComponent 호출 부분 질문입니다.
PossessedBy 함수가 서버에서만 호출되기 때문에 인풋에 관련된 함수를 다시 호출해 주는 것은 이해했는데요, SetupPlayerInputComponent 가 아닌 SetupGASInputComponent를 호출하는 이유가 뭔가요? GAS에 관련된 인풋 함수만 중복 호출 하는 이유가 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
메모리 리크는 어떻게 체크하나요?
40:10 메모리 리크 체크를 앞 강의 중 어딘가에서 봤는데..못 찾겠네요..
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
RegisterAccept를 여러번 호출해줘야 하는 흐름이 잘 이해가 안됩니다.
강의 39분쯤 그림판을 켜서 설명해주시는 부분에서accept 또한 iocp 흐름을 따라 낚싯대를 다시 던져줘야 한다고 설명해 주셨는데요,Listener의 accept가 왜 다시 호출되어야 하는지가 잘 이해가 안됩니다. 한번 연결된 후에 작업이 완료되고 기존의 클라이언트가 여전히 연결되었는지 재확인 하는 과정인가요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
PlayerController의 존재 의미
지금까지 컨트롤에 관련된 강의를 들으면서 PlayerController는 무슨 역할을 하는지 궁금합니다. 제가 2~3강을 듣고 이해한 흐름은 다음과 같습니다. AABCharacterPlayer의 BeginPlay함수에서 맵핑 컨텍스트(IMC)를 설정하는데 PlayerController를 가져와 Subsystem을 선언하는데 쓰인다. (추후엔 SetCharacterControl로 바뀜)Subsystem은 IMC를 운영하는 클래스로 Subsystem에서 InputSystem을 가져와서 DefaultMappingContext을 맵핑 컨텍스트 에셋으로 추가한다. DefaultMappingContext는 AABCharacterPlayer의 CDO에서 주소값으로 가져온다. DefaultMappingContext는 IA_Jump, IA_Move, IA_Look가 등록된 IMC로 이걸 SubSystem에 등록시킨다. 이는 Move또는 Look함수에 있는 AddControllerYawInput 함수를 파보면 PlayerContoller에 Rotation값을 계속 갱신하는 것으로 움직인다는 것을 알 수 있다. 그렇다면 PlayerController는 그냥 GameMode에서 지정만 하고 실질적인 구현은 없는건가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
기존 C++ 시리즈와 현재시리즈중 우선순위
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] 와 비교해서 현재 시리즈를 먼저 진행하고 하는것이 알맞은 순서일까요? 이전 C++ 언리얼 MMO 과정에는 어셈블리도 다루고 좀더 딥하게 다루던걸로 기억해서 여쭈어봅니다
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
2d 이동 로직 관련 질문 드립니다.
안녕하세요 강의를 들으면서 메이플스토리 모작 2d 포폴을 만들고 있습니다.상태 변화에 따른 처리 로직을 만들던 중 한 가지 질문드립니다.void Player::OnComponentBeginOverlap 땅과 충돌 했을때SetState(PlayerState::MoveGround) 로 바꿔주어서 중력 작용을 받지 않게하고 void Player::OnComponentEndOverlap 땅과 충돌이 끝났으면SetState(PlayerState::GroundFall) 로 바꿔주면서 중력 작용을 받게 하는충돌 처리 로직이 - 충돌 했을때 밀어주는 방법을 사용하여 플레이어 상태가 GroundFall <-> MoveGround 상태를 계속 왔다 갔다 하면서 동작을 하게 됩니다. 땅과 떨어졌을때 계속 중력을 받아야 하는건 맞는 상태인 것 같은데 플레이어의 상태가 계속 변화하는 문제가 생기게 됩니다.-> 땅과 떨어 졌을때는 GroundFall 상태로만 되고 땅과 붙었을때는 MoveGround 상태로만 동작이 되었으면 합니다.State 패턴 강의에서 슈퍼마리오 예제를 하시다.아름다운 방법을 찾으셨다고 말씀 하셨는데 어떠한 방법으로 해결 하셨는지 알 수 있을까요?
-
미해결언리얼 엔진4 입문 (C++ 기반)
GAS랑 Game Features 앞으로 많이 쓸까요?
GAS랑 Game Features 플러그인은 꼭 배우는게 좋을까요?
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
포맷 텍스트 엔터
총알 재장전 강의에서 Fire Ammo (0)을 쓰고엔터를 눌러도 Add pin이 안돼요...다른 방법으론 되는데 꼭 글 쓰니까 안되더라고요...(0) 말고 카운트도 써봤는데 안되네요...
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
충돌 체크 방식 질문
안녕하세요 강의를 들으며 공부하면서 메이플스토리를 모작으로 포토폴리오 만들고 있습니다.강의에서는 타일맵 형식으로 충돌을 체크 하였는데 미세한 움직임을 구현하기 위해서는 타일맵 형식 보다는 충돌 레이어 (boxcollider)와 같은 충돌 방식이 더 좋은 방법이 될려나요?타일맵 형식은 셀 단위로 이동을 하다 보니 미세한 움직임은 불가능해 보여서 질문드립니다.서버와 클라이언트를 연동하는 것을 고려 했을때 타일맵과 충돌 레이어 두 가지 방식 중 어느 것이 더 좋은 방법이 될까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
[40:20] retry count가 2번 올라갔습니다.
retry 버튼을 눌렀을 때 1 -> 2가 되었는데그 이후로 [40:24] 쯤에 2->3으로 또 올라갔는데 BeginPlay외에는 카운트가 올라가는 코드가 없는 거 같은데 왜 2번 올라갔는지 알 수 있을까요?
-
미해결이득우의 언리얼 프로그래밍 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에 어떻게 전달할 수 있는지 궁금합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
강의 22:21에 SweepSingleByChannel 함수 부분 질문 있습니다
안녕하세요 강의 항상 잘 듣고 있습니다!강의에서는 Attack Range = 40.0f로 설정하고 Sweep하는 구체의 반지름을 50.0f로 설정하셨던데 콜리전이 감지되는 부분은 40까지인데 보다 높은 값으로 구체의 반지름을 설정한 이유가 따로 있는지 궁금합니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Player 생성자/Player Init(BeginPlay)
안녕하세요 루키스님,강의를 듣다가 궁금한 것이 생겨서 질문드립니다.강의에서는 이렇게 생성자에서 flipbook이랑 camera를 추가하는데 Init(BeginPlay)에 옮겨서 실행하면 안될지 여쭤봅니다.
-
해결됨이득우의 언리얼 프로그래밍 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() 가 실행되는 이유도 알고 싶습니다....이 두 함수 존재의 설명은 엔진 주석에 나와있어서 어느정도 파악이 됐는데 문제는 코드에서든 블루프린트에서든 호출되는 조건을 잘 모르겠습니다...