본문 바로가기

카테고리 없음

2025 - 03- 12 TIL (언리얼에서 네트워크 이해과정)

 

RePlication은 무엇인가?

 

언리얼에서 Replication은

멀티플레이어 환경에서 데이터와 상태를 클라이언트와 서버간의 동기화 하는 과정

 

즉 서버와 클라이언트 간 동기화

서버에서 결정된 상태를 클라이언트로 전송 되어 일관성 유지(오늘 공부했던 내용 중 일관성)

 

언리얼에서 변수나 함수에 Replication이라는 프로퍼티를 설정해 복제 여부를 지정 할 수 있다.

 

 

RepNotify

값 변경시 서버에서 클라이언트로 이벤트 호출

자동 호출

클라이언트에서 실행

네트워크가 연결되어 있으면 신뢰 가능

 

UPROPERTY(ReplicatedUsing=OnRep_HealthChanged) int32 PlayerHealth = 100;

 

ActorReplication

변수값의 동기화 및 오너쉽 관리로 서버에서 클라이언트

자동 호출

서버에서 값 변경 후 클라이언트에 반영

네트워크가 연결 되어 있으면 신뢰 가능

 

UPROPERTY(Replicated) int32 PlayerHealth = 100;

 

RPCs

서버와 클라이언트 간 양방향 함수 호출

수동 호출

서버와 클라이언트 에서 실행

Reliable/ Unreliable 선택 가능

 

UFUNCTION(Server, Reliable) void ServerFireWeapon();

UFUNCTION(NetMulticast, Unreliable) void MulticastPlayExplosionEffect();

 

언리얼에서 Replication 설정 하기

변수 복제:
UPROPERTY(Replicated)를 변수에 추가하면 해당 변수가 서버에서 클라이언트로 복제 됨.
함수 복제:
UFUNCTION(Server), UFUNCTION(Client), UFUNCTION(NetMulticast) 등을 사용해 특정 상황에서 함수 호출을 복제

 

Server 클라이언트가 서버에 요청

Client 서버가 특정 클라이언트에만 실행 지시 

NetMulticast  서버가 모든 클라이언트에 브로드 캐스트

 

 

 

 

Listen Server와 Dedicated Server

(언리얼에서는 기본적으로 제공 하는 서버)

Listen Server
게임 클라이언트와 서버가 같은 프로세스에서 같이 돌아가는 방식
한 명의 플레이어가 게임을 호스팅하면서 동시에 플레이
호스트의 인터넷이 느리거나 불안정하면 다른 플레이어도 영향을 받음.
 
Dedicated Server

 

게임 로직만 처리하는 독립적인 서버
플레이어가 아니라 순수하게 서버 역할만 하도록 설계
모든 플레이어가 클라이언트로 접속하는 방식
서버가 독립적으로 돌아가니까 안정적이고, 더 많은 플레이어를 수용

 

 

대규모 서버 는 데디케이트 서버

소규모 서버 와 방장도 같이 게임하는거는 Listen 서버

 

인 것 같다.