-
네트워크 게임을 개발하는데 필요한 이론적 배경-2TIL 2023. 10. 24. 20:14반응형
1.네트워크 구조
네트워크 서비스들은 기본적으로 서버 클라이언트 방식으로 구성됨
서버(Server) => 한곳에 고정되어 있으며 서비스를 제공하는 컴퓨터
클라이언트(Client) = > 서버로 찾아가서 서비스를 받는 컴퓨터
즉, 서버는 플레이어가 들어갈 게임 세상을 제공하는 곳
클라이언트는 게임 세상에서 뛰어 놀 플레이어를 뜻한다.
=> 서버는 하나지만, 접속하는 클라이언트들은 여러개
서버-클라이언트 방식을 게임에 적용하는 방법은 두가지가 있다.
1.서버 그 자체도 한명의 플레이어로써 게임에 참가하는 것
Server가 Host로써 게임에 참가하는 것(Play as Host)
#우선 참고 글 : 네트워크 이론 배경 1
예를들어
A B C 각각이 게임을 실행시키고 있다.
A는 Host이자 Server이며
ABC 플레이어들이 모여 놀 수 있는 로비를 마련하고,
ABC 사이의 동기화를 관리한다.
즉, A 플레이어가 방장의 역할을 한다.
기존 클라이언트 방식에는 문제가 있는데,
만약 B플레이어가 핵을 사용하는 악성 플레이어라면,
예시로, 1초에 10발 나가는 총알을 100발 발사했다면,
그대로 A,C 화면의 A플레이어 복제품들도 동기화를 통해 같은 행동을 한다.
이러한 문제를 막기 위해서
모든 네트워크 기반 게임들은 절대 플레이어(클라이언트)들을 믿지 않는다.
=>
클라이언트 상에서는 별로 중요하지 않은 처리를 담당시키고
클라이언트 상에서 중요한 처리가 일어나야 하는 경우
호스트 혹은 서버에게 자기가 하려던 처리를 대신하도록 한다.(??)
=>즉, B가 총알을 발사하려 하면,
실제로 B에서 발사되는 것이 아니라 해당 정보를 호스트인 A에 전달하여서
대신 총을 쏴달라고 부탁하게 된다. A에서 모든 처리가 일어난 후,
다른 게임에 정보들을 다시 모든 ABC 게임세상에 전달한다.
이 방식의 장점으로는 클라이언트가 핵이나 버그에 의한 변조를 방지할 수 있다.
또한 이러한 과정에 의해 플레이어 간 싱크 차이가 나게된다.
하지만 이러한 싱크 차이를 줄이려면 큰 비용이 발생하고,
그러므로 아주 중요한 정보만 전달할 수 있어야한다.
(중요하지 않은 정보? 뛰는 애니메이션 갱신)
(중요한 정보? 뛴다는 사실, 점수..)
2.Dedicated Server 사용
서버 컴퓨터가 게임에 참가하지 않고, 게임 내 모든 정보를 떠맡고 있으며
게임 서버의 네트워크 품질이 좋아진다.반응형'TIL' 카테고리의 다른 글
유니티 - 비헤이비어 트리 : BT(Behavior Tree) 개념잡기 와 예시 (0) 2023.10.27 RPC(원격 프로시저 호출 / Remote Procedure Calls) 란 무엇인가? (1) 2023.10.25 네트워크 게임 개발 이론-1 (1) 2023.10.24 PUN2 - 네트워크 공부(강의 정리) (1) 2023.10.24 최종 프로젝트 - 1 일차 / 플레이어 조작 로직 결정 (0) 2023.10.23