1. Listen 서버
- 클라이언트 중 하나가 서버의 역할도 수행
ㅡ> 때문에 동기화를 적절히 해주지 않으면 서버의 역할을 하는 클라이언트가 지연시간이 짧아 더 빠르게 상태 변화를 인지하는 공정성의 문제 발생 가능성 O - 클라이언트가 서버의 역할도 수행하므로 해킹에 취약
- 별도의 빌드 과정 X
2. Dedicated 서버
- 호스트가 클라이언트와 분리된 형태
- Listen 서버에 비해 비교적 보안이 좋음
- 별도의 빌드 필요
- 국내 온라인 게임들은 상시로 열려있는 형태의 서버를 사용 ㅡ> 해킹 취약
Dedicated는 통신을 할때만 열고 닫기 때문에 비교적 보안이 좋음
3. 서버와 클라이언트의 관계
- 서버에서만 작동되는 로직은 GameMode에 구현
- 클라이언트에서만 작동하는 로직은 HUD,Widget에 구현
- 클라이언트나 서버에서 서로에게 접근하고자 한다면 반드시 중개인 역할인 PlayerController를 통해서 호출
- 각 클라이언트는 자신의 Controller를 소유, 서버는 모든 클라이언트의 Controller를 소유
- PlayerState, Pawn에 관련한 정보들은 Client, Server 모두 소유
ㅡ> PlayerState, Pawn은 서버를 통해 동기화되는 객체이므로, 게임의 상태를 일관되게 유지하기 위해서 자신의 것 외에도 다른 Client의 정보들을 가지고 있어야 함
* 위에서 언급한 구조때문에 서버가 클라이언트에게 무언가를 수행시키려면 Server에서 접근 가능한 해당 Client의 PlayerController를 통해 접근하는 방법밖에 없고, 반대로 Client가 자신의 상태 변화를 Server에 보고하는 과정에서도 반드시 PlayerController를 통해야 함.
참고자료
언리얼 멀티플레이 구현 개념
게임에서 멀티플레이를 구현하는 데에는 크게 두가지 방법으로 나뉜다.P2P클라이언트-서버 모델간단하게 설명하자면 P2P는 Peer to Peer의 약어로 모든 플레이어가 이어져있는 것을 뜻한다.클라이
velog.io
'언리얼엔진(UE)' 카테고리의 다른 글
[UE] 몬스터 AI 구현 #10 (프로젝트 완) (0) | 2025.03.07 |
---|---|
[UE] 몬스터 AI 구현 #9 (피격 반응 애니메이션 및 상태 로직) (0) | 2025.03.06 |
[UE] 몬스터 AI 구현 #8 (원거리 공격 투사체 발사 및 공격 이펙트) (0) | 2025.03.05 |
[UE] 몬스터 AI 구현 #7 (Damage 중복 적용 오류 해결) (0) | 2025.03.04 |
[UE] 몬스터 AI 구현 #6 (Perception에 따른 상태 변화) (0) | 2025.02.28 |