게임 서버 개론
서버란?
서버 👉 다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행 중인 프로그램
영업 중인 식당과 유사하다.
손님이 올 수 있도록 식당 열고 대기하다가 손님 오면 서비스 제공
✈ 서버의 종류
1️⃣ Web Server
1️⃣ Web Server ex) HTTP
질의/응답 형태
1. 정보 요청/갱신이 드물다.
2. 한번만 질의 응담 받고 떠남 단순히 한번만 교류
- 간단한 요청과 그에 대한 응답을 할 때 많이 사용한다.
- 예를 들어 로그인, 랭킹 시스템 불러오기 같은 단발성으로 불러오고 말 것들은 웹서버를 사용하는 것이 좋을 것 같다.
3. 실시간 상호 교류가 필요하지 않다.
4. 식당에서 직원이 손님에게 먼저 접근하는 일이 없다. 즉, 서버가 먼저 클라에게 접근하는 일이 없다.
테이크 아웃 식당
1. 손님이 테이크 아웃 해가지고 음식 갖고 떠나면 연락 끊김. (클라가 떠나고나면 클라의 상태를 당분간 잊고 지낸다. (Stateless))
게임 뿐만 아니라 웹 서비스를 만드는데에도 사용된다.
1. 구글, 아마존, 네이버 등
보통 처음부터 서버를 만드는 경우는 없고 프레임워크(구현되어져 있는 뼈대)를 사용하여 제작한다.
1. ASP.NET (C#), Spring (Java), Node JS (Javascript), Django(Python), Flask(Python), PHP,.. 각 언어마다 자기만의 프레임워크가 있다.
2️⃣ Game Server
2️⃣ Game Server ex) TCP, Binary, Stateful
실시간 상호작용
1. 정보 요청/갱신이 많다.
- 게임 할 때 내가 뭘 움직이면 상대방 컴퓨터에서도 똑같이 내가 움직인게 보여야 하고 등등 계속해서 정보가 갱신되므로 질의응답 횟수가 어마어마하다. 서버는 계~~속 클라들과 실시간으로 교류해야 한다.
2. 실시간 상호 교류가 많이 필요하므로 언제라도 직원(서버)이 손님(클라)한테 접근이 가능해야 한다.
3. 손님이 식당에 머무는 동안, 직원은 계속 손님의 상태를 확인하면서 최상의 서비스를 제공해야 한다. (Stateful)
일반 식당
1. 서빙 직원이 와서 손님에게 물어볼 수도 있고 손님이 추가로 주문을 할 수도 있음. 즉, 서버-클라 서로 상호적인 교류가 잦음
게임 서버의 제작에 있어서 웹서버처럼 최적화된 프레임워크가 존재하기가 어렵다. 게임 장르마다 요구 사항이 다양하고 다르기 때문이다. 식당마다 메뉴와 인테리어, 직원 수 등등 전부 다 다르듯이!
손님은 몇 명 받을지는 최대 동시 접속자와 연관지을 수 있겠고, 직원을 총 몇명 돌릴지는 쓰레드가 되겠다. 이렇게 서버와 식당은 많이 유사해서 서버를 식당에 비유하기 적합하다.
멀티 쓰레드 👉 직원들 고용하고 운영
네트워크 👉 직원들이 손님과 어떤 방식으로 대화를 할지
DB 👉 결제 및 장부 처리를 어떤 방식으로 할지
게임 로직 👉 손님들의 주문을 신속하고 맛있게 요리하는 것
서버 구조 👉 위에서 정한 정책에 맞는 식당의 인테리어를 고민하는 것
🚀 환경 설정
C# 콘솔 앱(.NET Core)으로 프로젝트 생성
프로젝트
📘DummyClient
얘 하나가 다수의 클라이언트 역할을 하도록 할 것
📘Server
나중에 올릴 그 서버
📘ServerCore
서버에 필요한 핵심 기능들
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 4-2-2. 멀티쓰레드 프로그래밍 : 쓰레드 생성 (0) | 2023.09.04 |
---|---|
Part 4-2-1. 멀티쓰레드 프로그래밍 : 멀티쓰레드 개론 (0) | 2023.09.04 |
Part 4. 게임 서버 (0) | 2023.09.03 |
Part 3-13-9. 미니 RPG : 몬스터 자동 생성, 完 (0) | 2023.09.02 |
Part 3-13-8. 미니 RPG : 레벨업 (0) | 2023.09.02 |