캐릭터 클래스는 처음부터 캡슐, 메시, 캐릭터 무브먼트 컴포넌트가 있는데요. 무브먼트 컴포넌트가 클라이언트와 동기화시키고 보정하는 기능이 있는 건 알 것 같기도 한데 이게 mesh도 영향을 받나요? 리슨 서버에선 클라이언트 소유 캐릭터의 mesh를 강제로 이동시키기나 add relative rotation 해도 default 값에서 변하지 않고 고정됩니다. 반면에 서버 환경에서 서버 소유 캐릭터나 클라이언트 환경에서 클라 소유 캐릭터의 mesh를 이동/회전 시키면 일단 적용은 됩니다. (다만 동기화는 안됩니다.) 리슨서버에서 클라이언트 소유 캐릭터의 mesh를 transform 수정 가능하게 할 방법은 아예 없나요?
안녕하세요! 좋은 강의 감사합니다. 수업을 듣다가 궁금한 점이, staff 클래스는 ILessonInterface를 상속받지 않기 때문에, staff 인스턴스를 ILessonInterface로 형변환 시 형변환이 실패하여 nullptr이 반환되는 것을 볼 수 있었습니다. 그렇다면 자식 클래스(인스턴스)가 상속받지 않은 클래스로 형변환이 될 시 무조건적으로 형변환이 실패한다고 보면 될까요?
안녕하세요 강사님! 항상 열심히 강의를 보며 공부하고 있습니다. 6강 예제를 따라하던 도중 문제가 생겨 해결해보려했으나 도저히 방도가 안보여 질문드립니다. 비주얼 스튜디오에서 빌드로 실행하면 모두 정상적으로 작동이 되는 것 같습니다. 하지만 에디터에서 실행하거나, 배치파일로 실행하거나, 에픽 런쳐로 실행하거나, 프로젝트파일로 실행시킬 때 모두 분수대가 회전되지않습니다.(분수대뿐만이 아닌 모든 ab네트워크로그 매크로도 나오지 않습니다. 로테이트레이트값도 아예 보이지 않습니다.) 라이브 코딩 후에는 분수대도 잘 회전되고 매크로도 나오나, 클라이언트에서는 분수대가 여전히 회전하지않고, YAW값 매크로도 나오지 않습니다.
c++ 에서 replicated/replicatedUsing 이나 블루프린트에서 replicated/RepNotify 설정하는것은 동기화를 반드시 보장해준다고 알고있는데요. 그래서 연결 이슈가 발생됐을 시, 보존했다가 정상 연결되면 그때 다시 데이터 보내준다고 이해했습니다. 그러면 리슨서버에 클라1이 접속되어 있고 이후 2번째 클라가 접속했을 때 이미 초기화가 끝나고 tick이 진행중이던 2개의 플레이어 캐릭터(서버,클라1)가 클라2 환경에서 simulated클라 역할로 생성되어 각각 beginplay가 진행될텐데요. 이때 리플리케이트가 켜져있는 프로퍼티나 컴포넌트 상태 등등 변경된 사항들이 복제되어 적용된 상태로 생성되는 건가요? 초기값과 다르기때문에 onRep_~~() 함수도 호출되면서?
어떤 액터의 현재 로컬 역할이 authority이든, Simulated 클라이언트든, Autonomous 클라이언트든 똑같이 beginPlay()와 Tick() 같은 건 일단 실행이 되는 건가요?? simulated 클라 역할인 액터는 개념적으론 로직이 수행되선 안되는데 그럼에도 beginplay(), Tick() 같은건 일단 실행이 되기때문에 if문으로 구분을 해야하는거죠?
안녕하세요. GAS Ability 의 Cooldown GameplayEffect (이하 GE) 를 등록하는 부분에 대해 질문이 있습니다. 먼저 실습을 5.4 버전으로 진행하고 있음을 알립니다. 강의 내용에서는 Cooldown GE 적용 시 Cooldown GE BP 를 생성하여 HasDuration 옵션으로 GameplayTag 를 설정 Cooldown을 적용하려는 GA의 Ability Block Tag 에 Cooldown GE에 설정한 GameplayTag를 추가 위와 같이 진행을 해주셨는데, 5.4에서는 2번 과정이 불필요했습니다. 엔진 코드 내부에서는 CheckCooldown 함수 내부에서 Cooldown GE 의 GrantedTag로 직접 쿨다운 체크를 하는걸로 보입니다. 이 부분이 5.4가 되면서 개선된 부분일까요?
안녕하세요 강의 잘 듣고 있습니다. Unreal 프로젝트를 Git에 업로드하면서, Unreal Asset의 용량이 커서 무료 Git 용량을 초과하는 경험을 몇 번 했습니다. 이런 문제의 해결법으로 gitignore에서 에셋 폴더를 제외해서 불필요한 에셋이 업로드되는 걸 막고, ArenaBattle 폴더에는 사용할 에셋 파일만 복사해놓고 git에 업로드하는 방식을 사용해도 좋을지 궁금합니다. 그리고 실제 협업을 할 때 에셋을 git에 업로드할 때 용량관리를 어떻게 하는지 궁금합니다!
안녕하세요. 10:33초 쯤에 BP_AB_CharacterPlayer 로 작업하시는데 제 프로젝트에는 그런 클래스가 보이지 않네요 제가 뭘 놓치면서 진행하고있었나요? 뿐만아니라 BP_ABGameMode, ABPlayer_Controller이런것들이 안보입니다. 파일 탐색기에서 봤을땐 Controller, GameMode,Congratulation이런 파일들이 있는데 에디터에선 저렇게 3개 밖에 보이지않네요... 물론 BP_AB_CharacterPlayer는 파일에도 없습니ㅏㄷ.
첨부된 예습자료는 실행이 되지 않아 Migrate을 진행할 수 없습니다. 강의 초반에 Interact와 Interactables를 복사하기로 가져오면 메시는 가져오지 못하는 것 같습니다. 강의와 같이 B_Chest_002를 레벨에 배치하면 메시가 없는 상태 입니다. 강의에서 MIgrate 할 때 보면 다른 여러 파일들도 필요해 보입니다. 그렇다고 모두 복사하면 실행이 안되는 문제가 있습니다.
안녕하세요 막 강의를 시작해보려고하는데 첫 챕터 부터 막히네요 ㅜ 구글링도 해보고 안되서 문의 드립니다 첫 빌드때 d1.uproject generate 후 빌드를 해보면 이런 오류가 나는데 혹시 어떤 부분이 문제일까요,,?"D:\UE_5.4\Engine\Build\BatchFiles\Build.bat LyraEditor Win64 DebugGame -Project="D:\YJ\YJ\GP\D1\D1.uproject" -WaitMutex -FromMsBuild -architecture=x64" 명령이 종료되었습니다(코드: 6).
첫 조건문의 조건 중 하나가 ViewTarget == GetInstigator() 일 때 인데 나에게 데미지를 가한 가해자의 정보를 넘겨줘야 한다. 라는 말이 조금 헷갈려서 질문 드립니다. ViewTarget 에게 데미지를 받은 액터가 연관성이 생기는 것이 맞나요? ViewTarget 에게 데미지를 가한 액터가 연관성이 생기는 것이 맞나요? 해당 코드만 읽었을 땐 ViewTarget 이 가해자가 되어야 한다고 이해했는데 이해한게 맞는지 재차 확인을 하고싶어 질문 남깁니다
재복습 중인데 이해가 안가는 부분이 있습니다. 보통 모든게 마무리 되고서 최종적으로 호출되는 함수가 BeginPlay라고 생각했는데요. 다음 사진에서 서버 PC 기준으로 클라 접속 시에는 BeginPlay가 먼저 호출되고서 PostLogin에서 빙의를 시작하는 흐름이 이해가 안갑니다. 제가 놓치거나 잘못 이해한 부분이 있을까요?
지금 AI가 플레이어가 공격할 때 플레이어가 움직이거나 또는 AI 뒤쪽으로 이동하면 AI가 플레이어를 향해 회전을 해야 하는데 회전을 하지 않습니다.. 강의 코드와 한 줄 정도 다른데 왜 안되는 것인지 모르겠습니다.. EBTNodeResult::Type UBTTask_Turn::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) { Super::ExecuteTask(OwnerComp, NodeMemory); APawn* NPC = OwnerComp.GetAIOwner()->GetPawn(); // NPC 가져오기 if (NPC == nullptr) { return EBTNodeResult::Failed; } FName PlayerName = TEXT("Target"); APawn* Player = Cast<APawn>(OwnerComp.GetBlackboardComponent()->GetValueAsObject(PlayerName)); // Target 가져오기 if (Player == nullptr) { return EBTNodeResult::Failed; } float TurnSpeed = 1.0f; FVector LookTargetVector = Player->GetActorLocation() - NPC->GetActorLocation(); FRotator LookTarget = FRotator(0.0f, LookTargetVector.Rotation().Yaw, 0.0f); // 회전 값 NPC->SetActorRotation(FMath::RInterpTo(NPC->GetActorRotation(), LookTarget, GetWorld()->GetDeltaSeconds(), TurnSpeed)); return EBTNodeResult::Succeeded; } 그리고 갑자기 루트 노드에서 멈춥니다.. 하위 노드들을 실행을 해야 하는데 루트노드에만 노란색으로 고정되어있는데 뭐를 확인해야 하나요?