shared server(포톤 전용 개념)

신재윤
신재윤
∙∙조회 23
shared server(포톤 전용 개념)

정의

Shared server = 권위(누가 오브젝트 상태를 결정하는가)를 클라이언트들끼리 나눠 갖는 방식
(단, 클라이언트끼리 직접 연결하는 게 아니라 항상 Photon Cloud를 거쳐서 통신함)


특징

Shared Mode는 클라이언트끼리 직접 연결을 시도하지 않는다. 항상 클라우드(Photon Cloud)한테만 연결함

 연결 대상
P2P (풀메시)클라이언트끼리 서로 직접
Host Server클라이언트 → 호스트 (직접 연결 시도, 실패시 Relay)
Shared Server클라이언트 → 클라우드 (항상 이 경로만, P2P 시도 자체가 없음)
Dedicated Server클라이언트 → 전용 서버

구조만 보면 오히려 Dedicated Server랑 비슷함 (둘 다 한 곳에 연결하는 스타형)
다른 점은 그 중앙이 "개발자가 만든 게임 서버"냐 "포톤이 관리하는 클라우드"냐

 

1. 권위는 누가 갖나

기본 규칙: 오브젝트를 스폰한 클라이언트가 자동으로 그 오브젝트의 StateAuthority(상태 결정권)를 가짐.

예외 : 씬에 미리 배치된 오브젝트는 SharedModeMasterClient(방장 역할, 실제 서버는 아님)가 권위를 가짐.
(방장은 먼저 들어온 사람임, 나가면 자동으로 교체되며 권위 선택 기준이 없을 경우를 위한 기본값이라 보면 편함)

 

2. 클라우드는 뭘 하고 뭘 안 하나

  • 하는 거 : "지금 이 오브젝트는 누가 권위를 가지고 있다"는 정보를 기록하고, 그 클라이언트가 보낸 상태 변경을 다른 사람들한테 전달
  • 안 하는거 : 그 변경 값이 맞는지 검증안함. 게임 로직 자체를 전혀 모름 → 그냥 "권위자가 보낸 값을 그대로 전달"만 함

 

3. 장점

  • 서버 연산 부하가 적음 (재시뮬레이션 없음 → 가벼움)
  • 개발 복잡도가 낮음 (서버 코드 따로 안 짜도 됨)
  • 운영 비용이 없음 (서버 인프라 관리 부담 자체가 없음)

공부하며 궁금했던 것

Listen 서버, Dedicated Server랑 같이 못 쓰겠네?

Fusion은 세션 시작할 때 GameMode(Host/Server/Shared) 하나를 확정해야 함.
Shared Mode를 고르는 순간 "호스트라는 개체 자체가 없다"는 걸 선택한 거라,
Host Mode나 Dedicated Server와 한 세션 안에서 동시에 쓸 수 없음

관련사례

 

Paddle Paddle Paddle(솔로 개발 Steam 게임)

게임요약: 플레이어 두 명이 노를 하나씩 잡아 협동하여 스테이지를 클리어 하는 게임 (Host Mode 방식)
이 게임은 보트하나에 한 명씩 타서 경쟁하는 모드가 추가됐는데 호스트와 클라이언트의 차이로 게임조작이 나빠졌음
이 제약 안에서, 보트를 1명이 조작하면 Shared Mode 방식, 2명이 같이 조작하면 Host Mode 방식으로 오브젝트 단위 처리 로직을 다르게 구현함 <Photon과 개발자의 1:1 인터뷰 링크>


오늘의 요약

  1. Shared Mode는 P2P가 아니라 항상 클라우드 경유하는 방식이고, 권위(누가 결정하나)만 클라이언트한테 나눠준 것.
  2. 클라우드는 권위자의 값을 검증 없이 그대로 전달만 하기 때문에 레이턴시 이점은 없고, 대신 연산/비용/개발 부담이 적은 게 진짜 장점.
  3. Dedicated/Host Mode와는 한 세션에서 섞어 쓸 수 없고, 치팅 민감도가 낮은 협동/캐주얼 장르에 적합함.

디벨로그에서 쓰다가 마우스 뒤로가기 버튼 눌러져서 요약부터 처음까지 다시 썼다. 마우스 설정 바꿨고, 앞으론 노션에 쓰고 복붙해야겠다.