1. 서버의 기본 개념

서버는 크게 세 가지로 구분됩니다:
1. 하드웨어: 물리적 컴퓨터 장치.
2. 운영체제: 서버 프로그램이 실행되는 환경.
3. 프로그램: 서버 역할을 수행하는 소프트웨어.

게임 프로그래밍에서 "서버"는 주로 프로그램을 의미하며, 클라이언트와 통신하고 데이터를 처리하는 역할을 합니다.

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


2. 서버의 종류

a. Web Server (HTTP Server)

  • 특징: 질의/응답 형태로 작동하며, 실시간 상호작용이 필요 없는 경우에 사용됩니다.
    • 손님이 요청할 때만 동작하며, 요청과 응답 간의 연결 상태를 유지하지 않기 때문에 Stateless 서버라고도 합니다.
    • 주로 웹 서비스(홈페이지, API 등)를 구축할 때 사용됩니다.
  • 비유: 테이크아웃 식당.
    • 손님이 오더를 내리면 특정 작업만 수행 후 종료합니다.
  • 사용 기술:
    • Java(Spring), JavaScript(Node.js) 등 다양한 프레임워크가 사용됩니다.
  • 제한 사항:
    • 실시간 게임 환경에는 적합하지 않지만, 초기 로그인, 인증 등과 같은 작업에 유용합니다.

b. Game Server

  • 특징: 실시간 상호작용을 처리하며, 클라이언트와 지속적으로 데이터를 주고받는 Stateful 서버입니다.
    • 클라이언트의 상태(위치, 액션 등)를 계속 관리하며, 지속적으로 반응할 준비가 되어 있습니다.
  • 비유: 일반 식당.
    • 손님과의 실시간 상호작용을 위해 서버(직원)가 항상 대기 중입니다.
  • 활용:
    • 대규모 다중 사용자 온라인 게임(MMORPG)이나 FPS 게임처럼 빠르고 지속적인 반응성이 필요한 경우에 사용됩니다.
  • 추가적인 구조:
    • 초기 로그인 및 인증 과정에서는 웹 서버를 사용하고, 이후 게임 서버와 연결해 실시간 데이터를 처리하는 구조를 사용합니다.

3. 게임 서버 제작 시 고려 사항

게임 서버를 설계할 때는 게임의 장르, 최대 접속자 수, 네트워크 모델 등 여러 요소를 고려해야 합니다. 이를 식당 운영에 비유하면 다음과 같습니다:

게임 서버 요소비유(식당)설명
최대 동시 접속자손님 한도한 번에 접속 가능한 최대 사용자 수를 설정하고 서버 용량을 고려.
장르 및 채널링방의 한도와 인테리어FPS처럼 빠른 응답이 필요한지, MMORPG처럼 여러 채널을 지원할지 결정.
게임 로직요리사서버가 처리할 주요 로직(게임 상태 업데이트, 물리 처리 등).
네트워크서빙 직원클라이언트와 데이터를 주고받는 역할.
데이터베이스(DB)결제 및 장부게임 데이터 저장(유저 정보, 게임 상태 등).
쓰레드 개수직원 수서버의 동시 작업 처리 능력을 결정.
쓰레드 모델직원의 역할 분담CPU 코어와 쓰레드 할당 방식에 따라 작업 분배.
네트워크 모델주문 방식 (벨, 부르기)클라이언트와 서버가 데이터 송수신하는 방식(TCP, UDP).
반응성손님 대기 시간FPS는 빠른 응답, MMORPG는 약간의 지연이 허용됨.

4. 게임 서버의 플랫폼 및 기술

a. 서버 제작 시 기술 고려

  • 게임 서버는 게임 장르에 따라 요구 사항이 달라집니다.
  • 예를 들어, FPSMMORPG는 서버의 반응성과 데이터 처리 속도가 매우 중요하며, 서버의 안정성과 확장성도 필수적입니다.

b. 엔진 기반 서버

  • 언리얼 엔진:
    • 게임 서버 제작에 활용되는 강력한 도구로, 데디케이티드 서버(전용 서버)를 구현할 수 있습니다.
    • FPS 및 배틀로얄 게임(예: 배틀그라운드)에서 널리 사용됩니다.
  • 웹 기반 서버:
    • 많은 방을 지원해야 하는 경우, 웹 기술을 활용한 플랫폼이 필요합니다.
    • 예: 롤(LoL)과 같은 게임은 수많은 방을 지원하기 위해 웹 서버와 게임 서버를 결합한 하이브리드 구조를 사용.

5. 게임 서버의 설계 예시

a. FPS 게임 서버

  • 특징:
    • 빠르고 정확한 반응성 필요.
    • 실시간으로 위치와 액션 데이터를 업데이트해야 함.
  • 구조:
    • Stateful 서버로, 클라이언트의 상태를 지속적으로 유지하며 업데이트.

b. MMORPG 게임 서버

  • 특징:
    • 대규모 사용자와 다중 채널 지원.
    • 데이터 처리와 저장이 핵심(장시간 플레이 데이터를 보존해야 함).
  • 구조:
    • 인증(웹 서버) → 게임 로직(Stateful 서버) → 데이터 저장(DB 서버).

6. 서버 설계 시 퀴즈: 배틀그라운드 서버

  • 배틀그라운드와 같은 게임에서의 서버 설계:
    1. 실시간 상호작용과 빠른 반응성을 제공하는 Stateful 서버 필요.
    2. 방(Room)을 생성하여 많은 유저를 동시에 처리.
    3. 언리얼 엔진의 데디케이티드 서버를 활용하여 구현.
    4. 많은 방이 필요한 경우, 플랫폼 관리에 웹 기반 기술이 포함될 수 있음.

profile
李家네_공부방

0개의 댓글