본문 바로가기
언리얼(Unreal)/네트워크

23.03.17 Server-Client 모델과 인스턴스 실행 모드

by alwaysyoung2 2025. 3. 17.
728x90
반응형

1️⃣ Server-Client 모델

  • 언리얼 엔진은 멀티플레이어 게임에서 Server-Client 구조를 사용합니다.
    • Server: 게임의 상태를 관리하고 모든 결정을 내리는 중심입니다.
    • Client: Server로부터 정보를 받아 화면에 표시하고, 입력을 Server로 보냅니다.
  • 핵심 원칙: "Never Trust the Client"
    • 클라이언트는 절대적으로 신뢰할 수 없기 때문에, 모든 중요한 결정은 Server에서 이루어져야 합니다.
    • 예: 플레이어가 총을 쏘는 행동을 클라이언트에서 처리하면, 해커가 조작할 수 있습니다. 따라서 Server가 총알 발사를 검증하고 결과를 모든 클라이언트에게 알려야 합니다.

2️⃣ 실행 모드

  • 언리얼 엔진은 다양한 실행 모드를 지원합니다. 각 모드의 특징은 다음과 같습니다:

실행 모드정의특징

Standalone 네트워킹 없이 단일 인스턴스로 실행 • 싱글 플레이어용
• 모든 게임 로직이 하나의 프로세스에서 실행됨
Dedicated Server 서버 전용 인스턴스 • 플레이어 없이 서버만 실행
• 렌더링 없이 게임 로직과 네트워크 처리만
Listen Server 한 플레이어가 서버와 클라이언트 역할을 동시에 수행 • 호스트가 게임을 플레이하면서 서버 역할도 함
• 호스트가 나가면 서버 종료
Client 서버에 연결된 일반 플레이어 • 서버로부터 데이터를 받아 화면에 표시
• 입력을 서버로 전송

3️⃣ Gameplay Framework

  • 언리얼의 Gameplay Framework는 멀티플레이어 게임에서 각 클래스가 어디에 존재하는지 정의합니다.
    • GameMode: 서버에서만 존재. 게임 규칙을 제어합니다.
    • GameState: 서버와 모든 클라이언트에 존재. 게임의 전체 상태(점수, 시간 등)를 동기화합니다.
    • PlayerController: 서버와 해당 클라이언트에 존재. 플레이어의 입력을 처리합니다.
    • Pawn: 서버와 모든 클라이언트에 존재. 플레이어 캐릭터를 나타냅니다.

4️⃣ Replication과 RPC의 차이

  • Replication: 서버에서 클라이언트로 데이터를 자동으로 동기화합니다.
    • 예: 플레이어의 위치, 체력, 문의 상태 등.
    • 단방향: 서버 → 클라이언트.
  • RPC (Remote Procedure Call): 원격으로 함수를 호출합니다.
    • Server RPC: 클라이언트 → 서버. (예: 총알 발사 요청)
    • Client RPC: 서버 → 특정 클라이언트. (예: UI 업데이트)
    • Multicast RPC: 서버 → 모든 클라이언트. (예: 폭발 효과)

5️⃣ Replication vs RPC

  • Replication은 지속적인 상태를 동기화하는 데 사용됩니다.
    • 예: 플레이어의 체력이 계속 변할 때.
  • RPC는 특정 순간에 실행되는 동작이나 이벤트를 전달하는 데 사용됩니다.
    • 예: 플레이어가 총을 쏘는 행동.

6️⃣ 핵심 원칙

  • 클라이언트는 서버의 데이터를 직접 수정할 수 없습니다.
    • 클라이언트가 서버에 변경을 요청하려면 Server RPC를 사용해야 합니다.
    • 예: 클라이언트가 문을 열고 싶다면, Server RPC로 서버에 요청해야 합니다.
  • 모든 게임 상태 변경은 서버에서만 이루어져야 합니다.
    • 클라이언트는 서버의 결정을 받아 화면에 표시할 뿐입니다.

쉽게 정리하면!

  1. Server-Client 모델에서 Server는 모든 결정을 내리고, Client는 Server의 결정을 받아 화면에 표시합니다.
  2. Replication은 서버에서 클라이언트로 데이터를 자동으로 동기화합니다.
  3. RPC는 특정 순간에 원격으로 함수를 호출합니다.
  4. 클라이언트는 서버에 요청만 할 수 있고, 직접 데이터를 수정할 수 없습니다.
728x90
반응형