언리얼에는 다른 URL(서버)로 이동하는 것을 Travel 이라고 부른다. 여기서 UWorld::ServerTravel 이란 Server내의 모든 Client들을 해당 URL로 Travel시키는 것이고 APlayerController::ClientTravel 은 혼자 다른 URL로 넘어가는 것이라고 한다. 라고 메모를 했습니다. 강사님께서 ServerTravel은 모든 클라이언트가 다같이 "Map이동"이라고 말씀하셨고 ClientTravel은 "다른데디로 이동" 이라고 말씀하셨는데 그럼 ServerTravel은 서버가 변하지는 않는 것인지 ClientTravel로 맵만 A에서 B로 변경했을때도 데디서버의 변경이 일어나는 것인지 궁금합니다.
[9강. 아이템 추가]의 6:56에서 "인티저 켜기" 항목이 없고 검색 시 Utilities > Flow Control > Switch에 Switch on ENiagara_IntegerConversion Switch on EFieldIntegerType 이렇게 2가지만 검색됩니다. 각각 추가 시 다음과 같이 되어 있는데 강의의 내용과 동일하게 인티저 켜기를 등록하려면 추가로 진행해야 하는 항목이 있을까요? 사용 중인 에디터는 5.5.4 (5.5.4-40574608+++UE5+Release-5.5) 입니다.
HeroComponent를 라이라 따라 구현했는데 5.5버전이라서 그런지 IMC를 넣어주더라고요? 그래서 따라했는데 ShooterCore플러그인 만들고 부터인가 뭐가 꼬였는지 IMC가 null값이 되더군요. 분명 BP에서는 잘 넣어줬는데. BreakPoint 찍고 보니까 분명히 이름이 잘 찍히는데 이름 앞에 nullptr이 나와있었습니다.... 문제는 반만 해결했는데요. IMC 복사해서 새로 만들어진 걸로 바꾸니까 잘 인식하더군요. 근데 문제는 에디터 껏다 키면 먹통이라 복붙해야합니다. GameFeatureAction에서 AddInputBinding, AddInputContexetMapping 둘 다 추가하면 해결이 될런지 모르겠네요. Hero캐릭터(라이라 파랗고 빨간 마네킹) 만들때도 Hero컴포넌트에 IMC (강의에선 PMC) 넣었던가요 기억이 안 나네요. 아무튼 이런 이슈가 있는데 왜 이런지 모르겠어요.
한바퀴 듣고 이제 데디케이트서버 환경에서 돌아가게 라이라 프로젝트도 참고하면서 다시 클론코딩 하고 있는데, 궁금한 점이 있습니다. 강의와 라이라 프로젝트에서 차이점이 있어서 고민을 해봤는데 잘 모르겠어요. void ULyraPawnExtensionComponent::SetPawnData(const ULyraPawnData* InPawnData) { check(InPawnData); APawn* Pawn = GetPawnChecked<APawn>(); if (Pawn->GetLocalRole() != ROLE_Authority) { return; } if (PawnData) { UE_LOG(LogLyra, Error, TEXT("Trying to set PawnData [%s] on pawn [%s] that already has valid PawnData [%s]."), *GetNameSafe(InPawnData), *GetNameSafe(Pawn), *GetNameSafe(PawnData)); return; } PawnData = InPawnData; Pawn->ForceNetUpdate(); CheckDefaultInitialization(); } 강의랑 차이점은 Pawn->ForceNetUpdate, CheckDefaultInitialization 입니다. 넷 업데이트야 멀티플레이어 환경이라 강의에선 안 했지만 CheckDefaultInitialization는 라이라에서 왜 불러주는 걸까요? 이거 여기서 명시적으로 불러줘야 초기화 관리가 되는 걸까요? BeginPlay에서도 부르고 SetupPlayerInputComponent, OnActorInitStateChanged에서도 어차피 부르고 있는데. 그냥 혹시 뭔 일이 있어서 초기화가 안 됐을 수도 있으니까 추가한 그런 느낌일까요?
안녕하세요! 올려주신 강의 잘 듣고 있습니다! 작업을 하다보니 궁금한부분이 생겨서요.. 지금은 캐릭터가 바라보는 방향으로 구르고 있는데 LockOn을 한 상태에서는 S키를 눌러도 적을 바라보면서 뒤로가져서 뒤쪽방향으로 구르지는 못하고 있는 문제를 만났습니다. 혹시 이 부분은 어떤 방법으로 해결하면 좋을까요? 그리고 개인적으로 궁금한 부분이 있는데 구르기가 끝나고 원하는 방향으로 구르고 싶을때 캐릭터의 회전이 늦어지면 회전을 하다가 원하는 방향으로 안나가는데 이 부분도 어떤 방법으로 해결해야하는지 여쭤보고싶습니다..!
안녕하세요. UABGA_AttackHitCheck::OnTraceResultCallback 구현에서 질문 드릴 게 있습니다. UABCharacterAttributeSet* TargetAttribute = const_cast<UABCharacterAttributeSet*>(TargetASC->GetSet<UABCharacterAttributeSet>()); 게임 로직 만들면서 AttributeSet 의 값을 변경해야 할 경우가 많을 것 같은데요. ASC 에서 변경가능한 AttributeSet 의 참조나 mutable 포인터를 반환하는 함수를 구현하지 않은 이유가 있나요? const_cast 로 억지로 const 를 벗겨내는 게 자연스럽게 느껴지진 않아서요. 다른 곳에서 값을 변경하게 코드를 작성해야 하는 디자인 측면이 있는 건지, 경험적인 정책 측면이 있는 건지 궁금해서 질문 드렸습니다.
안녕하세요 강사님! 강의에서 이해가 되지 않는 부분과 구현 관련해서 2개의 질문이 있습니다. 강의에서 이해되지 않는 부분은 강의 14초경 특정 물체를 바라보는데 고개가 뒤집히는 현상이 있잖아요. 그냥 바로 해당 물체의 위치를 건네줬을 때는 고개가 뒤집히는 문제가 발생했고 블루프린트 내에 구체를 만들어 해당 구체의 위치를 뽑아서 해당 위치를 바라보게 세팅해서 그 문제를 해결했는데 이게 뭔 차이인지를 모르겠습니다. 컨트롤릭에 해당 위치 벡터를 전달할 때 둘 다 월드상에 있는 좌표로 변환되어 전달하므로 똑같은 거 아닌가요? ------------- 구현 관련 질문입니다. 구현하고자 한 기능은 캐릭터가 조준을 하고 있지 않을 때, 카메라가 바라보는 방향으로 바라보게 만들면서 특정 각도를 넘어간다면 그냥 정면을 바라보게끔 하는 것입니다. 여기서 캐릭터가 스폰된 직후의 정면 벡터에서 왼쪽으로 움직이고 그 방향을 바라본다음 마우스를 돌려 에임오프셋을 조절하는 경우는 정상적으로 잘 작동하는데 나머지 다른 방향에서 바라보는 경우에는 얼굴이 뒤집혀서 작동을합니다 1. 정상 2. 비정상 컨트롤릭에 있는 스켈리톤와 실제 엑터가 바라보는 방향과 같다면 정상적으로 작동하는 것 같다고 추측하고 있습니다. 이런 상황에서 좀 골머리를 앓고 있는데 어떻게 해결해야하는걸까요? 시간을 너무 많이 쓰는것같아 질문드립니다. ㅠ ------- 구글드라이브 링크 https://drive.google.com/file/d/1tZqaSfJt1aqpmpp4Yp2Vl6iMDFvqQ3zR/view?usp=sharing
쿼터뷰, 솔더뷰 간 전환은 잘되구요. 쿼터뷰일 때는 움직이는건 잘되지만 캐릭터가 움직이는 방향으로 회전하지 않고 솔더뷰일 때는 움직이지는 못하지만 카메라를 돌리는건 잘되는 상황입니다. 올려주신 자료 다운로드 해서 실행을 해봤는데 올려주신 프로젝트는 잘 실행되더라구요. 에러가 뜨는 것도 아니라 강의와 올려주신 프로젝트를 여러번 돌려보며 소스코드, 데이터 에셋, 캐릭터 블루프린트의 설정들, 인풋액션, 인풋매핑컨텍스트 모두 비교 확인해봤지만 달라지는 건 없었습니다. 언리얼 캐시 제거 후 다시 실행도 해봤지만 그대로 인데 도대체 뭐가 문제일까요?
현재 미니맵을 구현하고 있습니다. UIExtension을 사용해서 구현하는 것이 적절해 보이는데 문제는 미니맵 기능을 제공하는지의 여부는 Experience에 달려있고 미니맵들 중 어떤 것을 사용할지는 레벨에 종속되어 있습니다. 그렇다면 이 둘을 가지고 있는 UserFacingExperienceDefinition을 확장하는 것이 좋을까요? 라이라의 기본 골자를 변형시켜도 될지 최대한 유지하며 살만 붙일지 선택하기가 어렵네요
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part5: UE5 & IOCP 서버 연동
Hello Master 🙂 I would like to ask wich method is prefered in wich case. Most mmo code i seen either go packet way like in this course or Client send commands wich contains input + mouse postion + fields that allow you to for example specify operation type like interact, consume etc. Server respond each tick with snapshot of zone you are around your aoi with all possible data with delta comporession so you get only new information. Wich approach is prefered, on wich it depends? Does they have some serious perfomance gains when you stick to one of them? Or its just matter of architecture your team prefer?
안녕하세요 강사님! 충돌체관련 궁금한점이 있어서 질문합니다. 캐릭터 클래스와 무기 클래스가 있고, 무기 클래스에 OnComponentBeginOverlap 옵션을 활성화 시켰습니다. 이런 상황에서 무기 클래스의 콜리전을 활성화 했을 때, 캐릭터 클래스와 겹치는 상황이 발생했습니다. 이때 무기 클래스에 캐싱되어 있는 캐릭터 클래스가 있어서 그 캐릭터 클래스와 충돌한 캐릭터가 같은지를 판단하여 return 하는 식으로 처리 했는데 이게 좀 마음에 안들어요. 애초에 특정 엑터를 충돌하지 못하게 지정해주고 싶은데 관련기능이 있을까요? 뭔가 있을꺼 같은데 찾기 힘드네요..
bool UGameUIManagerSubsystem::ShouldCreateSubsystem(UObject* Outer) const { // 우선 DedicatedServer의 경우, GameUIManagerSubsystem을 활성화하지 않음 if (!CastChecked<UGameInstance>(Outer)->IsDedicatedServerInstance()) { // 만약 어떠한 Subsystem도 UGameUIManagerSubsystem을 상속받지 았다면, 해당 GameInstanceSubsystem은 활성화 안함 TArray<UClass*> ChildClasses; GetDerivedClasses(GetClass(), ChildClasses, false); return ChildClasses.Num() == 0; } return false; } ChildClasses.Num() != 0; if 안의 리턴문 이걸로 바꿔야 게임UI매니저 서브시스템을 상속받았을 때 create subsystem하게 하는 거 아닌가요? 이러면 서브클래스 안 만들었을때 빼고 안 만들어주는 거 아닌지요
질문은 확인 즉시 답변드립니다! :) 메일이나 본 질문란을 이용하여 접수해주세요. 질문은 먼저 접수된 순으로 답변드립니다! 구체적인 기기(Meta Quest3, 3s 등)와 엔진 버전을 알려주시면 원활한 답변에 도움이 됩니다. 스크린샷이나 녹화영상 등을 통해 설명해주시면 더욱 감사합니다! https://youtu.be/3_9UbHMcn_I?si=d1vRdBpB3uqBsNim 위영상을 언리얼5.4 로 만들어 보려고 하는데 매쉬가 자꾸통과 되네요 피직스컨트롤 매쉬로는 잘되는데 캐릭터에는 잘 안되는 것 같아요 만지고 싶은데 어떤걸 손보면 될까요?