Unreal Engine/네트워크
[UE5] - 네트워크 프레임워크
KimGeon-U
2025. 3. 24. 19:44
Replication
- Network Framework API를 상속받아 구현한 구현체
- https://mynameiskgws.tistory.com/38
Server-Client Model
- Server
- 게임의 상태에 대한 권한 (Authority) 소유
- Client의 요청 처리, 응답
- Client
- 서버 외 인스턴스, 서버에게 데이터를 업데이트 받는다.
- Client는 서로 직접 통신하지 않고, Server를 통한 데이터 전송 방식
- Client -> Server -> Client (Broadcast, Multicast)
- Replicated, ReplicatedUsing, WithValidation을 통한 동기화를통한 일관성, 보안 강화
- Listen Server
- 세션의 한 플레이어가 Server 호스트 역할
- Server이면서 Client
- 호스트에게 UI 및 Player Controller 존재
- 호스트가 게임을 나가면 해당 서버(세션) 종료
- 세션의 한 플레이어가 Server 호스트 역할
- Dedicated Server
- Server 전용 인스턴스
- Local 플레이어 없음
- 렌더링을 하지않는다. GPU없이 구동이 가능하다.
- 렌더링과 같은 서버 대역폭의 부담이 큰 경우, 해당 정보를 모니터에 직접 복제하는것이 아닌
필요한 정보들만 복제해서 대욕폭을 최소화 한다.
- 렌더링과 같은 서버 대역폭의 부담이 큰 경우, 해당 정보를 모니터에 직접 복제하는것이 아닌
- 자율적인 (Autonomous) 플레이어 컨트롤러 보유
- 권한있는 결정 및 게임상태 업데이트는 Server에게 의존
※ Dedicated, Listen, Cloud Server - https://mynameiskgws.tistory.com/60
Actor Replication
- Actor 자체를 리플리케이션 대상으로 설정
- Transform, State 등 자동 동기화
- bReplicates = true와 같은 설정
- 서버에서 값 변경 후 클라이언트에 반영
- Actor 내 Property 값 동기화 및 OwnerShip관리
Reliability
- RPC의 전송 보장 여부 결정
- Reliable : TCP/IP와 같은 반드시 전달되어야 하는 데이터 전송시 (Player isDead?)
- Unreliable : UDP/IP와 같은 데이터 유실시에도 영향을 크게 미치지 않는 데이터 전송 시 (Player Movement)
RepNotify
- 값 변경시 서버 -> 클라이언트로 이벤트 호출하는 방식
- 값 변경시 자동으로 바인딩된 시그니처 함수 호출
- UPROPERTY(ReplicatedUsing = OnRep_SigatureName)
- OnRep_ 컨벤션을 통해 언리얼에서 해당 이벤트가 Replicated 바인딩을 담당
Network Mode (ENetMode)
- 현재 게임 월드 내 해당 Actor가 현재 어떤 네트워크 환경에서 실행중인지 알 수 있는 열거형
- World 또는 NetDriver 초기화시에 결정된다.
- 게임 실행시 실행 방식(Entry Point)에 따라 결정되며, 런타임에서 변경 불가
- GameInstance, GameMode, Actor등 GetNetMode()를 사용한 현재 네트워크 모드 확인 가능
- NM_Standalone
- 서버와 클라이언트가 모두 로컬에 있는 경우
- 싱글 플레이 게임 모드
- 멀티플레이 불가
- 기본값. PIE 실행시 기본 실행
- NM_DedicatedServer
- UI, 플레이어 설정 불가
- 오적 서버 로직만 수행
- 사운드, 비주얼 렌더링 처리 없음
- NM_ListenServer
- 어떤 클라이언트가 서버역할을 하는 리슨서버
- 서버 권한 HasAuthority()을 통한 로직
- IsLocalController()을 사용한 로컬 컨트롤러 관련 로직
- NM_Client
- 클라이언트 모드 (서버 X)
- 서버로부터 정보를 받아 실행하는 역할
- 서버 전용 로직은 실행되지 않는다. (UFUNCTION(Server)...)
- 유저(클라이언트)에게 보여줄 비주얼 작업, 입력 등 담당
출처