묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
조건식 프로퍼티 리플리케이션 질문
안녕하세요. 조건식 프로퍼티 리플리케이션 실습하는 부분인 강의 28분30초 쯤에서 질문 있습니다.강의 내용을 보면, GetLifetimeReplicatedProps함수내부에서 DOREPLIFETIME(AABFountain, ServerRotationYaw); DOREPLIFETIME_CONDITION(AABFountain, ServerLightColor, COND_InitialOnly);위와 같이 설정을 해 주고 있습니다.그래서 저의 예상으로는 ServerLightColor 값은 최초 초기값만 리플리케이션되어 라이트의 색상은 초기 색상으로 고정되고, ServerRotationYaw 속성은 정상적으로 계속 리플리케이션 되어서 분수대가 계속 회전은 될 것으로 생각했습니다. 하지만 에디터에서 실행하는 부분인 29분45초경을 보니 회전과 색상변화 둘 다 되지 않고 있는데, 회전은 왜 되지 않는 것인가요?
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
ArenaBattle에 Log추가하는 곳에 에러가 나타나 질문 드립니다.
타 프로젝트에서 동일하게 사용하기 위해서 LOG-NETMODEINFO를 #define LOG_NETMODEINFO ( (GetNetMode() == NM_Client) ? *FString::Printf(TEXT("CLIENT %d"), GPlayInEditorID) : ((GetNetMode() == ENetMode::NM_Standalone) ? TEXT("STANDALONE") : TEXT("SERVER")))다음과 같이 강의 그대로 사용을 하면 static_assert failed : 'invalid argument(s) passed to printf'라는 에러가 나옵니다.하지만 다음과 같이 작성하면 에러가 나타나지 않습니다. 이유를 아직까지 잘 모르겠어서 질문 남깁니다.#define LOG_NETMODEINFO ((GetNetMode() == ENetMode::NM_Client) ? TEXT("Client") : ((GetNetMode() == ENetMode::NM_Standalone) ? TEXT("StandAlone") : TEXT("Server")))
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
장판스킬을 만들때 콜리전설정
수업내용은 아니장판 스킬을 만들고싶은데 구상한바로는 액터를 생성하고 capsuleComponent를 붙여서 Overlap이 발생할때 데미지를 주는 방식으로 만들려고하는데요 Collision부분에서 걸리는게 있습니다.지금 이 장판액터는 몬스터나 플레이어들만 Overlap이 되고 나머지는 무시를 해야하는데요 이러면 장판액터가 바닥에고정되어있지않고 땅으로 꺼지는현상이 발생합니다. PhysicsSimulate를 꺼도 이런현상이 발생합니다 바닥이랑만 Block되게 만드는 방법도 있지만 혹시 다른방법이 있을까요?
-
미해결[켠김에 출시까지] UE5 다크앤다커 스타일의 익스트랙션 RPG (D1)
MaxWalkSpeed가 0으로 고정되는 문제 관련 질문드립니다
Interaction1, 또는 2 코드 이주 후 캐릭터가 움직이지 않는 문제가 있어서 원인을 쭉 분석해보니 CharacterMovementComponent의 MaxWalkSpeed가 0으로 세팅되어 있는 것을 발견했습니다. 게임 실행 후 에디터에서 직접 값을 올려서 움직여보면, 클라에서 잠시 움직이려다가 서버에서 검증로직이 돌아가 다시 제자리로 돌아가는 듯한 모습이 보여서 서버 사이드에서 정상적으로 초기화하지 않거나 replication되지 않은 것 같았습니다. 추가로 발견한 특이 사항으로는 UPackageMapClient::SerializeNewActor 함수에서, Actor = World->SpawnActorAbsolute 를 진행할 때 B_HeroCharacter_Base_C의 생성자 자체에서는 600이란 값으로 잘 초기화되지만 SpawnInfo.Template (FActorSpawnParameters) 에 들어간 애의 MaxWalkSpeed 값은 0으로 되어있는 바람에 최종적으로 0으로 세팅되는 것까지 확인했습니다. 뭔가 저 값이 0으로 오는 원인이 있을 것 같은데, attribute set이 잘못되었는지 관련 값을 세팅해주는 초기 GameplayEffect를 지정해주지 않은 것인지 정확한 원인을 찾는데 난항을 겪고 있어서, 혹시 관련하여 어느 부분을 보는 것이 좋을지 질문 드립니다.
-
미해결[입문자를 위한 UE5] Part1. 언리얼 엔진 블루프린트
질문은 아니고 강의자 님이 해당 글을 꼭 보시길 바랍니다.
강의 너무 잘 듣고 있습니다.강의 설명중 참고하셨으면 하는 내용이 있어서 글 올립니다.1. ' ~ 이러한 내용이니 여러분들이 문제를 잠깐 멈추고 풀어보세요 ' 의 방식보다 아예 게임의 사용 예시를 들며 문제를 내는게 좋을것같습니다. 노드의 기능 역활만 알려주고 알아서 문제를 내라는 말이 좀 아쉬웠습니다. 강의를 빨리 끝내려는 강사의 느낌이랄까요. 2. 7:50 에서 ' 바꿔치기 해서 저장을 해야한다는건 어쨌든 set 을 등장시켜야 한다는 얘기가 되는거고..' 이부분도 설명이 좀더 있으면 좋겠습니다. 어떤걸 의도하시는지는 이해가 되었습니다만 마찬가지로 시간에 쫒기고 귀찮아서 빨리 수업을 끝내려는 강의 같다는 느낌이 듭니다..
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
디버깅 및 빌드가 갑자기 안됩니다 ㅠ
갑자기 디버깅 및 빌드가 안됩니다 ㅠㅠ
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
7강에서 DORM_Initial 안됨
7강에서 분수대를 휴면 상태로 만들기 위해 생성자에서 NetDormancy = DORM_Initial를 해주는데 휴면이 되지 않아 tick함수의 클라이언트에서 로그를 찍어봤더니 NetDormancy가 Initial이 아닌 Awake로 찍혀요...BeginPlaye에서도 변경해도 동일한 문제가 나타나는데 어떻게 해야하나요?? 버전은 5.5버전입니다
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
안녕하세요 강의 내용 정리에 관련해서 질문있어요
제가 강의를 들으면서 이해한 내용과 실습을 정리해서 올리려는데 저작권등의 문제가 괜찮을지 여쭤보고 싶어서요.어느정도까지 해도 괜찮을까요??
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
캐릭터 클래스의 mesh 관련
캐릭터 클래스는 처음부터 캡슐, 메시, 캐릭터 무브먼트 컴포넌트가 있는데요. 무브먼트 컴포넌트가 클라이언트와 동기화시키고 보정하는 기능이 있는 건 알 것 같기도 한데 이게 mesh도 영향을 받나요? 리슨 서버에선 클라이언트 소유 캐릭터의 mesh를 강제로 이동시키기나 add relative rotation 해도 default 값에서 변하지 않고 고정됩니다. 반면에 서버 환경에서 서버 소유 캐릭터나 클라이언트 환경에서 클라 소유 캐릭터의 mesh를 이동/회전 시키면 일단 적용은 됩니다.(다만 동기화는 안됩니다.) 리슨서버에서 클라이언트 소유 캐릭터의 mesh를 transform 수정 가능하게 할 방법은 아예 없나요?
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
[25분 20초] 형변환 관련 질문드립니다.
안녕하세요! 좋은 강의 감사합니다.수업을 듣다가 궁금한 점이,staff 클래스는 ILessonInterface를 상속받지 않기 때문에, staff 인스턴스를 ILessonInterface로 형변환 시 형변환이 실패하여 nullptr이 반환되는 것을 볼 수 있었습니다.그렇다면 자식 클래스(인스턴스)가 상속받지 않은 클래스로 형변환이 될 시 무조건적으로 형변환이 실패한다고 보면 될까요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
3파트 6강 분수대 로테이트에 문제가 생겼습니다.
안녕하세요 강사님! 항상 열심히 강의를 보며 공부하고 있습니다.6강 예제를 따라하던 도중 문제가 생겨 해결해보려했으나 도저히 방도가 안보여 질문드립니다. 비주얼 스튜디오에서 빌드로 실행하면 모두 정상적으로 작동이 되는 것 같습니다. 하지만 에디터에서 실행하거나, 배치파일로 실행하거나, 에픽 런쳐로 실행하거나, 프로젝트파일로 실행시킬 때 모두 분수대가 회전되지않습니다.(분수대뿐만이 아닌 모든 ab네트워크로그 매크로도 나오지 않습니다. 로테이트레이트값도 아예 보이지 않습니다.) 라이브 코딩 후에는 분수대도 잘 회전되고 매크로도 나오나, 클라이언트에서는 분수대가 여전히 회전하지않고, YAW값 매크로도 나오지 않습니다.
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
클라이언트의 오너십 설정에 대해서 궁금합니다.
클라이언트에서는 빙의를 하면서 오너쉽을 설정하는 것이 아니라 Owner값이 서버와 동기화 되는 것이라고 이해했습니다.그리고 서버에서 Owner값이 바뀌면 클라이언트의 OnRep_Owner가 실행되면서 클라이언트의 Owner값이 설정된다고 이해했습니다.그래서 Super의 OnRep_Owner가 실행되기전에도 로그를 찍어봤는데, 그때도 이미 오너가 설정된것으로 로그가 출력되었고, 코드를 확인해보니 Actor의 OnRep_Owner는 내용이 없더라구요..? 그러면 정확히는 OnRep_Owner에서 Owner값이 동기화 되는것은 아니라는 건가요? 그리고 아래 로그와 같이 PostNetInit가 실행되고 BeginPlay 까지 실행된 이후에 PostNetInit가 한번 더 호출되는 이유는 무엇인지 궁금합니다.LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [ABCharacterPlayer_0 Begin] LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [Owner: BP_ABPlayerController_C_0] LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [Owner: BP_ABPlayerController_C_0] LogABNetwork: [CLIENT1] AABCharacterPlayer::OnRep_Owner [End] LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [Begin] LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [End] LogABNetwork: [CLIENT1] AABGameState::OnRep_ReplicatedHasBegunPlay [Begin] LogABNetwork: [CLIENT1] AABPlayerController::BeginPlay [Begin] LogABNetwork: [CLIENT1] AABPlayerController::BeginPlay [End] LogABNetwork: [CLIENT1] AABGameState::OnRep_ReplicatedHasBegunPlay [End] LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [Begin] LogABNetwork: [CLIENT1] AABCharacterPlayer::PostNetInit [End]
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
프로퍼티 리플리케이트 동기화 보장 개념.
c++ 에서 replicated/replicatedUsing이나블루프린트에서 replicated/RepNotify설정하는것은 동기화를 반드시 보장해준다고 알고있는데요. 그래서 연결 이슈가 발생됐을 시, 보존했다가 정상 연결되면 그때 다시 데이터 보내준다고 이해했습니다. 그러면 리슨서버에 클라1이 접속되어 있고 이후 2번째 클라가 접속했을 때 이미 초기화가 끝나고 tick이 진행중이던 2개의 플레이어 캐릭터(서버,클라1)가 클라2 환경에서 simulated클라 역할로 생성되어 각각 beginplay가 진행될텐데요.이때 리플리케이트가 켜져있는 프로퍼티나 컴포넌트 상태 등등 변경된 사항들이 복제되어 적용된 상태로 생성되는 건가요?초기값과 다르기때문에 onRep_~~() 함수도 호출되면서?
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
결국엔 액터 기본함수들은 어디든 똑같이 일단 실행되는건가요?
어떤 액터의 현재 로컬 역할이 authority이든, Simulated 클라이언트든, Autonomous 클라이언트든 똑같이 beginPlay()와 Tick() 같은 건 일단 실행이 되는 건가요?? simulated 클라 역할인 액터는 개념적으론 로직이 수행되선 안되는데그럼에도 beginplay(), Tick() 같은건 일단 실행이 되기때문에 if문으로 구분을 해야하는거죠?
-
미해결이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템
어빌리티의 쿨다운 GameEffect에 대하여
안녕하세요. 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가 되면서 개선된 부분일까요?
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
언리얼 프로젝트 용량과 Git의 관하여
안녕하세요 강의 잘 듣고 있습니다.Unreal 프로젝트를 Git에 업로드하면서,Unreal Asset의 용량이 커서 무료 Git 용량을 초과하는 경험을 몇 번 했습니다.이런 문제의 해결법으로 gitignore에서 에셋 폴더를 제외해서 불필요한 에셋이 업로드되는 걸 막고,ArenaBattle 폴더에는 사용할 에셋 파일만 복사해놓고 git에 업로드하는 방식을 사용해도 좋을지 궁금합니다.그리고 실제 협업을 할 때 에셋을 git에 업로드할 때 용량관리를 어떻게 하는지 궁금합니다!
-
미해결[Rookiss University] Haker님의 UE5 소스코드 분석 시리즈 #1 (게임 프레임워크)
다음 엔진강의 계획된게 있을까요
혹시 다음 언리얼엔진 강의 계획되신게 있으실까요? ㅠ 너무 좋은 강의라 생각해 문의 드려요
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
C++ 클래스를 생성할 때, Class Type 지정에 대하여
강의 잘 보고 있습니다.C++ 클래스를 생성할 때 Class Type을 public이나 private를 눌러서 따로 지정하지 않는 이유가 궁금합니다.
-
미해결이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해
bool
25:40초 쯤 HasNextComboCommand 변수를 bool로 선언하였는데요.헤더파일의 bool은 비트필드를 사용하는것 아니었나요? bool자료형을 사용하신 이유가 궁금합니다
-
미해결이득우의 언리얼 프로그래밍 Part1 - 언리얼 C++의 이해
CoreMinimal.h 가 찾아지지 않습니다.
15강 23분까지 따라했는데모듈 헤더에서 CoreMinimal.h가 찾아지지 않아cpp 파일에서도 오류가 발생합니다.build.cs 파일에 CommonUtility 를 넣어도 보고 빼고도 실행시켜 봤는데 모두 오류가 발생합니다.