묻고 답해요
130만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
9강 20분쯤에 딜리게이트래퍼 질문있습니다.
StateChangeAction.Add(EStageState::READY, FStageChangedDelegateWrapper(FOnStageChangedDelegate::CreateUObject(this, &AABStageGimmick::SetReady)));이부분을 구조체를 선언해서 사용하는 이유가 궁금합니다. StateChangeAction.Add(EStageState::READY, FOnStageChangedDelegate::CreateUObject(this, &AABStageGimmick::SetReady)); 이런식으로 Value를 딜리게이트 자체를 넘겨줄수있는데,굳이 저렇게 구조체를 만드는 이유가 뭔가해서요, 예측하건데 파라미터도 동시에 넣어줄수있도록 하기위함인가요 아니면 따른 이유가 있는건가요 ?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
점프 공격 시 캡슐 위치 질문입니다.
루트 모션 관련해서 알아보다가 실습 마지막 콤보 모션이 생각나서 확인해보니, 점프했다가 찍는데 캡슐 콜리젼 위치는 변하지 않는 것을 확인했습니다. 애니메이션 시퀀스에서 루트모션을 활성화 시키고 해봐도 더 이상해지는 듯하여 질문드렸습니다...캡슐 콜리전이 애니메이션을 따라가게 하려면, 시퀀스 에셋에서 루트모션 활성화하는 것과 애니메이션 블루프린트에서 루트 모션 모드를 활성화하는 것 말고 다른게 있을까요???
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
섹션2 흐름제어 연습문제: Min,Max,Clamp 부분 질문
여기서 처음에 연습문제로Hp를 100으로 두고 MaxHp를 150으로 두었을때1번 키 입력시 데미지 10을 입게하고2번 키 입력시 체력 20을 회복하게 하는 기능을 만드는 연습문제였는데 제가 좀 더 추가해서현재 체력을 확인하는 기능이나0이하로 떨어졌을시 데미지도 더이상 입을수없고 회복도 불가능하게 하거나최대체력이면 최대체력이라서 회복이 불가능하다라는 문구가 나온다거나하는식의 몇가지 응용아닌 응용해서 좀 더 살을 붙여서 풀고있었는데 의문이 드는 버그? 같은게 있어서이게 어째서 일어나는가 싶어서 질문을 드립니다 [현재 HP 확인 노드]키보드 3을 누를 시 HP를 카운트하여 알려준다. [데미지 받는 노드]키보드 1을 누를 시 HP가 0보다 작을 경우 당신은 죽었습니다 라는 문구가 나온다.키보드 1을 누를 시 HP에서 데미지를 마이너스한 HP를 카운트하여 알려준다. [체력회복하는 노드1]키보드 2를 누를시 HP가 0보다 작을 경우 이미 사망하여 회복할 수 없습니다 라는 문구가 나온다.키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 크거나 같을경우 이미 최대 체력입니다 라는 문구가 나온다.키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 작은데 HP에 Heal(20)이 되는 수치만큼 더한 HP가 MaxHP보다 작을 경우 회복된 이후의 HP를 카운트하여 알려준다. [체력회복하는 노드2]키보드 2를 누를시 HP가 0보다 크고 HP가 MaxHP보다 작은데 HP에 Heal(20)이 되는 수치만큼 더한 HP가 MaxHP보다 클 경우 HP를 MaxHP로 세팅하고 최대 체력으로 회복하였습니다라는 문구와 함께 최대HP를 카운트하여 알려준다. 여기서체력확인이랑 데미지는 문제없었는데체력을 회복할 때다른곳에서는 문제가 전혀없었는데체력이 120일때 회복을 하면 현재체력 120+ 체력회복 20으로 체력이 140이 되어야하는데140을 건너뛰고 150으로 가더라구요...데미지 입을때는 140 130 120 110 100 90 80 쭉쭉 건너뛰지않고 잘 내려가고회복할때도 40일때 회복하면 60, 60일때 회복하면 80, 100 120 잘 가다가120일때만 30이 회복되는게 왜그런가 궁금합니다!
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
disassembly 창
dissasembly 창을 띄우고 싶은데, 이처럼 설정을 해줘도 창이 띄워지지 않습니다. 이런 경우, 어떻게 해야 하는지 문의드립니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
RemoveItem 함수에서 아이템 포인터를 nullptr로 바꾸기 전에 delete를 하지 않는 이유가 있나요?
강의에 나온 예제 에서는 Clear 함수로 모든 아이템을 delete하는데 이때 RemoveItem 함수에서 이미 nullptr로 지정된 아이템은 따로 delete 연산을 하지 않아서 Clear 이후에 배열의 포인터는 nullptr인데 힙 메모리에는 데이터가 남는 게 아닌가 싶어서 질문 드립니다.실제로 RemoveItem을 실행하는 아니템들을 따로 배열에 모아 Clear 함수 이후에 데이터를 확인해 보니 아이템들이 존제하는 것을 확인 했습니다.bool Inventory::RemoveItem(Item* _item){ if (_item == nullptr) return false; int slot = FindItemSlot(_item); if (slot < 0) return false; //delete mItem[slot]; // 제거되는 아이템 모음 mRemove[mRemoveIndex] = mItem[slot]; mRemoveIndex++; mItem[slot] = nullptr; mItemCount--; return true;}위에 mRemove에 아이템을 모아 Clear 이후에 중단점을 걸어 데이터를 확인해 보니 아이템의 데이터가 남아있는 것을 확인했습니다.혹시 의도적의로 delete연산을 하지 않은 것 인지 궁금하여 질문 드립니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
16:29 uint8*을 FABCharacterStat*로 다시 형변환 하는이유
항상 친절한 답변 감사합니다. 왜 DataTable의 Value는 uint8*를 쓰게 됐을까가 궁금합니다. TArray<uint8*> ValueArray; DataTable->GetRowMap().GenerateValueArray(ValueArray);GenerateValueArray함수로 데이터 테이블의 모든 벨류를 복사 할때 uint8*형식으로 복사를 진행한후 다시 FABCharacterStat*으로 형변환 하는데요 템플릿으로 FABCharacterStat을 받으면 형변환하지 않고 편하게 사용할 수 있을거 같은데 말이죠.. GPT의 답변인데 이게 맞을까요?DataTable의 각 셀에 저장되는 값은 FString이 아니라 uint8* (unsigned 8-bit integer pointer)로 저장될 때가 있습니다. 이는 다양한 데이터 형식을 다루기 위한 유연성을 제공합니다. uint8*는 메모리의 원시 데이터를 가리키는 포인터로, 이를 사용하여 다양한 데이터 형식을 저장할 수 있습니다. 예를 들어, DataTable에서는 문자열, 숫자, 구조체 등 다양한 데이터를 저장할 수 있습니다. uint8*는 이러한 데이터 형식을 표현하는 데 사용됩니다. 그리고 데이터를 사용할 때는 필요에 따라 해당 데이터 형식으로 변환하여 사용할 수 있습니다.따라서 DataTable이 uint8*를 사용하는 이유는 데이터의 다양성과 유연성을 제공하기 위함이며, 이를 통해 사용자가 필요에 따라 다양한 데이터 형식을 DataTable에 저장하고 활용할 수 있습니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
04:55 구조체 operator+ 부분 확인 질문
코드를 보면 포인터를 이동시켜 각각 더해주는것으로 확인이 되는데요. 이렇게 되려면 구조체가 직렬화 되어야 할거같은데 GENERATED_BODY() 매크로를 선언했기때문에 구조체가 직렬화 돼어서 가능한것이 맞을까요??
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
컴파일 오류 질문드립니다.
1강 18분 경부터 동영상 따라 컴파일하는데 아래와 같은 오류가 나타나며 진행되지 않습니다.. h, cpp 파일 다 초기화하거나 심지어 삭제해도 똑같은 오류가 발생합니다. First Action json written to 'C:\Users\park\AppData\Local\Temp\UnrealBuildTool\319625c3\UnrealBuildTool\77818478.json' Second Action json written to 'C:\Users\park\AppData\Local\Temp\UnrealBuildTool\319625c3\UnrealBuildTool\1429F030.json' Total execution time: 7.67 seconds Action graph is invalid; unable to continue. See log for additional details.
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
locomotion의 정의가 여러개인건가요??
안녕하세요. 좀 더 깊이 알아보다가 오랜만에 궁금하게 생겨서 질문을 올렸습니다.애니메이션 관련해서 메뉴얼이랑 해외 영상들을 좀 자세히 보다보니 로코모션이이라고 해서 루트 모션/ 포즈 와핑/ 모션 와핑 같은 기술적인게 나오고 플러그인으로 로코모션 라이브러리랑 애니메이션 와핑을 추가해서 사용하는 걸 봤습니다...언리얼 엔진의 로코모션 | 언리얼 엔진 5.3 문서 (unrealengine.com) 강의에서 나온 로코모션이 생각나서 다시 확인해보니 여기서는 대략 요약하면 State Machine중 하나를 로코모션이라고 하고 캐시에 저장하고 다른곳에서 사용한다 인것 같은데요. 캐시에 애니메이션을 저장해서 따로 사용하는 구현 방식도 로코모션이라고 하는 건가요??
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
어느 정도 이동하면 애니메이션은 멈추고 이동만 합니다.
안녕하세요 선생님, 애니메이션 블루프린트 수강 중에 있는데, 제가 무슨 설정을 잘못 건드린 건지 세팅을 안한 건지는 몰라도 처음에는 캐릭터가 방향키 대로 애니메이션 렌더링이 잘 되며 이동을 하는데, 계속해서 3~5초 정도 이동하면 갑자기 아래처럼 애니메이션이 고정된 상태로 이동만 합니다..ㅠㅠ 이동을 멈추고 다시 이동 하면 다시 또 렌더링 잘 되는 상태에서 이동을 하는데, 이 또한 3~5초 정도 이동하면 위와 똑같이 애니메이션이 멈춘 상태로 이동만 합니다.. 마우스 이동하는 방향대로 화면 전환이 되고, 그 방향대로 캐릭터가 바라보는 방향도 잘 이동하는데.. 왜 이동을 계속하면 애니메이션 렌더링이 멈춰버릴까요? ㅠㅠ 찾아보려고 해도 안나와서 문의 드립니당(MoveStart 나 MoveStop 에 해당하는 애니메이션들이 잘 반영되는 것으로 보아 애니메이션블루프린트 설정은 잘 한 거 같기는 한데,, 뭐가 문제인지 모르겠네요.. )
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
헤더를 사용하지 않고 BeginPlay 동작 안하는 문제.
// Fill out your copyright notice in the Description page of Project Settings. #include "Game/ABGameMode.h" #include "ABGameMode.h" //#include "Player/ABPlayerController.h" AABGameMode::AABGameMode() { UE_LOG(LogTemp, Warning, TEXT("inflearn1")); static ConstructorHelpers::FClassFinder<APawn> ThirdPersonClassRef(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C")); if (ThirdPersonClassRef.Class) { DefaultPawnClass = ThirdPersonClassRef.Class; } static ConstructorHelpers::FClassFinder<APlayerController> PlayerControllerClassRef(TEXT("/Script/ArenaBattle.ABPlayerController")); if (PlayerControllerClassRef.Class != nullptr) { UE_LOG(LogTemp, Warning, TEXT("PlayerControllerClassRef.Class found: %s"), *PlayerControllerClassRef.Class->GetName()); PlayerControllerClass = PlayerControllerClassRef.Class; } else { UE_LOG(LogTemp, Error, TEXT("PlayerControllerClassRef.Class not found.")); } //PlayerControllerClass = AABPlayerController::StaticClass(); } 위 코드를 입력했을 때 실행 결과는 아래와 같습니다.제가 경로를 잘못 넣었다기에는 수업자료를 그대로 복붙도 해보았으며 /Script/CoreUObject.Class'/Script/ArenaBattle.ABPlayerController'위 경로 또한 5초전에 레퍼런스를 복사해 온 경로입니다
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
프로젝트 재실행시 어떤 작업을 해주어야하나요?
프로젝트를 재실행하게 되면 월드세팅에서 GameMode를 바꾸어 설정해주었던 작업들이 모두 풀려버립니다콘텐츠 드로어(브라우저)에 클래스가 나타나지 않는 오류Ctril+Alt+F11을 입력하면 해결될까 싶어 시도했을때는 크래시가 발생하면서 진행할 수 없어집니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
에셋 블러올시 Material 텍스쳐링크가 다깨져있는데 해결방법이 있을까요?
안녕하세요 강의 다시따라가며 공부하고있습니다. 에디터를끄고 강의자료를 다운받아 제 프로젝트 폴더에 복사붙여넣기 진행하였는데요... 스크린샷처럼 링크가 다끊어져있습니다...마켓플레이스에서 받은 에셋들은 모두 정상인것을보니복사붙여넣기할때 이렇게 끊어지는거 같은데요. 혹시 해결방법을 아실까요?? 잘 알려지지 않은 문제인지 구글에 쳐봐도 나오질 않네요 ㅠㅠ.. 이전강의까진 제가 Material만들고 진행했는데 더이상 진행이 불가해 이렇게 질문 남깁니다.. 수업 외에 확장해 게임을 만들생각이라 프로젝트 명을 다르게 했는데 문제가 될까요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
프레임 제한 코드의 원리가 궁금합니다.
윈도우api 메인 루프 부분에서 프레임 제한을 위해 적은 코드의 원리를 모르겠습니다. uint64 prevTick = 0; uint64 now = ::GetTickCount64();if(now - prevTick >= 10) // 요부분!{ // TODO prevTick = now;} sumTick 을 만들어서 특정 시간이 되면 if 문으로 들어가는 것도 아니고 현재틱-이전틱 이 일정값 이상으로 조건을 걸어주는게 어떻게 프레임을 제한하는지 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
boolean 과 uint32b 의 차이점이 궁금합니다.
본 강의의 데이터 에셋에서도 그렇고언리얼에서는 uint8, uint16, uint32b 로 boolean 의 성질을 갖는 멤버를 자주 선언하던데, 혹시 어떤 차이가 있어서 이렇게 사용하는 걸까요? https://forums.unrealengine.com/t/difference-between-bool-and-uint32-1/362306 이쪽 포럼도 참고해 봤는데 의견이 분분하길래 한번 여쭤봅니다!
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
Add Call to Parent Func 궁금하게 있습니다.
Knight의 EventTick함수가 호출될 때 Creature의 EventTick이 호출되고 Knight의 EventTick함수가 호출 되던데,add call to parent func를 호출할 필요가 있나요??
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
질문
21분 39초 쯤에 빌드를 하고 제가 만든 블루프린트 로직과 강사님의 블루프린트의 로직이 아예 다릅니다 변수도 빠진게 있고요 제가 이벤트들을 직접 생성해야 하는것인가요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
2강 3강이 재생이 안되고 동그라미만 계속 돌고 있는데 왜 안되는지 알 수 있을까요? 다른 강의들은 정상적으로 재생됩니다.
2강 3강이 재생이 안되고 동그라미만 계속 돌고 있는데 왜 안되는지 알 수 있을까요? 다른 강의들은 정상적으로 재생됩니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
해당 강의 수강 후 질문
안녕하세요 루키스님!해당 강의를 완강한 후에 대해, 궁금한 게 있어 질문드립니다.올인원 C++의 내용으로도 MMO Part3 자료구조 알고리즘과 다이렉트x11 강의를 수강하여도 문제가 없을까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
포인터 이동 질문
포인터에 대한 강의를 듣고 포인터에 대한 공부를 하던 도중 이해가 되지 않는 부분이 있어 질문드립니다.Shape** shapes;shpaes = new Shape* [100];shapes[0] = new Circle(); //shapes[1] = new Triangle();shapes[2] = new Triangle();...// shapes[1]을 지우고 포인터 shapes[2]번을 shapes[1]번으로 옮길때저는 현재 힙 영역의 메모리 구조를 이렇게 생각하였고포인터는 어쩌피 주소를 닮는 공간이니delete shapes[1];로 도형을 지우고 shapes[1] = shapes[2]로 하고 shapes[2] = nullptr로 하여이런식으로 진행하면 문제가 없다고 생각했습니다.그런데 프로그램을 종료할때 delete[] shapes를 진행하는 부분에서 Heap Corruption Detected( 메모리에 대한 잘못된 접근이나 이미 해제한 메모리에 대한 접근 ) 오류가 나오게 됩니다.그래서 생각되는 문제가 shapes[1] = shapes[2]로 바로 옮기면 되는 것이 아니라 옮기기 전에 shapes[1]에도 shapes[2] 만큼의 크기를 만들어 주고 shapes[1] = shapes[2]로 옮겨야 되는 것인가 라고 생각하여 코드를shapes[1] = new Circle(); // shapes[2]에 저장된 도형을 만들고*shapes[1] = *shapes[2] // 값을 복사하고delete shapes[2]; // shapes[2]를 지우고shapes[2] = nullptr; // nullptr로 가리키고 있는 곳을 풀어준다.이렇게 코드를 수정하니 delete[] shapes; Heap Corruption Detected에 대한 메모리 오류가 사라졌습니다.여기서 드는 궁금한 점이 포인터는 주소를 담는 바구니(8바이트)인데 왜 shapes[1] = shapes[2]로 가르키는 곳만 바꾸는 것으로 Heap Corruption Detected의 오류가 나며 동작이 안되는지 궁금합니다.