웹 서버와 게임 서버를 둘 다 접해본 상태이고,
현재는 게임 서버 위주로 공부를 하고 있습니다.
공부를 하면서 웹 서버와 게임 서버가 다른 점이 점점 보이게 되었습니다.
웹 서버는 간단하게 보면 HTTP 서버이면 Stateless(무상태) 프로토콜입니다.
그래서 클라이언트가 요청을 보낼 때에만 해당 요청에 맞게 응답을 보냅니다.
반대로 게임 서버는 클라이언트가 요청을 보내지 않아도
서버측에서 클라이언트로 데이터를 전송할 상황이 있습니다.
예를 들면 다른 유저가 채팅을 쳤거나 케릭터를 움직일 때
같은 공간에 있는 다른 유저들애게도 동기화를 해줘야 하기 때문입니다.
이런 차이를 이번의 계기로 공부하게 되면 웹 서버와 게임 서버를 조금 더 알아갈 수 있을 것 같아서
이렇게 글로 작성하게 되었습니다.
HTTP 또는 HTTPS를 통해 웹 브라우저에서 요청하는 HTML 문서나 오브젝트(이미지 파일 등)을 전송해주는 서비스 프로그램을 말한다.
<위키피디아 - 웹 서버>
웹 서버는 통상적으로 우리가 자주 접하는 웹 사이트 서비스를 위한 서버입니다.
특징
위와 같은 특징들이 있습니다.
이런 웹 어플리케이션을 개발하기 위해 프레임워크라는 강력한 도구를 사용해서 생산성을 올립니다.
그 중에서 많이 알려진 프레임워크는 스프링 부트(Spring Boot), Django(쟝고), ASP.NET(C#)
등이 있습니다.
멀티플레이 비디오 게임을 즐기기 위해 게임 클라이언트에 쓰이는 서버로, 자신의 컴퓨터나 다른 사람의 컴퓨터에서 실행된다.
<위키피디아 - 게임 서버>
(출처 - NC소프트 리니지 리마스터)
여기서 실시간 통신이 중요한 게임 서버의 예로 멀티플레이 MMORPG를 들 수 있습니다.
다수의 사용자가 특정 구역에 모여서 채팅을 하거나 사냥을 합니다.
한 명의 유저가 케릭터를 움직이면 다른 유저에게도 동일하게 움직이듯이 보이게 해야 합니다.
그래서 한 명의 유저가 움직이거나 행동한 것을 다수의 유저에게 전송해줘야 합니다.
이런 차이점 때문에 게임 서버는 실시간 통신의 중요성이 더 높습니다.
웹 서버로만 구축된 게임은 해당 회사의 아키텍처를 확인하지 않는 이상 모를 것 같습니다.
하지만 웹 서버의 비율이 꽤나 높을 것 같은 게임들이 있습니다.
그리고 이런 웹 서버 시스템의 비중이 높은 게임들의 장르를 SNG 게임이라고 합니다.
소셜 네트워크 게임(Social Network Game) 장르는 페이스북과 같은 소셜 네트워크 서비스 플랫폼 기반으로, 사용자의 온라인 인맥과 유대관계를 증진하기 위해 사용자 참여 및 관계 맺기를 극대화한 새로운 형태의 사회적 인맥 기반의 게임입니다.
SNG 장르의 게임의 예로는
타이니팜, 롤더스카이, 레알팜, 클래시 오브 클랜이 있습니다.
이런 게임들은 수집형 게임의 형태를 띄우는 경우가 많습니다.
아이템을 수집해서 해당 아이템을 조합해서 전투를 합니다.
대부분 전투는 자동으로 진행되거나 실시간으로 게임 스킬을 주고 받지 않습니다.