UE5
-
[UE5] 네트워크 멀티플레이어 최적화UE5 2024. 12. 26. 17:36
네트워크 멀티플레이어를 위해 고려할 최적화 요소 [일반적으로 최적화시 고려할 사항]불필요한 액터의 리플리케이션 옵션을 끄기액터에 맞는 최적의 업데이트 빈도(Frequency)와 우선권(Priority) 설정연관성(Relevancy)을 위한 최적의 조건 설정프로퍼티 리플리케이션의 조건 설정필요시 휴먼(Dormancy) 상태의 설정데이터 크기의 양자화 (FVector_NetQuantize)[기타 심화 주제]구조체 데이터 전송의 최적화 설계 (NetSerialize)프로퍼티 리플리케이션의 푸시 모델 설정필요시 빠른 배열 자료구조를 사용한 데이터 전달 (FFastArraySerializer)빠른 리플리케이션 엔진의 교체 (ReplicationGraph, Iris) [NetSerialize 데이터 설계]네크워크로..
-
[UE5] 움직임 리플리케이션UE5 2024. 12. 20. 08:15
다음은 언리얼 공식 문서 Networked Movement in the Character Movement Component의 일부를 번역한 것이다. Autonomous Proxy (자율 프록시)캐릭터는 소유 클라이언트의 기기에서 실행되며, 플레이어가 로컬에서 직접 제어합니다. Authority (권한)캐릭터는 게임을 호스팅하는 서버에 존재합니다. Simulated Proxy (시뮬레이티드 프록시)캐릭터는 다른 클라이언트에 존재하며, 원격으로 제어되는 캐릭터를 볼 수 있습니다.이 캐릭터는 서버에서 AI에 의해 제어되거나, 다른 클라이언트의 Autonomous Proxy에 의해 제어될 수 있습니다. 복제(Replication) 프로세스는 TickComponent 함수 내에서 반복적으로 수행되며, 매 틱마..
-
[UE5] 전역 네임스페이스와 ::의 활용UE5 2024. 12. 19. 06:10
전역 네임스페이스(Global Namespace)란? C++에서 **전역 네임스페이스(Global Namespace)**는 특정 네임스페이스에 속하지 않은 함수, 변수, 클래스, 열거형 등이 기본적으로 포함되는 가장 바깥쪽의 범위를 뜻한다. 전역 네임스페이스는 모든 파일에서 접근할 수 있는 기본 범위이다.전역 네임스페이스는 이름이 없는 네임스페이스로 간주되며, 이를 명시적으로 참조하려면 범위 지정 연산자(::)를 사용한다. 전역 네임스페이스의 특징 모든 코드에서 접근 가능:전역 네임스페이스에 있는 요소는 기본적으로 모든 소스 파일에서 접근 가능기본 범위:함수, 변수, 클래스 등을 아무 네임스페이스에도 포함하지 않고 선언하면 자동으로 전역 네임스페이스에 포함범위 지정 연산자(::):전역 네임스페이스를 ..
-
[UE5] RPC 사용시 주의할 점UE5 2024. 12. 17. 07:21
각 RPC 종류마다 올바르게 사용할 것Client, NetMulticast는 서버에서만 호출Server는 클라이언트에서 호출하지만, 플레이어로 참여하는 리슨서버의 경우 호출 가능Client, Server는 오너십을 가지고 있는 액터에서 호출컨트롤러 : isLocalController 함수폰 : isLocallyControlled 함수Tick 및 빈번하게 호출되는 함수에 Reliable RPC를 사용하지 말 것NetMulticast RPC의 잦은 사용은 네트워크 부하를 가중시키니 신중을 기할 것게임 플레이 및 액터 상태에 영향을 미치는 경우 RPC보다 프로퍼티 리플리케이션을 사용할 것
-
[UE5] RPC(Remote Procedure Call)UE5 2024. 12. 17. 05:45
RPC(Remote Procedure Call)이란?원격 프로시저(함수) 호출의 약자원격 컴퓨터에 있는 함수를 호출할 수 있도록 만든 통신 프로토콜네트워크 멀리플레이에서 서버와 클라이언트간에 빠르게 행동을 명령하고 정보를 주고받는데 사용언리얼 엔진에서 클라이언트에서 서버로 통신하는 유일한 수단 제공속성형 장식이나 휘발성인 비신뢰성 게임플레이를 위한 것(사운드 재생, 파티클 스폰 등) 액터의 핵심적인 기능과는 무관한 일시적 효과와 같은 작업을 하는 이벤트를 처리 Client RPC서버에서 클라이언트로 호출하는 RPC이를 활용해 특정 클라이언트에게만 명령을 보낼 수 있음서버에서 명령을 보낼 클라이언트의 커넥션을 소유한 액터를 사용해야 함(AActor::GetNetConnection)대부분의 경우 서버, 클라..
-
[UE5] 액터 리플리케이션UE5 2024. 12. 17. 04:20
액터 리플리케이션이란?특정 플레이어에 속한 액터의 정보를 네트워크 내 다른 플레이어에게 복제하는 작업클라이언트-서버 모델에서는 대부분 서버에서 클라이언트로 전달크게 프로퍼티 리플리케이션과 RPC(Remote Procedure Call)로 나뉨기본 액터의 로딩클라이언트가 초기화 될 때 모든 액터 정보를 서버로부터 받는 것은 비효율적기본 배경에 관련된 액터는 맵을 통해 스스로 로딩하도록 설계고정액터(배경 액터 등)에 대해 NetLoadOnClient 속성을 체크(기본값)클라이언트가 초기화될 때 서버와 통신 없이 자체적으로 로딩 프로퍼티 리플리케이션네트워크 데이터를 최소화하기 위해 모든 변경 사항을 보내는 대신, 변경을 유발한 속성 값만을 전달액터의 리플리케이션 속성을 참으로 지정bReplicates 속성을 ..
-
[UE5] 클라이언트-서버 연결시 호출 함수 정리UE5 2024. 12. 12. 15:33
로그인 과정 PreLogin클라이언트가 서버에 연결을 시도할 때 호출클라이언트의 인증 및 접속 허용 여부를 확인플레이어 컨트롤러는 아직 생성되지 않음주로 접속 제한, IP 검증, 허용 여부 확인 등에 사용Login클라이언트가 접속 인증을 마치고 로그인 시 호출이 시점에서 플레이어 컨트롤러가 생성클라이언트가 사용할 PlayerController를 반환PostLogin클라이언트가 서버에 성공적으로 접속한 후 호출GameMode에서 호출되며, PlayerController가 완전히 초기화된 상태플레이어가 게임에 완전히 들어오고 게임 시작 전에 수행할 작업(초기 설정, 팀 배정 등)에 사용StartPlay게임의 주요 루프가 시작되기 전에 호출GameModeBase에서 호출되며, 게임 로직 초기화에 사용Begin..
-
[UE5] 매크로를 이용한 사용자 정의 로그UE5 2024. 12. 10. 07:06
새로운 로그 카테고리를 지정하는 이유 A. 로그의 필터링 및 가독성프로젝트가 커질수록 여러 서브시스템(네트워크, 렌더링, AI 등)에서 로그가 발생LogABNetwork와 같은 고유 로그 카테고리를 사용하면 특정 서브시스템의 로그만 필터링해서 볼 수 있음예: 네트워크 관련 디버깅 시, LogABNetwork만 활성화하여 로그를 확인.콘솔 명령어 Log LogABNetwork Verbose를 사용하여 해당 카테고리의 Verbose 로그만 활성화 가능.B. 유지보수성과 디버깅 용이성로그 메시지가 어떤 기능이나 모듈에서 발생했는지 명확하게 나타낼 수 있음문제 발생 시 어떤 서브시스템에서 로그가 생성되었는지 바로 파악 가능.예: 네트워크 모듈의 로그는 LogABNetwork, UI 모듈의 로그는 LogABUI...