웹 서버와 게임 서버 비교 / VS Code 실행 환경 설정
서버란? - 다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행 중인 프로그램
웹 서버와 게임 서버 차이
웹 서버(테이크아웃 포장 전문 식당) - HTTP Server, 질의/응답 형태
- 서버와 클라이언트가 실시간으로 교류하기보다 필요할 때 정보를 요청·갱신하며, 일반적으로 실시간 상호작용이 필요하지 않다.
- 게임에 국한되지 않고, 웹 서비스를 만드는 데 사용 (구글, 아마존, 네이버 등)
- 처음부터 만드는 경우는 사실상 없고, 프레임워크를 하나 골라서 사용(ASP.NET, Spring, Node.js)
게임 서버(일반 식당) - TCP Server, 실시간 Interaction으로 교류
-
요청/갱신 횟수가 많고 실시간 Interaction이 필요하다.
-
게임/장르에 따라 요구사항이 다르기 때문에 최적의 프레임워크가 존재하기 애매함
고려할 대상 게임 서버와 유사성 손님 한도(몇 명까지 받을 수 있는지) 최대 동시 접속자 한 방에 들어갈 수 있는 손님의 일행 한도 (인테리어) 게임 장르 및 채널링 직원 역할 구분 (겸직 가능) 게임 로직(요리사), 네트워크(서빙), DB(결제) 직원은 몇 명을 둘지 스레드 개수 요리사/서빙/결제 직원 비율을 어떻게 스레드 모델 주문은 어떻게 받을지(손님을 불러서? 벨?) 네트워크 모델 손님이 기다릴 수 있는 시간 한도(패스트푸드? 고급?) 반응성(FPS, MMORPG, ...) 장부 및 결제는 어떻게? 데이터베이스
서버 테스트 환경 구축
- Server, ServerCore, DummyClient 프로젝트를 각각 준비한다.
Server - 클라이언트 접속을 처리하는 실행 프로젝트
ServerCore - 서버의 핵심 기능을 담은 공통 라이브러리
DummyClient - 테스트용 가상 클라이언트를 실행하는 프로젝트

- 여러 프로젝트를 함께 실행할 디버그 설정을 만든다.
우선 Ctrl+Shift+D를 눌러 실행 및 디버그 화면을 연다.

create a launch.json file을 선택한다. launch.json은 VS Code의 실행·디버그 설정을 저장하는 파일이다.

상단의 디버거 목록에서 C#을 선택한다.

Add Configuration에서 {} .NET: Launch C# project를 선택한다. configuration은 하나의 실행 대상을 위한 디버그 설정이며, 이 메뉴는 C# 프로젝트용 설정 틀을 추가한다.
- launch.json의 configurations에 Server와 DummyClient의 디버그 구성을 각각 추가하고 실행할 프로젝트를 지정한다.
4. configurations와 같은 수준에 compounds를 추가한다(Ctrl+Space). compounds는 여러 디버그 구성을 함께 시작하도록 묶는 항목이다.

- 프로젝트를 함께 실행할 복합 구성의 이름을 정하고, Server와 DummyClient의 디버그 구성을 지정한다.

- Run and Debug 목록에서 방금 만든 복합 실행 구성을 선택하고 F5를 누른다.




