서버란?

개발조하·2024년 1월 19일

GameServer

목록 보기
1/9
post-thumbnail

1. 서버

1.1 서버란?

다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행중인 프로그램
ㄴ 예) 손님이 올 수 있도록 식당을 열고 대기 중인 상태.
ㄴ 손님이 오면 식당 메뉴/정책에 따라 서비스를 제공하는 식당과 같은 개념

1.2 서버의 종류

Web Server (HTTP 서버)

ex. [테이크 아웃 포장 전문 식당]
ㄴ 손님이 음식을 받아서 떠나면 그 이후론 연락이 끊긴다.
ㄴ 질의/응답 형태

  • 드물게 정보를 요청/갱신할 경우
  • 실시간 Interaction이 필요 X
  • 식당에서 손님한테 먼저 접근할 일이 없는 경우
  • 주문 후 손님이 바로 떠나면 손님의 상태를 당분간 잊고 지내도 될 경우 (Stateless)
    -> 즉, 랭킹시스템을 위해 게임의 결과물만 툭 던져주는 등 간단한 교류만 필요할 때 사용한다. (ex. Clash of Clans)

Web Server는 단순히 게임에 국한되지 않고 웹 서비스를 만드는 데 사용된다.

처음부터 만드는 경우는 거의없고 다양한 프레임워크 중에 하나를 골라서 사용한다.
우리는 C#을 사용하기 때문에 'ASP.NET'을 사용한다.
(ex. Spring (Java), NodeJS (Javascript), Django, Flask (Python), PHP ...)

Game Server (TCP 서버, Binary 서버, Stateful 서버)

ex. [일반 식당]
ㄴ 서빙 직원이 와서 손님에게 물어볼 수 있고, 손님의 추가 주문도 가능하다.
ㄴ 실시간 Interaction이 있다.

  • 요청/갱신 횟수가 많을 경우
  • 실시간 Interaction이 필요
  • 언제라도 직원이 손님한테 접근 가능해야 할 경우
  • 손님이 식당에 머무는 동안 손님의 상태를 보며 최상의 서비스를 제공해야 할 경우 (Stateful)
    -> 즉, 유저 간의 교류(나와 다른 플레이어의 화면이 동일하게 움직여야 함)도 필요한 경우. (ex. 스타크래프트 등)

게임 서버는 게임/장르에 따라 요구사항이 너무 다르다. (최적의 프레임워크가 따로 없음)

1.3 MMORPG의 Game Server

  • 멀티쓰레드(Concurrency): 직원들 고용하고 운영하는 것
  • 네트워크: 직원들이 손님과 어떤 방식으로 대화를 할지
  • DB: 결제 및 장부 처리를 어떤 방식으로 할지
  • 게임 로직: 손님들의 주문을 신속하고 맛있게 요리하는 것
  • 서버 구조: 위에서 정한 정책에 맞는 식당의 인테리어에 대해 고민하는 것

📄참고자료
[인프런] c#과 유니티로 만드는 MMORPG 게임 개발 시리즈_4. 게임 서버

profile
Unity 개발자 취준생의 개발로그, Slow and steady wins the race !

0개의 댓글