묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
Shipping 빌드의 save 파일은 어디에 저장되나요?
Shipping 빌드로 패키징한 exe 파일로 게임 진행 시 RetryCount를 보관하는 save 파일은 어디에 어떤 형태로 저장되는 지 궁금합니다.
-
해결됨이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
사용된 코드에 담긴 원리가 궁금합니다
안녕하세요 교수님.교수님께서 만들어주시는 양질의 강의에 언제나 많은 배움을 얻게 되어 감사드립니다.강의를 듣던 도중 궁금한 점이 생겨 이렇게 질문을 작성하게 되었습니다.ShoulderLook()에서 플레이어 컨트롤러의 로테이션 Yaw값과 Pitch값을 더하는 것은 알게 되었지만,다음의 코드들이 작동하는 원리를 자세히 이해하지 못한 것 같습니다.특히 이 코드들이 작동하는 수학적 원리가 어떻게 되는지 알고 싶습니다.추가적으로 위의 코드들이 Quater 뷰와 Shoulder 뷰를 구현하는 최선의 방법인지, 다른 더 간소화할 수 있는 방법이 있다면 무엇인지 알려주시면 감사하겠습니다.다시 한번 좋은 강의를 만들어주셔서 감사합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
캐릭터 WASD키 방향 관련 설정 질문입니다.
입력키를 사진처럼 설정하면 W(앞), D(우), S(뒤), A(좌) 방향으로 제대로 움직이는데원래 설정되어 있던 WSDA순서로 설정하면 W(우), D(뒤), S(좌),A(앞) 이렇게 움직입니다. 일반적으로 DASW, Up Down Right Left 순서를 어떻게 맞추면 될까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
37:11에서 프로젝트 실행시 경로를 찾을 수 없다는 에러가 뜹니다
37:11에서 프로젝트 실행시 경로를 찾을 수 없다는 에러가 뜹니다.언리얼 5.1.1버전이고 코드는 복붙했습니다.실행시에 아래처럼 파일 경로를 찾을 수 없다는 에러가 뜨는데 어떻게 해결해야하나요??
-
미해결언리얼 엔진4 입문 (C++ 기반)
언리얼 에디터 상에서 만든 구조체를 C++ 상에서 불러올수 있나요?
제목처럼 언리얼 에디터 상에서 구조체 블루프린트?를 만들었는데요 여기에 선언된 변수에 들어있는 값을리플렉션 시스템을 활용해 C++ 상에서 불러올수 있나요??
-
미해결[입문자를 위한 UE5] Part2. 언리얼 엔진 2D 게임 개발 입문
sprite vs texture 수업자료 다운로드가 안됩니다.
sprite vs texture 수업자료 다운로드가 안됩니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
SocketUtils 관련해서 질문 있습니다.
assert는 release 모드에서 사라지는 것으로 알고있는데그래서 그런가 Release모드에서 작동시킬 때 서버가 꺼지는 현상이 발생합니다.assert를 if 문으로 수정했더니 동작은 되는데,이게 해결법인가요. 아니면 서버가 Debug만 고려된건가요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
아이템 박스가 안먹어집니다
void ASSItemBoxActor::OnOverlapBegin(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepHitResult) { //오버랩 확인 UE_LOG(LogTemp, Warning, TEXT("OnOverlapBegin triggered")); if (nullptr == Item) { Destroy(); return; } ISSCharacterItemInterface* OverlappingPawn = Cast<ISSCharacterItemInterface>(OtherActor); if (OverlappingPawn) { OverlappingPawn-> TakeItem(Item); } Effect->Activate(true); Mesh->SetHiddenInGame(true); SetActorEnableCollision(false); Effect->OnSystemFinished.AddDynamic(this, &ASSItemBoxActor::OnEffectFinished); }선생님 자료 코드랑 비교도 다 해보았는데 틀린 부분은 없는데 박스를 설치하고 다가가면 벽처럼 물체로 인식하고 가도 터지거나 이펙트가 일어나지 않습니다 로그도 넣어봣는데 OnOverlapBegin 진입 자체가 안됩니다 에디터에서 무언가 설정해야 할까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
데코레이터 구현 질문..
수업에서는 AttackInRange 데코레이터를 CalculateRawConditionValue() 만 구현해서 사용했는데요. aborts 발동 조건같은걸 따로 지정안해도 자동으로 되는 건가요?? BlackBoard 데코레이터의 경우에는 값이나 결과? 가 바뀌면 aborts가 발동되는 걸로 이해해서 코드를 보니 상당히 복잡하게 aborts 구현이 되어있더라구요.... 어설프게 이해한 바로는 블랙보드의 키에 델리게이트 등록해서 값 변경 이벤트를받아 ConditionalFlowAbort() 라는 함수를 호출하고 있습니다. 이 과정에서 CalculateRawConditionValue()가 또 호출되고 활성/비활성으로 나뉘어져 뭔가 복잡하게 수행하는데요. 결국 aborts를 해야하는지 말아야하는지 체크는 ConditionalFlowAbort() 를 호출함으로서 시작되는 것 같아 보이는데....이걸 안 한 AttackInRange 데코레이터는 aborts 가 어떻게 동작하는지 알고 싶습니다..
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
ASC GiveAbility 질문드립니다.
안녕하세요.저는 무기 아이템 액터가 무기를 휘두르는 몽타주를 재생하는 어빌리티를 멤버 변수로 갖고 있게 하고,해당 무기를 장착했을 때 무기의 어빌리티를 매개변수로 전달받아 어빌리티를 활성화 하도록 구현하려고 하는데요.이 경우에 어빌리티를 활성화하고 등록된 어빌리티를 다시 제거해 줄 필요는 없을까요?같은 무기를 여러번 장착할 수도 있을텐데 ASC에 같은 어빌리티 여러 개가 등록되어 있는게 문제가 될 수도 있지 않나 해서 질문드립니다.
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
MSB3073 빌드 에러
안녕하세요 수업자료 비주얼 스튜디오에서 빌드시 아래 에러가 발생하는데 무엇이 문제일가요?Severity Code Description Project File Line Suppression State DetailsError MSB3073 The command ""C:\Program Files\Epic Games\UE_5.1\Engine\Build\BatchFiles\Build.bat" ArenaBattleEditor Win64 Development -Project="F:\Workspace\Unreal5\Inf_LDW_GAS_Lecture2\ArenaBattleGAS.uproject" -WaitMutex -FromMsBuild" exited with code 6. ArenaBattleGAS C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v170\Microsoft.MakeFile.Targets 44
-
해결됨이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
블록 태그 관련 질문
안녕하세요. 블록 태그 관련해서 질문 있습니다.강의에서는 각 어빌리티별로 블록할 태그들을 설정하고 있는데 이런 방식이라면 새로운 태그를 추가할 때마다 기존에 있던 어빌리티들의 블록할 태그에 해당 태그를 일일이 추가해줘야 하잖아요? enum 클래스를 사용해서 state패턴으로 구현하는 방법처럼 더 나은 방식은 없을까요?일반적으로 게임에서는 두 가지 이상의 행위를 동시에 하는 것은 막고 있기 때문에 블록 태그 같은 부정문 방식보다는 state패턴처럼 긍정문 방식이 더 좋을 것 같아 질문합니다.
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
뷰포트 play 버튼 클릭시 카메라 초기화
안녕하세요 강의를 보고 열심히 따라해보고 있습니다. 뷰포트에서 play 버튼을 누르는데, 항상 origin 위치로 초기화가 되더라구요. 강사님께서 마지막 슬라임 경주 강의 찍으실 때 보면, play 버튼 누르면 편집하던 위치에서 시작되던데, 어떻게 그렇게 할 수 있나요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
delegate wrapper 사용 이유
안녕하세요 좋은 강의 정말 감사드립니다.다름이 아니라 delegate wrapper 사용 이유가 궁금하여 질문 드립니다.선생님께서 delegate를 다수 배열로 관리하기 해야 하는데 이 자체를 인자로 쓸 수 없다고 하신 부분이 잘 이해가 되지가 않습니다. 어느 부분을 인자로 쓸 수 없는지에 대해 구체적으로 말씀해주실 수 있나요?FTakeItemDelegateWrapper 랩퍼 구조체가 아닌 FOnTakeItemDelegate 델리게이트를 TArray 배열에 넣을 수도 있고이런 식으로 바인드도 되고, 실행도 되는데 왜 델리게이트 랩퍼 구조체를 따로 만들어야하는지가 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
enhanced input 키 동시입력
안녕하세요 교수님, void APACharacterPlayer::Move(const FInputActionValue& Value) { FVector2D MovementVector = Value.Get<FVector2D>(); const FRotator Rotation = Controller->GetControlRotation(); const FRotator YawRotation(0, Rotation.Yaw, 0); FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X); FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y); if (bIsRunning) { if (MovementVector.Y != 0) MovementVector.Y = 0; if (MovementVector.X == -1) MovementVector.X = 1; AddMovementInput(ForwardDirection, MovementVector.X); } else { if (MovementVector.Y != 0 || MovementVector.X == -1) bCanSprint = false; else bCanSprint = true; AddMovementInput(ForwardDirection, MovementVector.X); AddMovementInput(RightDirection, MovementVector.Y); UE_LOG(LogTemp, Log, TEXT("X = %f y = %f"),ForwardDirection.X, RightDirection.Y); } } 위 코드는 3인칭 게임플레이를 위해 강의 기반으로 작성한 코드입니다. bCanSprint 및 Running 로직은 무시하셔도 됩니다.발생한 문제는 키의 동시 입력을 받을 때 입니다. 왼쪽 방향키를 누른 채로 오른쪽 방향키를 누르면 MovementVector 값이 1.0 으로 변해서 오른쪽으로 잘 이동 하는데, 오른쪽 방향키를 누른 채로 왼쪽 방향키를 누르면 벡터 값이 변하지 않아 계속 오른쪽으로 갑니다. 똑같이 앞 방향키를 누른 채로 뒷 방향키를 누르면 뒤로 가지는데, 뒷 방향키를 누른채로는 앞으로 갈 수가 없습니다. 물론 따로따로 한 버튼씩 서로 역이 되는 방향키를 누를 때는 값이 알맞게 잘 변경됩니다. 원하는 로직은 두 가지 중에 하나입니다.동시입력이 들어왔을 경우 마지막 입력 방향으로 이동동시입력이 서로 반대 방향으로 들어왔을 경우 상쇄되어 정지 로직을 어떻게 수정해야 할까요? 동시입력(오른쪽 홀드+왼쪽이동, 뒤쪽홀드 + 앞쪽이동) 할 때만 벡터값이 제대로 변하지 않는 이유를 못 찾겠습니다..
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
이벤트 vs 함수 차이
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이벤트 경우에 시작되는 지점은 알 수 있지만 끝나는 시기를 모른다는 의미를 잘 모르겠습니다. 일단 실행되면 끝날 때까지 이벤트 함수에 머무는 것이 아니라 비동기적으로 처리하는 건가요? 딜레이를 이벤트에서는 사용가능하지만 함수에서는 사용하지 못 하는 게 함수는 점유율을 100% 다 가져가서 다른 코드가 실행될 여지를 빼았기 때문인가요? 반대로 이벤트는 점유율이 왔다갔다 왕복하면서 실행이 되는 건가요?
-
미해결[입문자를 위한 UE5] Part3. 언리얼 엔진 3D 게임 개발 입문
애니메이션 커브 Rotation관련 질문드립니다.
섹션3 애니메이션 - 애니메이션 커브강의에서 궁금한점이 있느데요.Get Curve Value가 리턴하는 값을 print text 함수를 통해서 로그를 찍어보았는데, Right로 돌리는걸 기준으로 해서 제 예상에는 -90, -80, -70 ... 0 이렇게 될거라고 예상을 했는데, 실제로 로그를 찍어보니, -1, -10, -20, ... -80, -75, -70, .... 0 이런느낌으로 찍히는데, 이유를 잘 모르겠습니다.Right Animation에서 Rotation Curve는 -90~0으로 세팅되어있습니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
단일쓰레드로 어디까지 커버가 될까요?
루키스님 강의 잘 듣고 여러가지 연동을 시도해서 컨텐츠를 만드는 중인데요 지금은 데이터나 오브젝트들이 많지 않아서 별 문제가 없는데 나중에 3d 포폴도 이걸 기반으로 만들고 싶어서 멀티쓰레드를 사용해야할 정도는 어느정도 되야하는지가 궁긍합니다. 그리고 마지막에 aws 에 서버 올리시는 부분을 잠깐 언급해주셨는데 c++서버강의엔 그런부분이 없는것 같아 그부분 강의 예정이 있는지도, 아니면 관련 자료나 공부를 어떻게 해야하는지도 궁급합니다
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Static UserManager um을 포인터로 만들어서 리턴 하면 안되는 이유가 궁금합니다.
아래의 코드와 같이 포인터로 변수를 만들어줘서 넘겨주면 AddUser() 함수를 부를때 '_userCount' 올려주는 변수에서 '액세스 위반 this가 nullptr 입니다.' 라고 뜹니다.그 이유가 객체를 생성해 주지 않았기 때문에 'nullptr'이 생성 되는 건가요? 이해가 잘 되지 않는 부분이 static 함수를 부를 때 변수를 초기화 되어 전역 변수로 사용되는데, 포인터는 객체가 생성되지 않는 것 같더라구요.그래서 new UserManager( ) 를 통해 동적 할당을 하니 객체가 하나씩 생기는 문제가 발생하고, static 메모리와 동적 할당 되는 메모리 위치(?), 특성(?)이 달라서 생기는 문제인가 싶습니다.public: UserManager() :_userCount(0) {} static UserManager* GetInstance() { static UserManager* um = new UserManager(); um->_userCount = 0; return um; } 주저리 주저리 궁금한 내용을 적다보니 제대로 설명했는지 모르겠네요... ㅡㅜ 답변해 주신다면 감사하겠습니다. 혹시 몰라 _userCount를 생성자로 초기화 시켜줬습니다.class UserManager { public: UserManager() :_userCount(0) {} static UserManager* GetInstance() { static UserManager* um = nullptr; return um; } public: void AddUser() { _userCount++; } int GetUserCount() { return _userCount; } private: int _userCount = 0; };
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
리소스 파일 경로
강사님 혹시 제 코드와 강사님 코드를 비교하려고 파일을 다운받았는데요 리소스파일 이미지 경로가 틀려서 확인을 못하는데 혹시 어디서 변경할 수 있는지 알 수 있을까요? 오류는 계속 이렇게 뜹니다.