일단, 출처는 여기다.


4인 멀티 플레이어 게임은 총 몇 명이 존재할까?

당연히, 4명이라고 말하겠지만, 실제로는 16명의 플레이어가 존재한다.

이유는, 4인의 컴퓨터에 각각 4개의 캐릭터가 보이기 때문이다. 즉, 네 개의 게임 세상이 존재한다고 할 수 있다.


A에도 A, B, C, D 캐릭터가

B에도 A, B, C, D 캐릭터가

C에도 A, B, C, D 캐릭터가

D에도 A, B, C, D 캐릭터가 보인다.


따라서, 4*4 총 16개의 플레이어가 보이게 된다.

(물론 인간은 4명이겠지만...여기서 플레이어는 게임 상에서 나타나는 캐릭터를 뜻한다.)



(빨간색 - 로컬 플레이어 / 파란색 - 리모트 플레이어)



1) 로컬 플레이어란?


A라는 플레이어가 하고 있는 게임 상에서는 A캐릭터가 플레이어를 대표한다. 즉, A 세상에서는 A가 주인공이다.

이 대표하는 플레이어를 로컬 플레이어라 부른다. 또는 로컬 클라이언트라고돌 한다.

정리하면,


A 게임 상에서는 A가,  

B 게임 상에서는 B가,  

C 게임 상에서는 C가, 

D 게임 상에서는 D가

로컬 플레이어라고 할 수 있다.


2) 리모트 플레이어란?


반면에,

A 게임 상에서는 B, C ,D는 다른 로컬 플레이어가 아니라 다른 게임 세상에서 (원격으로) 건너온 플레이어이므로

원격 플레이어 또는 리모트 플레이어(Remote Player)라고 부른다. 또는 리모트 클라이언트라고돌 한다.

다른 

정리하면,


A 게임 상에서는 B,C,D 가,  

B 게임 상에서는 A,C,D 가,  

C 게임 상에서는 A,B,D 가, 

D 게임 상에서는 A,B,C 가

리모트 플레이어라고 할 수 있다.


그럼 어떻게 네 개의 게임 세상이 마치 하나의 게임처럼 동기화가 될까?

A의 입장에서는 A 게임 세상에서 A만 실존하는 존재이며, B,C,D 캐릭터는 그냥 보여지는 복제품일 뿐이다.

따라서, A만 컨트롤하고 이동하거나, 총을 쏘거나 하는 움직임이 발생하면 B,C,D에 있는 A에게 동기화를 적용한다.

이렇게 되면 B,C,D에 있는 A는 움직이게 된다. 하지만, 움직이는 주체는 A세상에 있는 A 캐릭터이다.


그렇다고 A가 복제되어 움직이는 것이 아니라 A,B,C,D 세상에 있는 A는 전혀 별개의 게임오브젝트이다.

단지 동기화를 통해 동작을 공유한다. 만약, 동기화가 안 될 경우 A는 각각 다른 행동을 취하게 된다.


서버 - 클라이언트 


서버-클라이언트를 게임에 적용하는 방식은 총 2가지가 있다.


1) 호스트(Host)

  

서버 자체도 한 명의 클라이언트로 참여하는 것이다. 흔히 방장이라고 부른다.

만약 A B C 세명이 멀티플레이어 게임을 한다고 할때 C가 호스트라고 가정하자. 


그러면 A,B,C의 네트워크 동작을 C가 관리하게 된다.

그래서, 위에서처럼 A가 직접 동기화를 시키는 것이 아니라 방장(Host)에게 수정을 요청한다.

그러면 Host가 동기화를 진행 한 뒤, 다른 클라이언트들에게 전파를 해서 동기화를 맞추게 된다.

즉, 어떤 처리를 동작하는 것처럼 보이지만 실제 동작하지 않고 호스트에게 부탁하고 호스트가 처리하게 된다.

결론 : 모든 중요한 처리는 Host가 대신 처리한 뒤, 다른 클라이언트들에게 뿌리는 방식이다.


장점 : 클라이언트가 나쁜 짓(핵,버그)을 할 수가 없다.

클라이언트를 믿지 않고 서버에서 처리하므로 아무리 클라이언트에서 나쁜 짓을 해도 서버에서 무시해버린다. 


단점 : 서버가 모든 일을 다 처리하므로, 동기화 및 통신의 지연시간이 발생할 수 밖에 없다. 

따라서, 총을 쏴도 안 맞는 일 발생. 왜냐하면 서버로 요청하는 순간 상대편이 이동하게 되면- 결국은 빗맞는다.

쏜 사람은 분명 쐈고 명중했다고 생각하는데 데미지를 입지않아 열받는 일이 발생한다.


클라이언트에서 아무리 뭘 열심히 했다고해도 서버에서 일어나지 않는일은 그냥 전혀 없던 일이 된다.


1) Dedicated

호스트 방식과 다른점은,


100% 자원을 서버 역할을 하기 위해 사용한다. 호스트와 다른점은 플레이어로 게임에 참가하지 않는다.

게임에 참여하지 않고 모든 ㅈㅏ원을 게임 서버로 사용하기 때문에 네트워크 품질이 좋아진다.






Posted by sungho88
,