해당 글은 인프런의 [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 |