전용 서버

모든 자원이 온전히 네트워크 서비스를 유지하는데 사용

 

리슨 서버

전용 서버가 없는 대신 플레이어 클라이언트가 서버 역할을 맡음

(마인크래프트, 로블록스 등)

서버 유지비용이 적다.

네트워크 반응속도가 전용 서버보다 빠를 수 있다.

호스트가 게임을 종료할 경우 호스트 마이그레이션이 필요하다. (방장 전달)

 

P2P

게임에 참가한 모든 클라이언트가 호스트 역할을 한다.

게임 참가자가 많아질 수록 반응 속도가 느려진다

통상적으로 16명을 참가자 상한선으로 (16명도 많음) 한다.

각 클라이언트가 연산을 실행하고 서로 동기화하기 때문에

특정 중요 수치를 위조하여 다른 클라이언트에 전달할 위험성이 있다.

 

매치메이킹

참가할 클라이언트들이 서로 찾아 방 하나에 모이는 과정에서 사용할 매치메이킹 서버가 필요하다.

본 프로젝트에서는 포톤(Photon)에서 제공하는 전용 클라우드 서버를 사용한다.

 

포톤 룸

여러 클라이언트가 모인 각 네트워크 상의 가상의 공간을 룸(방)이라고 한다.

단, 포톤의 룸은 유니티의 씬이 아니라는 점에 주의해야 한다.

같은 룸에 있지만 서로 다른 씬을 로드하는 것도 가능하다.

 

네트워크 권한 분리

네트워크 게임은 위조 변조를 방지해야한다.

중요한 연산은 모두 서버(호스트)에 위임하라는 규칙을 가능하면 지켜야 한다.

클라이언트는 연산의 결과를 보여줄 뿐

 

1. 호스트에 위임

클라이언트마다 조금씩 오차가 존재할 수 있기 때문에

중요한 연산은 호스트에 위임하고 각 클라이언트는 연산된 결과를 전파 받는다.

 

2. RPC (Remote Procedure Call)

어떤 메서드나 처리를 네트워크를 넘어 다른 클라이언트에서 실행하는 것

대부분 멀티 플레이어 API에는 RPC가 구현되어 있다.

728x90

'Program > Server' 카테고리의 다른 글

[AWS] RDS로 DB세팅하기 - ① AWS 가입하기  (0) 2022.10.01
[Photon] Zombie로 포톤 배우기  (0) 2022.09.13
[NodeJS] http 모듈로 서버 만들기  (0) 2022.09.13
[NodeJS] 노드 내장 모듈  (0) 2022.09.13
[NodeJS] Process  (0) 2022.09.13

+ Recent posts