네트워크 게임 - 기초 이론
1. 4인 멀티 게임에 플레이어는 몇명 존재할까?
답은 16명이다.
모든 플레이어의 게임 세상에 각각 4인의 플레이어가 존재하기 때문이다.
2. 로컬 플레이어와 리모트 플레이어
A 입장 : A(로컬), B(리모트), C(리모트), D(리모트)
B 입장 : A(리모트), B(로컬), C(리모트), D(리모트)
C 입장 : A(리모트), B(리모트), C(로컬), D(리모트)
D 입장 : A(리모트), B(리모트), C(리모트), D(로컬)
3. 리모트 플레이어는 레플리카다
B, C, D 세상에 존재하는 리모트 A는,
A 세상에 존재하는 진짜 A의 레플리카일 뿐이다.
따라서 진짜 A의 동작에 동기화되어 움직인다.
- 각 세상의 A들은 완전히 다른 오브젝트다. 진짜 A와 연결이 끊기면 서로 다른 동작을 취한다.
4. Server - Client 방식을 게임에 적용하는 방법
[1] Play as Host (P2P)
서버 부담을 덜기 위해 플레이어 중 한 명을 호스트이자 서버로 지정하여 다른 플레이어들이 참가하도록 한다.
이때, 핵을 방지하기 위해 클라이언트를 신뢰하지 않는 방식으로 개발한다.
- ex) A가 동작을 원할 시, A가 직접 B, C의 A 레플리카를 동기화시킬 수 없고, 방장인 C에게 A를 대신 움직여달라고 부탁해야한다. 즉, 클라이언트는 어떤 처리를 하려는 척만하고, 실제 물리/충돌 처리 및 동기화는 방장이 맡게 된다.
서버에서 일어나지 않은 일은 애초에 없었던 일이 된다.
따라서 패킷 손실로 인해 서버에 전달되지 않은 정보는 그냥 씹힌다고 보면 된다. (씹힐 확률 : 1초 2발 < 1초 10발)
또한 모든 정보를 동기화하는 것은 아니다. (애니메이션 등)
[2] Dedicated Server
플레이어로 게임에 참가하지 않고 고정된 서버로서 100% 모든 자원을 게임을 돌리는 데 사용한다.
Play as Host 방식에 비해 네트워크 품질이 좋다. (P2P 방식은 방장의 컴퓨터 환경에 의존하기 때문에 매 회 랜덤이다.)