언리얼 네트워크

Woogle·2022년 12월 16일
0

언리얼 엔진 5

목록 보기
39/60

📄 네트워크 모드

✏️ Standalone

  • 로컬머신에서 실행 원격머신에서 클라이언트를 받지 않는 서버

✏️ Dedicated Server

  • 로컬 플레이어 없이 사운드, 그래픽, 사용자 입력, 기타 플레이어 관련 기능을 제거한 전용 서버

✏️ Listen Server

  • 로컬 플레이어가 있는 서버로, 원격 플레이어에게도 접속을 허락함

✏️ Client

  • Dedicated / Listen 서버로 접속되는 클라이언트. 서버 측 로직은 실행되지 않음

📄 프레임워크

① 서버에만 존재

✏️ Game Mode

서버에만 존재하며 게임의 규칙을 설정.
굳이 클라이언트가 알 필요 없는 정보들을 저장하는데 유용.
ex) 게임 규칙

  • Event OnPostLogin : 서버에 새 플레이어가 추가될 시 제일 먼저 실행되는 이벤트

② 서버와 각 클라이언트에 존재

✏️ Game State

모든 플레이어 간의 공유가 필요한 정보를 보관하고 모든 클라이언트에게 공유되는 클래스. (Replicated)
ex) 팀 점수, 접속된 플레이어 목록

✏️ Player State

접속된 클라이언트마다 현재 상태값을 포함하고 있는 Player State 객체를 갖고 있음.
Pawn에 할당되지만, Pawn이 소멸되거나 리스폰되어도 사라지지 않음.
ex) K/D/A

✏️ Player Controller

각 클라이언트는 하나의 Player Controller를 가지고 Pawn을 제어함
서버는 모든 클라이언트의 Player Controller를 가지고 있음.
ex) UI

③ 클라이언트에만 존재

✏️ HUD, UMG Widget

User Interface를 표시


📄 개념

✏️ Replication

변수 및 함수의 동기화.
서버에서 Replication 해주지 않으면 클라이언트에 반영되지 않음.
중요한 로직은 서버에서 실행하고, 결과만 클라이언트에 뿌려주는 방식이 일반적.

  • Reliable : 반드시 실행되는 함수. 필수 로직이 아닌 이펙트 등에서는 꺼놔도 됨.
  • Multicast : 모든 클라이언트에게 뿌려줌.
  • Switch Has Authority : 서버인지 클라이언트인지 따지는 분기문
  • RepNotify : 변수가 Repicated 될 때마다 실행되는 함수를 생성
  • UFUNCTION(Server) : 서버에서만 실행되는 RPC 함수 지정자
  • UFUNCTION(Clinet) : 클라이언트에서만 실행되는 RPC 함수 지정자

✏️ Game Instance

엔진 시작 시 생성되고 종료될 때까지 소멸되지 않는 클래스.
따라서 지속성 데이터를 저장하기 좋지만, 서버와 각 클라이언트마다 따로 존재하고 통신하지 않는다는 단점이 있음.


📄 간단 예시

  • 네트워크 모드 설정
  • 서버, 클라이언트 분기
  • 실행 결과

참고자료

profile
노력하는 게임 개발자

0개의 댓글