묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 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() 가 실행되는 이유도 알고 싶습니다....이 두 함수 존재의 설명은 엔진 주석에 나와있어서 어느정도 파악이 됐는데 문제는 코드에서든 블루프린트에서든 호출되는 조건을 잘 모르겠습니다...
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
윈도우 API 프레임워크제작) LINK1168 오류 관련 문의 드립니다. (xxx.exe을(를) 쓰기용으로 열 수 없습니다.)
윈도우API 강의 따라해 보고 있는데 어느 순간부터 빌드할 때마다 LINK1168 오류가 납니다. 이에 여기 저기 찾아봤는데 VS에서 이전 실행 창을 제대로 종료하게 되지 않으면 exe 파일이 남아 있게 되어 다시 빌드 시 아래와 같은 오류가 나온다고 하더라구요. 그래서 cmd에서 taskkill 을 통해 남아 있던 exe 파일을 종료하고 다시 빌드 실행하면 잘 되는데, 이때 다시 주석만 달고 빌드를 하게 되면 다시 또 LINK1168 오류가 나네요.. 이거 왜 이런지 계속해서 찾아보고 강의 다시 보면서 코드 다시 쳐보면서 알게 되었는데 아래와 같이 while(true){pfPeakmessage~)이 부분이 기존에 있던 코드에서 수정 및 추가되면서부터 빌드 이후에 종료하여도 exe 파일이 잔재하여 위와 같은 오류가 발생하는 것으로 확인이 됩니다. 위 부분은 게임 관련 작업 시에 어떤 메시지 인풋이 없어도 계속해서 화면 렌더링 하는 부분이라 필수적인 것 같은데,, 위 부분을 냅두자니 계속해서 오류가 발생하고 어떻게 하면 좋을지 모르겠네요ㅠ관련하여 도움 주시면 감사 드리겠습니다.
-
해결됨이득우의 언리얼 프로그래밍 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 - 언리얼 게임 프레임웍의 이해
위치 지정에 대한 질문입니다.
안녕하세요. 강사님!궁금한점이 있어, 이렇게 질문 남깁니다.오른쪽 핸드 소켓을 설정할 때 상대 위치와 회전을 지정하셨는데, 보통 기획적으로 이미 설정된 값으로 설정되는 것인지 아님 아트쪽에서 설정하는지 아님 이 강의처럼 프로그래머가 직접 무기를 들었을 때 어색하지 않는 위치를 찾아서 설정하는지 궁금합니다.또한, 보통 무기가 한 개가 아닌 여러 개의 종류가 있다면, 위치의 변동이 생기지 않을까?..라는 생각이 드는데 이때는 위치와 회전값을 동적으로 할당하나요? 아님 중간 타협점을 찾아 배치하나요???답변 주신다면 더 열심히 공부하겠습니다! 정말 감사합니다!
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
빌드 오류 질문
안녕하세요 루키스님 소켓프로그래밍 입분 20분 초반대에 빌드하셔서 실행하시면 서버와 클라이언트가 잘 실행되서 연결되지만 제 환경에서는 Debug\ServerCore.lib 파일을 열수 없다 오류가 나옵니다.ServerCore를 먼저 빌드 후 해봐도 그렇고 루키스님께서 올려주신 파일을 다운받아 순차적으로 빌드해도 동일한 증상이 나타나는데 무슨 문제인지 알 수 있을까요?