강의를 보며 학습중인데, 강의 중 게임실행화면에서 F8을 눌러 실행과정을 살펴볼 때 저는 F8을 눌러도 게임실행화면에서 나오질 못합니다 ㅠㅠ 검색도 해보고 찾아봤지만 해결을 못하고 있습니다 ㅠㅠ 키세팅이 만진 적이 없는데, 언제 바뀐건지 해결이 안되고 있습니다. 어디서 설정을 해야되는지 도와주세요 ㅠㅠ
안녕하세요 교수님, 교수님의 강의에서 많은 도움을 얻고 있습니다. 양질의 강의에 언제나 감사드립니다. 간단한 토이 프로젝트를 만들던 중 제목과 같은 문제를 마주했습니다. AnimInstance 클래스 안에서 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = Character) TObjectPtr<class UCharacterMovementComponent> Movement; 위와 같이 프로퍼티를 만든 후에 AnimInstance를 상속받은 블루프린트 클래스를 만들었습니다. 하지만, 블루프린트 클래스의 디테일 패널에서 Character 카테고리를 찾아볼 수 없는 문제가 발생했습니다. 언리얼 에디터를 종료하고 빌드를 해봐도 고쳐지지 않고 라이브 코딩을 시도해도 달라지지 않았습니다. 어떻게 해결해야 하는지 알고 싶습니다. 또 현재 프로젝트에 스켈레탈 메쉬를 적용하려 하는데, 구버전인 언리얼 4 버전과 언리얼 5 버전의 스켈레탈 메쉬가 있습니다. 호환성이나 성능, 안정성 측면에서 무엇을 사용하는 것이 더 나은 방법인지 궁금합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
마지막 업로드 파일 기준으로 메모리 릭이 발생되는데요. 서버가 열리지 않았을땐 발생하지 않아서 서버와 연결하는 부분인것 같았고 구글 프로토퍼프때문인가 싶어 검색하여 게임 소멸자에 google::protobuf::ShutdownProtobufLibrary(); 이 구문을 추가했더니 조금 릭이 줄긴했지만 여전히 메모리 릭이 발생합니다. 게임세션이나 서비스가 상호참조되어 스마트 포인터가 해제가 안되나 해서 열심히 찾아봤지만 그부분 문제가 아닌것 같더라구요.. 어느 부분에서 발생하고 어떻게 고쳐야 하는지 알려주시면 감사하겠습니다.
안녕하세요 득우님, 2-15강에서 적군을 처치한 score UI가 제대로 업데이트 되지 않아서 질문을 남기게 되었습니다. 강의대로 따라한 결과, Controller 블루프린트에서 GameOver와 GameClear event는 제대로 동작하여서 게임의 승리와 죽음시 관련 UI들은 잘 spawn됩니다. 하지만, 적군 NPC 처리시 적군 처리 count가 업데이트가 안됩니다. 그러나 적군 처리시 text widget의 숫자의 색깔이 변하는 것으로 보아, WBP_PlayerScore의 custom event들은 잘 트리거 되지만, 아래 그림의 빨간 화살표가 가르키는 New Score 변수가 업데이트 되지 않는다는 것으로 유추해 보았습니다. 그래서 만약 제가 생각한 가정이 맞다면 다음과 같은 궁금증이 생겼습니다. 1. WBP_PlayerScore의 custom event를 트리거하는 부분은 어디에 있는지 2. 각 WBP_PlayerScore의 custom event에 Input으로 들어가는 "New Score"라는 변수는 어떻게 접근하는지 3. Controller에서는 Custom event를 트리거할때 Kismet 접두사가 붙은 C++함수로 컨트롤 했는데, PlayerScore의 custom event도 같은 방식인건지 감사합니다!
현재 프로젝트의 아이템 시스템은 캐릭터가 아이템을 습득 -> 아이템 관련된 함수를 캐릭터에서 직접 구현 방식으로 되어있는데 캐릭터에 스탯 컴포넌트 또는 무기 장착 함수 등을 public 형태로 두고 접촉한 아이템이 캐릭터의 함수를 호출하는 방식으로도 생각을 했습니다 어떤 방법이 더 나은걸까요? 현재 프로젝트(게임이랑 성격이 조금 다릅니다)에서는 UI도 쓰이는데 이 때 레벨마다 UI를 사용할 때도 있고 아닐 때도 있어 캐릭터는 기본 함수 제공, UI에서 Delegate 또는 직접 접근으로 처리중인 상황입니다 어떤 설계가 더 나은지 또 캐릭터에서 아이템 등을 직접 참조하고 아이템 등은 캐릭터를 모르게 설계하신 자세한 이유도 한 번 여쭤보고 싶네요~
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요! 이동할 때 서버에 움직여도 되는지 묻고, 대답이 오면 그때 움직이는 방식으로 만든다고 했을 때, SetDir, SetState같은 것들도 위와 같은 방식을 취하는 게 좋을까요? 이동은 선 보고 후 허락이 오면 이동하는 방식, SetDir과 SetState는 강의에서처럼 먼저 Set하고 서버에 보고하는 방식으로 코드를 짰는데 이게 뭔가 흐름이 꼬이는 부분이 있는 것 같아요. 두 개를 하나의 방식으로 통일하는 게 좋을지, 보통 선 보고 후 허락이 오면 이동하는 방식을 취할 때 SetDir, SetState같은 것들도 똑같이 허락이 오면 바뀌는 방식으로 하는지 궁금합니다. 감사합니다. 강의 잘 보고 있습니다!
현재 저부분에서 AABCharacterNonPlayer을 찾지못한다고 UHT001 오류가 나서 혼자 반나절을 해결해보려했지만 잘 모르겠습니다 제가 어느부분을 체크해보는게 좋을까요 강사님의 파일은 Generate 해서 실행해보면 잘 실행됩니다. 심지어 같은 코드를 붙여넣기해도 같은 오류가 나옵니다. 또한 cpp파일에서도 헤더를 추가했음에도 이러한 ABChracterNonPlayer에 관한 오류가 발생합니다..
Q. 마지막에 삽입한 IsTargetInRange(데코레이터) 에서 Target에 SelfActor를 참조하도록 되어있는데 TargetEnemy를 참조해야 하는 것 아닌가해서요 데코레이터 로직 안에서 Target의 오브젝트 이름을 출력해보니 Player가 아니라 Monster가 찍히더라구요(SelfActor에 값을 할당해준 적도 없는데 왜 들어간 건지는 모르겠지만...)
안녕하세요 교수님 교수님의 강의에서 항상 큰 도움을 얻고 있습니다. 그러다 강의에서 배운 내용을 바탕을 실제 프로젝트에 적용하기 위해 실습을 하던 중 막히는 부분이 생겨 질문글을 작성하게 되었습니다. 스프링 암에 관련된 설정 중 CameraBoom->bUsePawnControlRotation = false; CameraBoom->SetRelativeRotation(FRotator(0.0f, -20.0f, 0.0f)); 위와 같이 설정하여 스프링 암의 로테이션을 변경할 수 있음을 확인하였습니다. 그러나 이 경우, Pawn의 회전에 따라 스프링 암의 회전이 같이 이루어져 플레이하는 시점에서 불편함을 느끼게 되었습니다. 혹시 bUsePawnControlRotation을 true로 유지하면서 스프링암의 로테이션을 변경할 수 있는 방법은 무엇인지 궁금합니다.
안녕하세요 교수님, 2-8강에서 아이템 박스를 먹었을때 캐릭터 무기가 안 먹어지는 문제에 봉착했습니다... 캐릭터 생성자에서 weapon skeletal component는 만들어주었고 아이템 박스를 먹었을때 EquipWeapon 함수도 성공적으로 실행됩니다. Data Asset Table에 무기도 설정해주었구요. 디버깅을 위해서 EquipWeapon 함수를 실행했을시 DataAsset에서 가져온 skeletal mesh의 경로도 다시 한번 뽑아주어서 확인해보았습니다. 하지만, 캐릭터의 무기를 얻질 못하네요... 혹시나 해서 2번째 그림에 보시는 것과 같이 무기의 visibility, 재 rendering 등등을 해보았지만 문제가 해결되지 않아서 여기에 질문을 올립니다~
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 강의가 유익하고 너무 잘 듣고있습니다. 다름이 아니라 제가 계속 들어도 이해가 안가는 부분이 있어서 질문남깁니다.. 사진과 같이 bA의 변수 get(거짓)값을 가져와서 not Boolean 노드와 연결해 ‘참’의 출력값이 set bA의 입력값으로 들어갔잖아요, 그럼 Set bA의 출력값이 set bA의 입력값인 ‘참’이 출력값으로 나와서 branch 노드의 true 값만 출력되어야 하는거 아닌가요?? 랜덤으로 나올 수 있는 로직구조인지가 이해가 안돼서 글 남겨요…! 감사합니다..
궁금한것이 생겨서 아무 의미 없는 액터 에 WidgetComponent를 붙인 다음, WidgetComponent의 GetWidget()이 가지고 있는 OwingPlayer 와 OwningPlayerPawn가 무엇인지 확인해봤더니 nullptr 이 나올 것으로 예상한 것과는 다르게 실험한 액터와 상관없는, 월드에 있는 PlayerController_0 와 그 빙의된 캐릭터인 Character_0가 반환되는 것을 확인했습니다. WidgetComponent를 어떤 액터가 가지고 있던 간에 항상 같은 PlayerController_0와 Character_0가 반환되는 것 같은데요. 제 실험 방식이 원래 말도 안되는 것인지, 아니면 원래 WidgetComponent가 만드는 UserWidget 은 무조건 해당 월드의 LocalPlayer와 그것에 빙의된 Pawn이 고정으로 정해진 것인지가 궁금합니다.
참고 URL : https://forums.unrealengine.com/t/gameplay-ability-system-course-project-development-blog/1419542/14 언리얼 엔진 5.4 이전의 버전에서는 예제 코드를 빌드해도 문제없이 빌드되지만, 언리얼 엔진 5.4버전 부터는 ABStageGimmick.cpp 파일에 #include "Engine/OverlapResult.h" 을 작성해줘야 FOverlapResult과 관련해 발생하는 문제가 사라지는 것 같습니다.