해당 글은 인프런의  [C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버. by Rookiss  강의를 수강하면서 만든 저만의 치매 방지 노트입니다.  강의 보러 가기 click

 

서버란 무엇인가?

 

 

< 영업중인 식당 > 과 유사.

 - 손님이 올 수 있도록 식당을 열고 대기중인 상태.

 - 손님이 오면 식당 메뉴/ 정책에 따라 서비스 제공

 


 

[ Web Server ]

- < 테이크 아웃 포장 전문 식당 >

    - 손님이 음식을 받아서 떠나면, 그 이후론 연락이 끊긴다.

    - 질의 / 응답 형태

 

[ Game Server ( aka. TCP Server , Binary Server, Stateful Server ) ]

- < 일반 식당 >

    - 서빙 직원이 와서 손님에게 물어볼 수도 있고, 손님이 추가 주문을 하기도 하고, 

    - 실시간 interaction이 있다.

 

 


Web Server 는 

 

드물게 정보를 요청/ 갱신한다.

실시간 interaction이 필요하지 않다.

식당에서 손님한테 먼저 접근할 일은 없다.

주문 후 손님이 바로 떠나며, 손님의 상태를당분간 잊고 지낸다. (Stateless 서버라고도 부른다. )

 

처음부터 만드는 경우는 사실상 없고, 최적의 프레임 워크를 하나 골라서 사용한다. 

ASP.NET (C#)

Spring (java)

NodeJS (javascript)

Django, Flask (Python)

PHP 

... 

 

반면에 게임 서버는 

 

요청/ 갱신 횟수가 많다. 

실시간 interaction이 필요하다 ( 주기적으로 패킷을 받아야한다. )

언제라도 직원이 손님한테 접근 가능해야한다.

손님이 식당에 머무는 동안, 손님의 상태를 보며 최상의 서비스를 제공한다 (Stateful )

 

 

게임 / 장르에 따라 요구사항이 너무나도 다르다.

- 최적의 프레임워크라는 것이 존재하기 애매함.

 

ex ) 회전 초밥 / 삼겹살 / 호텔 뷔페 / 국밥

- 메뉴가 다른데 식당 인테리어와 채용 직원 수가 동일할 수 없다.

 

그럼 무엇을 고려해야할까?

 

고려할 대상 게임 서버와 유사성
손님 한도 (몇 명까지 받을 수 있는지 ) 최대 동시 접속자
한 방에 들어갈 수 있는 손님의 일행 한도 ( 인테리어 ) 게임 장르 및 채널링
직원 역할 구분 (겸직 가능) 게임 로직( 요리사), 네트워크(서빙) , DB(결제)
직원은 몇 명을 둘지? 쓰레드 개수
요리사/ 서빙 / 결제 직원 비율을 어떻게? 쓰레드 모델
주문은 어떻게 받을까? ( 손님이 불러서? 벨?) 네트워크 모델
손님이 기다릴 수 있는 시간 한도 ( 패스트푸드? 고급?) 반응성(FPS, MMORPG)
장부 및 결제는 어떻게? 데이터 베이스

 

 

 

 

결론 : 웹서버와 게임 서버는 많이 다르다

 

'C++과 언리얼로 만드는 게임 개발 > Part4. Server' 카테고리의 다른 글

★(중요_다시듣기)★DeadLock | V  (0) 2022.04.28
lock 동기화 방법(2) | V  (0) 2022.04.27
Atomic 동기화 방법(1) | V  (0) 2022.04.27
쓰레드 생성 | V  (0) 2022.04.15
환경 설정  (0) 2022.04.12

+ Recent posts