언리얼 Replication
- Replication이란
- Network Framework API 를 상속받아 구현한 구현체
- RPCs와 Notify를 하는 부분과 자동화에서 Actor Replication하는것
- Actor Replication
- 클라이언트에서 서버에 Spawn해달라고 요청하면 서버에 Spawn된 액터와 클라이언트에 Spawn된 액터와 연결이 되어있음
- Property Replicatuin이 되어 있어야 액터의 값이 동기화 되어있음
- 출처: https://unrealcommunity.wiki/unreal-schematics-2d6859
Unreal Schematics | Unreal Engine Community Wiki
Unreal schematics featuring Animation, Blueprint, Character, Engine, Materials, Programming, Rendering & World Building
unrealcommunity.wiki
- RepNotify
- 용도: 값 변경 시 서버->클라리언트 로 이벤트 호출
- 호출 방법 : 자동
- 실행 : 클라이언트
- 네트워크가 연결되어 있으면 신뢰 가능
UPROPERTY(ReplicatedUsing=OnRep_HealthChanged)
int32 PlayerHealth = 100;
UFUNCTION()
void OnRep_HealthChanged();
- ActorReplication
- 용도 : 변수 값의 동기화 및 오너쉽 관리로 서버->클라리언트
- 호출방법: 자동
- 실행: 서버에서 값 변경 후 클라이언트에 반영
- 네트워크가 연결되어 있으면 신뢰 가능
UPROPERTY(Replicated)
int32 PlayerHealth = 100;
- RPCs
- 용도: 서버와 클라이언트간 양방향 함수 호출
- 호출 방법 : 수동
- 실행: 서버, 클라이언트
- Reliable / Unreliable 선택 가능
UFUNCTION(Server, Reliable)
void ServerFireWeapon();
UFUNCTION(NetMulticast, Unreliable)
void MulticastPlayExplosionEffect();
- Listen Server 와 Dedicated Server
- 게임에서 서버란 사용자의 데이터를 저장하는 기능 외에 게임의 심판 역할을 하는로직 전체
- Dedicated Server
- 특정 목적으로 번역이 될 수 있음
- 전용서버라는 뜻으로 서버의 로직만 추려 빌드 된 버전
- 별도 빌드: 필요
- 클라이언트 기능 포함: 안함
- 보안: 좋음
- 용도: 독립 서버를 갖춘 게임 환경
- 개발난이도: 상대적으로 깔끔
- Listen Server
- 클라이언트 중 하나가 서버의 기능을 겸직
- 별도 빌드: 불필요
- 클라이언트 기능 포함: 포함
- 보안 : 해킹에 취약
- 용도: LAN 환경에서 근거리 그룹
- 개발 난이도: 클라이언트와 서버의 기능이 합펴져 있으므로 권한 체크 필수
객체간 통신
- 이벤트 디스패처(Event Dispatcher)
- 프로그래밍에서 강한 결합 또는 강한 객체간 연결을 피하기 위해 언리얼에서 제공하는 기능
- A라는 객체에서 이벤트 등록, B라는 객체에서 A의 이벤트 구독하는 원리로 작동
- 이벤트는 A가 B,C 객체에 메시지를 전달하여면, B와 C를 형변환한 뒤 각각의 객체의 이벤트 호출
- 이벤트 디스패처는 A에 등록된 이벤트 디스페처를 통해 B와 C가 구독하고 있다가 A의 이벤트 디스페처가 호출 시 B, C에게 바인딩 된 이벤트를 호출하므로 빠른 처리 가능
- 생성한 이벤트 Replicates 속성 Multicast, Run On Server, Run on owning Client로 설정하면, 바로 RPC가 됨
게임 모드 및 게임 스탯, 플레이어 컨트롤러
- 서버에서만 작동하는 로직을 호출하고, 서버가 클라이언트에 메시지를 전달하는 방법?
- 플레이어 컨트롤러 중심으로 게임 요소들과의 관계를 알아야함
- 이 이미지를 보면 플레이어 컨트롤러가 GameMode와 스탯에 들어가 있음
- 플레이어 컨트롤러는 HUD, 입력, 플레이어 카메라 등을 포함하고 있음
- 이를 네트워크 환경으로 가져가면 아래 그림처럼 됨
- 만약 위젯 블프에서 서버 로직이 있는 게임 모드, 게임 스텟 등으로 접근하려면 반드시 플레이어 컨트롤러를 거쳐야함
- 반대 경우도 마찬가지임
- 플레이어 컨트롤러 중심으로 게임 요소들과의 관계를 알아야함
'Unreal Bootcamp > 네트워크' 카테고리의 다른 글
2. 온라인 게임과 네트워크 구 (0) | 2025.03.11 |
---|---|
1. 네트워크 개념 (1) | 2025.03.10 |