안녕하세요 강사님, 강의 잘 시청하고 있습니다. 월드 파티션 쪽 공부하다가 GTA스타일로 미니맵을 구현해보고 싶어서 질문드립니다. 현재는 단순하게 위에서 아래로 직교로 런타임 단위로 촬영하는 카메라를 도입하여 구현 한 상황입니다. 하지만 GTA같은 거대한 오픈월드의 미니맵을 구현할 때, 모든 엑터를 동적으로 촬영하는 것은 비효율적이라 생각하기에 마음에 들지 않는 상황입니다. 그래서 새롭게 구현하고자 하는 방식은 동적 엑터 와 정적 엑터 를 나눠서 구현하는 것입니다. 동적엑터 는 런타임에 생성되거나 움직이는 엑터 ex) 플레이어나, 적, 미션위치, 기타 등등 2. 정적엑터 런타임에 수정되지 않고 고정되어 있는 엑터 ex) 도로나, 건물 기타 등등 정적 엑터를 미리 Texture로 깔아 놓고 동적 엑터만 위에 깔아두는 식으로 설계하면 성능적으로 더 효율적일꺼라 생각했습니다. 그래서 먼저 맵에 깔려있는 도로나 건물같은 정적 엑터 들을 미리 Texture로 만들 수 있는 방법을 찾아보다가 베이킹이라는 용어도 알게되었고, World Partition Minimap 및 World Partition Minimap Volume이라는 걸 찾았습니다. 이걸 이용해서 현재 레벨의 맵을 베이킹할 수 있다고 하는데 그 방법을 당최 모르겠습니다. 언리얼 5.4에서 도입되었다고 하는데, World Partition Minimap, World Partition Minimap Volume을 이용하면 현재 레벨의 맵을 베이킹할 수 있는지도 궁금하고, 만약 안된다고 하면 현재 레벨의 맵을 어떻게 베이킹할 수 있는지 궁금합니다.
Weapon Animation까지 완료했습니다. 애니메이션이 적용이 안 되는 문제가 있습니다. 임시파일들 지우고 Generatie VS project files... 했습니다. HakAnimLayerSet::SelectBestLayer 쪽에 중단점 찍어서 피스톨 애님 레이어 잘 들어오는거 확인 했습니다. B_Hero_ShooterMannequin 에서 메시에 기본 ABP 설정 했습니다. B_Manny에서 CopyPose ABP 설정 했습니다. 다른 질문 글에서 B_WeaponInstance_Pistol에서 애님셋 Equipped랑 Unequipped에 둘 다 넣어서 해결되었다고 해서 해봤지만 안 됩니다. 아예 총도 안 움직이는 것 보니 Base ABP부터가 문제인 것 같은데 왜 이럴까요? 일단 ABP_Base에서 LogString해서 확인한 결과 껴지긴 했어요. 이 문제를 해결하기 위해 섹션 12를 처음부터 끝까지 다시 들어야 할까요? 저녁에 하루 한 편만 겨우 듣고 있는데;; 저와 같은 문제를 겪으신 분 없나요?
안녕하세요 강사님 애니메이션 강의를 보며 프로젝트에 적용 중인 학생입니다. 블루프린트에서 애니메이션을 구현하는 부분에서 궁금한점이 생겨 질문드립니다. 착지 Additive를 구현 중이고, 떨어지는 상태에 맞는 애니메이션을 에셋을 드롭하여 Apply Addtive에 추가를 해주고 싶은데 특정 상태에 맞는 애니메이션을 선택하는 방법을 찾지 못하고 있습니다. 참고 사진 : State:Land안에 있는 노드 정보 어떻게 하면 M Fall State에 따라서 Controlled Fall과 Uncontrolled Fall에 맞는 애니메이션을 선택하여 Apply Addtive의 Additive에 넣어줄 수 있을까요?
BBAsset 은 BTAsset 을 통해서 가져올 수 있는데, BBAsset 을 변수로 선언하신 이유가 궁금합니다. 또한 RunAI 함수에서 UseBlackboard 를 사용하셨는데, RunBehaviorTree 함수 내부에서 동일한 기능을 수행하고 있습니다. RunBehaviorTree 를 사용하기에 앞서 UseBlackboard 를 사용하신 이유가 궁금합니다.
사진에 보이는 에디터 화면은 UserFacingExperience상속받아 만든 DataAsset인데 MapId나 Experienceid를 눌렀을때 AllowedType대로 동작하지 않고 에셋매니저에 등록된 모든 에셋을 불러옵니다. 혹시 제가 사진에 올린거 말고도 다른것들을 해줘야했나요?
안녕하세요. 강의 초반 버전 관련 영상을 보고 질문 드립니다. 강의마다 언리얼 버전이 바뀌는데, 영상에서 언리얼 버전을 올리면 다시 내릴 수 없다고 말씀 주셨습니다. 그럼 강의를 따라가며 버전을 올렸을 경우, 다음 파트가 낮은 버전이 필요 할 때는 어떻게 진행하면 될까요? 언리얼버전을 5.0버전 부터 5.6버전까지 다 깔아둬야하나요? 유료강의와 다르게 무료강의(실전편)에는 파트마다 버전 표시가 안되어있는데, 이는 전체 버전이 다 호환되는건가요?
지금 게임을 만들고 있는데 강의에 따라 Experience와 GameFeature시스템을 사용하여 제작 중입니다. 그러다 게임 진행상황을 저장하는 기능을 만들려고 하는데 Experience 특성 상 저장한 위치의 맵만 저장하는 것이 아닌 해당 Experience와 사용할 GameFeatures까지 함께 저장해야 할 것 같은데 맞나요? 프로젝트나 요구사항 마다 차이는 있겠지만 마지막 플레이 위치를 저장하고 로드하기 위해서는 어떤 것들을 저장할 필요가 있는지 궁금합니다. 현재 만들고 있는 게임은 RPG입니다.
Blend Depth : 총 몇 단계 자손 본까지 blend 대상으로 포함을 시키겠다. ex pelvis(3) : pelvis로부터 3단계 자손까지 blend 대상으로 포함 ex thigh_r(-1) : 이 본과 그 하위에 있는 본들을 이 blend 대상으로부터 제외 (허벅지 밑에 하위에 종속되어 있는 본들은 다 블렌드를 하지 않을 것) 강의를 들으며 정리한 내용입니다. 제가 잘 이해했는지 헷갈려서 질문드립니다. Base Pose가 재생되는 기본 포즈이고 , Blend Poses 0의 포즈에서 Layer setup을 통해 pelvis(3) 즉 3단계 자손까지 blend 한다. (하지만 음수인 thigh_l , thigh_r의 자손들은 blend하지 않는다.) 라고 이해하면 될까요?
LoadedAssets에 동시접근하는 이슈를 막기 위해, 언리얼 에디터 로드 전에는 쓰레드가 안전하지 않아서라고 말씀하셨는데 AddLoadedAsset을 GetAsset과 GetSubclass 함수에서 호출할텐데 GetAsset과 GetSubclass 함수를 여러 쓰레드에서 동시에 호출할 일이나 가능성이 있나요? 그리고 에디터가 로딩중이라 GC시스템이등이 초기화되지 않아서 쓰레드가 safe하지 않을때는 쓰레드가 의도하지 않은 메모리에 접근할 확률이 있는지도 궁금합니다 (왜 safe하지 않은지가 궁금해요!)
OnExperienceFullLoadComplete() 이 함수가 모든 GameFeatureAction이 로딩이 완료될 때 호출이 되는 거라면 OnExperienceLoaded델리게이트가 브로드캐스팅을 할 때 AddComponent로 추가한 컴포넌트들이 초기화가 완료되었다는 것이 보장되는 시점일까요?
[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
안녕하세요! 아래 코드는 UPrimitiveComponent의 UpdatePhysicsVolume 함수인데, 컴포넌트의 owner인 액터를 가져와서 그대로 Cast<APhysicsVolume>을 했는데, 액터가 캐릭터일 수도 있을 텐데 이게 어떻게 가능한 것인지 모르겠습니다... 감사합니다 // haker: just get the owner Actor and compare Physics Volume's priority APhysicsVolume* V = Cast<APhysicsVolume>(OtherComponent->GetOwner()); if (V && V->Priority > BestPriority) { if (V->IsOverlapInVolume(*this)) { BestPriority = V->Priority; BestVolume = V; } }
안녕하세요 강사님, 강의에 없는 내용인데 강사님은 이 문제를 어떻게 생각하는지에 대해서 질문하려고 합니다. 현재 GTA 모작을 목적으로 프로젝트를 만들고 있고, 캐릭터를 구현해야하는 상황에서 언리얼 5.6에 메인 스트림으로 들어오게된 MetaHuman을 발견했습니다. MetaHuman이 임의로 캐릭터들의 외관을 커스터마이징해주는 툴 정도로 인식하고 있는데 시민들이나 많은 캐릭터가 존재하는 GTA 프로젝트에 적합하다는 생각을 하고 있습니다. MetaHuman을 내 프로젝트에 어떻게 도입할 수 있는지 확실하지 않는 상태에서 유튜브로 강의로 찾아보며 공부를 하고 있는데 아직 관련 정보가 부족하고, MetaHuman을 이용해서 게임을 만든 사례들이 없어서 불확실성에 심적으로 주저하고 있습니다. 이런 상황에서 2가지 질문을 여쭤봅니다. 1. GTA 프로젝트에서 메타휴먼을 적용시키는 것에 대한 장단점에 대한 견해가 궁금합니다. 2. GTA 프로젝트에 메타휴먼이 적합하다고 생각 하신다면 메타휴먼과 관련된 강의를 추가해줄 수 있을까요?
빌드를 잘하고 테스트를 하고 있는데 일단 저는 HLOD레이어를 두가지로만 해서 테스트 해봤는데 이런식으로 멀리 있는 메시들이 마테리얼이 날라간 체로 보이네요. 그리고 중간부분만 날라가는 현상이 있습니다. 이게 빌드 및 Hlod 적용이 된건가요? 그리고 왜 마테리얼이 날라가는 것처럼 보이는지 모르겠네요
안녕하세요! 강의 진도 자체는 이 강좌보다 좀 더 나간 상태인데, UPROPERTY가 현재 강의에서 설명하는 개념이라 여기에 질문을 남겨봅니다. 언리얼 5.1과 1강에서 설명하는 세팅을 다 완료한 비주얼 스튜디오 2022를 이용해 공부 중입니다. UPROPERTY()를 입력 후, 다음 라인에 변수를 선언하려 할 때마다 끝에 ;를 입력 시 갑자기 ;가 지워지거나 어떨 때는 변수 이름의 일부가 같이 지워지기도 합니다. 테스트를 해 보았을 때 GENERATED_BODY()와 같은 매크로 다음 라인에 변수를 선언해도 똑같은 증상이 있는 것으로 보입니다. 다른 라인에 ;를 입력 후 줄바꿈을 지우거나, 혹은 UPROPERTY를 나중에 입력하는 식으로 하면 결과적으론 제대로 입력되지만 영 불편하여 해결법을 찾아보고자 이리저리 찾아봤으나 마땅한 답이 없어서 질문을 드려봅니다.
16:44 코드를 토대로하여 클라이언트를 한명 추가했을 때, 서버쪽에는 서버 자신과 동적으로 추가된 클라이언트인 플레이어컨트롤러의 원본이 있고(둘다 authority), 클라이언트쪽에는 서버 자신이 참여한 형태인, 복제된 simulatedproxy 와 동적으로 추가된 클라이언트의 복사본 autonomousproxy 2개가 있는건가요? 만약 맞다면, 서버에 있는 각각의 serverrotationyaw 속성을 replication하여 클라이언트 각자 소유한 액터의 변경된 속성을 반영하는건가요?