#4. 게임 서버와 클라이언트

게임 서버 프로그래밍/게임 서버 프로그래밍 교과서

2020. 2. 17. 16:03

4.게임 서버와 클라이언트

게임 서버와 클라이언트

  • 패키지 게임에서 게임 서버

    • 데디케이티드 서버

      렌더링과 사용자 입력 처리를 전혀 받지 않고, 순전히 클라이언트의 연결을

      받는 세션을 처리만 하는 프로그램

  • 서버의 역할

    • 온라인 게임에서는 여러사람의 상호 작용을 어디선가 중재해야 한다
    • 클라이언트의 게임 로직을 일부 가져간다
  • 게임 클라이언트와 서버의 상호 작용

    • S-C 상호작용

      • 연결

        최초로 클라이언트가 서버와 데이터를 주고받을 준비를 하는 것

      • 요청-응답

        클라이언트는 서버에 메시지를 보내고, 서버는 이를 처리한 후 결과를 응답해 줌

      • 능동적 통보

        클라이언트에 요청을 보낸 적도 없는데 서버에서 능동적으로 통보 하는 것

        EX)Player1이 나를 공격했을 때 체력이 깎이는 것

      • 연결 해제

  • 게임 서버가 하는 일

    • 여러 사용자와 상호 작용
    • 클라이언트에서 해킹 당하면 안되는 처리
    • 플레이어의 상태 보관
  • 게임 서버의 품질

    • 안정성
    • 확장성
    • 성능
    • 관리 편의성
  • 안정성

    • 치밀한 개발과 유닛 테스트

      • 유닛 테스트

        자동화된 자가 검증

      • 80 : 20 법칙

        모든 프로그램 성능의 80%는 20%의 소스 코드에서 나타난다는 파레토 법칙

      • 가정하지 말고 검증하라

        봇테스트(스트레스 테스트)

        : 사람 대신 컴퓨터를 이용하여 자동으로 작동하는 게임 클라이언트를 대량으로

        실행시켜 테스트 하는 것

    • 서버가 불안정할 때 쓰는 방법

      • 서버가 죽더라도 최대한 빨리 다시 살아나게 한다

        서버 종료시 자동으로 켜지도록 만드는 프로그램

      • 서버는 죽더라도 최대한 적은 서비스만 죽게 한다

        • 게임월드 하나를 100개의 프로세스로 나눈다면 서버 프로세스가 하나 죽더라도

          전체 사용자의 1%만 이용이 중단된다

        • 분산 서버 사용

      • 서버 오작동에 대해서 로그를 남긴다

        서버가 비정상 종료될 때 크래시 덤프를 파일로 남기거나 서버가 최근에 받았던 메시지

        종류를 파일로 남기는 방법

  • 확장성

    서버를 얼마나 많이 설치할 수 있는가 or

    사용자 수가 늘어나더라도 서비스 품질이 떨어지지 않고 유지되느냐

    • 수직적 확장

      하드웨어를 좋은 것으로 바꾸는 것

    • 수평적 확장

      서버 머신 개수를 늘리는 것

  • 성능

    얼마나 빨리 처리하는가

    • 서버 성능을 높이는 법

      • 서버의 단위 처리 속도를 높이는 것

      • 서버의 과부하 영역을 분산

      • 코드 프로필링

        어떤 함수가 처리 시간을 많이 차지하는지 발견한 후 그 것에 집중 하는 방식

      • 네트워크 프로토콜 최적화

        • 메시지의 양을 줄인다 (메시지 압축)

        • 양자화

          정수 혹은 부동소수점 값의 정밀도를 낮추는 대신 값이 차지하는 데이터 크기를

          줄이는 방법

        • 메시지 교환 횟수 줄이기

      • 고품질 네트워크 회선을 가진 데이터센터에 서버를 설치

      • 지리적으로 가까운 플레이어끼리 서로 플레이를 유도

      • P2P 네트워킹

  • 관리 편의성

    • 관리도구

      서버 프로그램을 원격으로 관리하는 프로그램 이용

    • 관리도구 기능

      • 서버 켜기/끄기
      • 동시접속자 수 보기
      • CPU, RAM 사용량 보기
  • 서버 구동 환경

    • 온프림

      데이터센터에 직접 서버 하드웨어와 운영체제를 설치해서 관리하는 것

    • 클라우드 서버

      매우 많은 서버가 모인 집합체

'게임 서버 프로그래밍 > 게임 서버 프로그래밍 교과서' 카테고리의 다른 글

#6. 프라우드넷  (0) 2020.02.17
#5. 게임 네트워크  (0) 2020.02.17
#3. 소켓 프로그래밍  (0) 2020.02.17
#2. 컴퓨터 네트워크  (0) 2020.02.17
#1 프로그램과 프로세스  (2) 2020.02.17