ch0. 서버 개요 및 환경 설정

Date:     Updated:

카테고리:

태그:

인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click

🚀 서버란?

서버 👉 다른 컴퓨터에서 연결이 가능하도록 대기 상태로 상시 실행 중인 프로그램

  • 영업 중인 식당과 유사하다.
    • 손님이 올 수 있도록 식당 열고 대기하다가 손님 오면 서비스 제공

✈ 서버의 종류

1️⃣ Web Server

1️⃣ Web Server ex) HTTP

  • 질의/응답 형태
    • 정보 요청/갱신이 드물다.
    • 한번만 질의 응담 받고 떠남 단순히 한번만 교류
      • 간단한 요청과 그에 대한 응답을 할 때 많이 사용한다.
      • 예를 들어 로그인, 랭킹 시스템 불러오기 같은 단발성으로 불러오고 말 것들은 웹서버를 사용하는 것이 좋을 것 같다.
    • 실시간 상호 교류가 필요하지 않다.
    • 식당에서 직원이 손님에게 먼저 접근하는 일이 없다.
      • 즉, 서버가 먼저 클라에게 접근하는 일이 없다.
  • 테이크 아웃 식당
    • 손님이 테이크 아웃 해가지고 음식 갖고 떠나면 연락 끊김.
      • 클라가 떠나고나면 클라의 상태를 당분간 잊고 지낸다. (Stateless)
  • 게임 뿐만 아니라 웹 서비스를 만드는데에도 사용된다.
    • 구글, 아마존, 네이버 등
  • 보통 처음부터 서버를 만드는 경우는 없고 프레임워크(구현되어져 있는 뼈대)를 사용하여 제작한다.
    • ASP.NET (C#), Spring (Java), Node JS (Javascript), Django(Python), Flask(Python), PHP,..
      • 각 언어마다 자기만의 프레임워크가 있다.


2️⃣ Game Server

2️⃣ Game Server ex) TCP, Binary, Stateful

  • 실시간 상호작용
    • 정보 요청/갱신이 많다.
      • 게임 할 때 내가 뭘 움직이면 상대방 컴퓨터에서도 똑같이 내가 움직인게 보여야 하고 등등 계속해서 정보가 갱신되므로 질의응답 횟수가 어마어마하다. 서버는 계~~속 클라들과 실시간으로 교류해야 한다.
    • 실시간 상호 교류가 많이 필요하므로 언제라도 직원(서버)이 손님(클라)한테 접근이 가능해야 한다.
    • 손님이 식당에 머무는 동안, 직원은 계속 손님의 상태를 확인하면서 최상의 서비스를 제공해야 한다. (Stateful)
  • 일반 식당
    • 서빙 직원이 와서 손님에게 물어볼 수도 있고 손님이 추가로 주문을 할 수도 있음.
    • 즉, 서버-클라 서로 상호적인 교류가 잦음

게임 서버의 제작에 있어서 웹서버처럼 최적화된 프레임워크가 존재하기가 어렵다. 게임 장르마다 요구 사항이 다양하고 다르기 때문이다. 식당마다 메뉴와 인테리어, 직원 수 등등 전부 다 다르듯이!

손님은 몇 명 받을지는 최대 동시 접속자와 연관지을 수 있겠고, 직원을 총 몇명 돌릴지는 쓰레드가 되겠다. 이렇게 서버와 식당은 많이 유사해서 서버를 식당에 비유하기 적합하다.

  • 멀티 쓰레드 👉 직원들 고용하고 운영
  • 네트워크 👉 직원들이 손님과 어떤 방식으로 대화를 할지
  • DB 👉 결제 및 장부 처리를 어떤 방식으로 할지
  • 게임 로직 👉 손님들의 주문을 신속하고 맛있게 요리하는 것
  • 서버 구조 👉 위에서 정한 정책에 맞는 식당의 인테리어를 고민하는 것


🚀 환경 설정

C# 콘솔 앱(.NET Core)으로 프로젝트 생성

  • 프로젝트
    • 📘DummyClient
      • 얘 하나가 다수의 클라이언트 역할을 하도록 할 것
    • 📘Server
      • 나중에 올릴 그 서버
    • 📘ServerCore
      • 서버에 필요한 핵심 기능들

image

솔루션 우클 - 속성 해보면 이렇게 프로젝트들도 동시에 실행시킬 수 있다는 것을 확인할 수 있다. 한 프로젝트만 실행할 경우 시작 프로젝트로 설정해서 하면 되고, 여러 프로젝트를 실행할 경우라면 이렇게 솔루션 속성에 들어와서 실행할 프로젝트들을 동시에 실행하도록 설정해줄 수 있다.



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Server1 카테고리 내 다른 글 보러가기

댓글 남기기