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로 서버에 요청해야 합니다.
- 모든 게임 상태 변경은 서버에서만 이루어져야 합니다.
- 클라이언트는 서버의 결정을 받아 화면에 표시할 뿐입니다.
쉽게 정리하면!
- Server-Client 모델에서 Server는 모든 결정을 내리고, Client는 Server의 결정을 받아 화면에 표시합니다.
- Replication은 서버에서 클라이언트로 데이터를 자동으로 동기화합니다.
- RPC는 특정 순간에 원격으로 함수를 호출합니다.
- 클라이언트는 서버에 요청만 할 수 있고, 직접 데이터를 수정할 수 없습니다.
728x90
반응형
'언리얼(Unreal) > 네트워크' 카테고리의 다른 글
25.04.08 채팅시스템 구현 (상) (0) | 2025.04.08 |
---|---|
25.03.19 Prediction and Reconciliation (0) | 2025.03.19 |
25.03.14 언리얼 Replication 개념과 이벤트, 이벤트 디스패처 개념 (0) | 2025.03.14 |
25.03.13 언리얼 네트워크와 객체 통신 (0) | 2025.03.13 |
25.03.11 온라인게임과 네트워크 구성의 이해 (0) | 2025.03.11 |