<서버 OT>
1. 서버란 무엇인가?
: 다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행중인 프로그램
1) Web Server (aka. HTTP Server)
ex) 테이크아웃 포장 전문 식당: 손님이 음식을 받아서 떠나면, 그 후론 연락이 끊긴다.
-> 질의/응답 형태: request/response 형태
* 사용하게 되는 경우
- 드물게 정보를 요청/ 갱신 한다.
- 실시간 Interaction이 필요하지 않음: 실시간 채팅 등이 필요 x
- 식당에서 손님한테 먼저 접근할 일이 없다
- 주문 후 손님이 바로 떠나면, 손님의 상태를 당분간 잊고 지낸다(Stateless)
=> 게임 진행 후, 단순히 결과만을 저장할때 웹서버를 사용하면 편리
- 프레임워크를 하나 골라서 사용
- ASP.NET
- Spring(Java)
- NodeJS(Javascript)
- Django, Flask(Python)
2) Game Server (aka. TCP Server ...)
ex) 일반 식당: 서빙 직원이 와서 손님에게 물어볼 수도 있고, 손님이 추가 주문을 하기도 함
-> 실시간 Interaction이 있다.
- 사용하게 되는 경우
- 요청/갱신 횟수가 많다.
- 실시간 Interaction이 필요하다: 내가 게임에서 어떤 물체를 움직이면 실시간으로 움직이는 것을 다른 사용자에게도 확인 가능해야함.
- 언제라도 직원이 손님한테 접근 가능해야한다.
- 손님이 식당에 머무는 동안, 손님의 상태를 보며 최상의 서비스를 제공한다.(Stateful)
- 게임/ 장르에 따라 요구사항이 너무나도 달라서 최적의 프레임워크라는 것이 존재하기 애매함
- MMORPG 게임 서버 제작은 식당 운영에 비유 가능
- 멀티쓰레드(Concurrency): 직원들 고용하고 운영하는 것
- 네트워크: 직원들이 손님과 어떤 방식으로 대화를 할지
- DB: 결제 및 장부 처리를 어떤 방식으로 할지
- 게임 로직: 손님들의 주문을 신속하고 맛있게 요리하는 것
- 서버 구조: 위에서 정한 정책에서 맞는 식당의 인테리어에 대해 고민하는 것
[개발 환경 설정]
1. Visual Studio를 사용 -> 프로젝트 템플릿을 콘솔 앱(.NET Core)로 -> Server 프로젝트를 만든다.
2. 솔루션에서 우 클릭하여 프로젝트를 두개 더 추가한다 -> ServerCore와 DummyClient
3. 솔루션 속성에서 여러개의 프로젝트를 실행할 수 있다. -> 서버와 클라이언트를 동시에 실행시켜 진행
'Development > 게임 서버' 카테고리의 다른 글
[Part 4 게임 서버] 멀티쓰레드 프로그래밍 5(Lock 구현 이론 ~ AutoResetEvent) (0) | 2022.01.10 |
---|---|
[Part 4 게임 서버] 멀티쓰레드 프로그래밍 4(Lock 기초, DeadLock) (0) | 2022.01.07 |
[Part 4 게임 서버] 멀티쓰레드 프로그래밍 3 (Interlocked) (0) | 2022.01.07 |
[Part4 게임 서버] 멀티쓰레드 프로그래밍 2(컴파일러 최적화, 캐시 이론, 메모리 베리어) (0) | 2022.01.07 |
[Part 4 - 게임 서버] 멀티쓰레드 프로그래밍1(개론과 스레드 생성) (0) | 2022.01.06 |