🚀 Sloution FVector의 Normalize() 메소드 대신 GetSafeNormal() 메소드를 사용하자. 보다 정밀하게 값을 계산하기 때문에 부동소수점 문제를 완화할 수 있으며, 메소드를 호출한 벡터 인스턴스 자체를 정규화 하는 대신 정규화된 새로운 벡터를 생성하여 반환하기 때문에 비교적 디버깅에도 유리하다. 📚 Detail 부동소수점이 무엇이고 어떤 구조를 가지며 어떤 한계점이 있는지는 정리가 잘 된 글을 공유하는것으로 대체한다. 여기를 클릭하여 해당 게시글로 이동할 수 있다. FVector의 메소드와 관련해서는 언리얼 엔진 문서에 정리되어 있으며 다음과 같이 설명한다. 1. Normalize() 주어진 허용 오차보다 크면 메소드를 호출한 인스턴스를 정규화 하고, 그렇지 않으면 변경되지 않..
🚀 Solution 윈도우 10 or 11 및 언리얼 엔진 5.3 기준으로 커맨드 창에 다음과 같이 입력하여 실행 가능하다. 💾 서버 실행 "UnrealEditor.exe 경로" "프로젝트.uproject 경로" "시작 월드.umap 경로" -server -log 필자의 환경에서는 다음과 같다. "D:\Epic Games\UE_5.3\Engine\Binaries\Win64\UnrealEditor.exe" "D:\Projects\Unreal\MultiplayerSample1\MultiplayerSample1.uproject" /Game/ThirdPerson/Maps/ThirdPersonMap.umap -server -log 🖥️ 클라이언트 실행 "UnrealEditor.exe 경로" "프로젝트.uproje..
🚀 Sloution 언리얼 엔진에서 지원하는 HasAuthority() 함수를 사용하자. 현재 위치가 서버라면 true를 그렇지 않다면 false를 반환 할 것이다. 📚 Detail 언리얼 엔진 문서에서는 해당 액터에게 네트워크 어소리티(권한, Authority)가 있는지의 여부를 반환한다고 말한다. 서버 - 클라이언트 모델에서 서버와 클라이언트 간의 통신에서는 보안과 신뢰성을 유지하기 위해 어소리티가 필요하다. 그렇기에 서버에 어소리티가 존재하며, 어소리티의 존재 여부를 확인하는것 만으로 서버인지 판단할 수 있는 기준이 된다. 즉, 서버와 클라이언트에서 어떤 값이 다르다면 그 값은 어소리티를 가진 서버의 값을 따라가게 된다.