클라이언트,서버 구조 및 웹 어플리케이션과 게임 서버의 차이

김민재·2024년 8월 26일
0
post-custom-banner

클라이언트와 서버

클라이언트: 서비스를 사용하는 컴퓨터(서버에 요청을 보내고 응답을 받는 소비자의 역할)
서버:서비스를 제공하는 컴퓨터(사양에 상관없이 서비스를 제공하는 서비스 제공자의 역할)

서버와 클라이언트의 연결방식

위의 개념을 보면 알겠듯이 클라이언트와 서버는 서로 정보를 주고 받는 관계이며 이는 클라이언트의 요청(Request)서버가 응답(Response)하면서 주고 받게 된다.


이런식으로 클라이언트의 요청을 통해서 서버는 이를 처리하여 보내주는 방식으로 처리를 하게 된다.

그렇다면 게임 서버는 어떤 역할을 할까?

우리가 하는 온라인 게임들(LOL 등)은 다수의 사람과 상호 작용을 하게 되는데 이때 개인 컴퓨터에서 게임 로직을 처리하게되면 다른 사람들과의 차이가 발생하게 된다.

대표적으로 보면, 온라인 게임에서 서로에게 총을 쏘았을 때, 각각의 플레이어의 컴퓨터에서 연산을 처리(나는 ~~에게 총을 쏴서 데미지를 주었다.)하여 게임서버에 보내는 경우에 개인 컴퓨터에 있는 시간을 고려하게 될 것이다. 그렇기에 서로간에 타임렉이 크게 발생하는 경우에도 동일하게 데미지가 들어가게 되는 등의 사례가 발생할 수도 있을 것이다.
그렇지만 만약 그냥 ~~에게 총을 쏘았다만 보내게되고 처리를 서버에서 하게된다면 어떻게 될까?
서로의 컴퓨터 성능에 차이가 나더라도 간단한 로직을 처리하는 정도라면 그렇게 큰 타임렉이 발생하지 않지 않을까?

이런 상호작용 방식을 4가지로 구분해보면
1.연결:클라이언트가 서버와 데이터를 주고받을 준비를 하는 것이며 클라이언트가 서버에게 연결을 요청하면 서버는 이를 수락하여 연결한다.
2.요청-응답:클라이언트는 서버에 메시지를 보내고 서버는 이를 처리한 후 결과에 응답한다.
3.능동적 통보:클라이언트가 서버에게 어떤 상황을 통보한 후 서버 반응을 굳이 받지 않아도될 때가 있으며 클라이언트가 요청을 보내지 않더라도 서버가 능동적으로 통보해야 할 때가 있다.
4.연결 해제:연결을 해제한다.

이런 게임서버는 주로 여러 사용자의 상호작용과 클라이언트에서 해킹당하면 안되는 처리 또는 플레이어의 상태를 보관하는 역할을 하게된다.

웹 어플리케이션과 게임 서버의 차이

웹 어플리케이션 서버(WAS)

WAS는 다양한 서버내의 알고리즘,비즈니스 로직 등과 같은 클라이언트의 요청에 따라 동적인(Dynamic) 컨텐츠를 제공하는 서버,프로그램이다.

동적인 컨텐츠는 말 그대로 활발하다는 영어의 문장인 Dynamic처럼 홈페이지(웹)를 실행중에 있음에도 홈페이지의 상태가 고정되어 있는 것이 실시간으로 변하는 것을 의미한다.


리그오브레전드의 홈페이지에서 마우스 커서를 올려두거나 클릭하는 것으로써 해당 홈페이지에 상호작용을 하여 실시간으로 다른 홈페이지에 들어갈 수 있는 것과 같이 WAS는 이와 같은 동적인 컨텐츠를 제공해주는 것이다.

게임 서버

게임서버는 인터넷 상에서 다수의 플레이어가 같이 게임을 할 수 있게 하기위한 프로그램이나 해당 프로그램이 기동중인 컴퓨터를 말한다.

게임서버는 WAS와 마찬가지로 실시간으로 상태를 변화시키는 실시간 통신을 지원하며 클라이언트의 요청을 통해서 유저와 게임, 유저와 유저간의 상호작용을 지원하는 서버다.

게임서버와 웹 어플리케이션 서버의 차이점은 무엇일까?

게임 서버에서 지원하는 규격(어떤 운영체제,그래픽 카드 등의 성능 차이 등)과 웹 어플리케이션 서버에서 지원하는 규격(해당 웹 페이지가 무엇인지)의 차이와 함께 가장 크게 볼만한 것은 '반응'의 차이이다.
반응이라고 한다면 사람이 사고의 위험에 처했을 때 떠오르는 반응속도? 같은게 떠오르곤 하는데 이것과 비슷한 뜻을 가지고 있긴 하다.

웹 어플리케이션 서버의 경우엔 홈페이지가 즉각 즉각 모든 것을 바로 반영을 할 필요가 없이 약간의 딜레이가 있더라도 사람들은 큰 위화감을 느끼지 못하게 된다 => 리그오브레전드를 검색했을때 해당하는 결과가 뜨는 시간이 0.0001초가 되지 않더라도 사람들의 약간의 답답함?을 끌어낼 뿐이지 나오는 결과에 변화가 없어지게 된다.

그렇지만 게임서버는 다르게 된다.
서로에게 데미지를 주고 서로를 쓰러트려야하는 AOS,아레나 장르의 게임에서는 데미지가 들어가는 타이밍이란 것은 정말 중요한 것이다.
내가 상대에게 데미지를 먼저 주었음에도 불구하고 상대도 역시 동일한 데미지를 주었다고해서 서로가 동시에 죽음을 맞이하게 된다면 이 얼마나 불합리함을 느끼겠는가?
그렇기에 게임 서버에서는 DB 처리문을 줄이고서라도 게임서버의 '반응'을 높이고자 노력하게 된다.

이런식으로 게임서버와 웹 어플리케이션 서버의 차이점에 대해서 알아보았다.

그렇다면 웹 게임은 대체 무엇인가?

웹에서 플레이할 수 있는 게임이라는 것은 무엇일까?
웹에서 플레이하는만큼 게임 서버와는 다르게 '반응'이 즉각적으로 반영되어야만 하는 것일까?

검색을 하다보니 여러모로 나온 것들을 정리해서 생각해보고자 한다.
일단은 이런 지렁이 게임이나 리치 마작과도 같이 실시간 '반응'이 중요한 게임에서는 게임 서버나 웹 서버 기반 게임 서버를 사용하는 경우가 있다고 한다.
웹 서버 기반 게임 서버의 경우엔 일반적인 소켓(socket)형 게임 서버와 다르게 즉각적인 반응을 할 필요가 없는 게임에서 사용되기 때문에 수집형 RPG게임에 주로 사용한다고 한다.

profile
ㅇㅇ
post-custom-banner

0개의 댓글