◆ 수업 정리: 게임 서버의 이해와 역할
◆ 수업 목적
1 게임 서버의 역사와 진화 이해
2 게임 서버의 역할 파악
3 좋은 게임 서버의 특성 분석
◆ 게임 서버의 역사
1 초기 패키지 게임
- 인터넷을 사용하지 않는 게임이 대부분
- 인터넷이 열악하여 네트워크를 사용해도 1:1 플레이 방식
- 전화선을 이용한 통신, 속도는 2~5Kbps 수준 매우 느림
2 인터넷 보급 후
- 3인 이상 플레이를 지원하는 형태로 발전
- 특정 컴퓨터가 데디케이티드 서버(Dedicated Server)로 동작하여 세션 처리 담당
세션(Session) : 게임 공간
3 온라인 게임의 시작 (MUD(Multl User Dungeon) 게임)
- 다수 유저가 텍스트 기반 게임을 함께 플레이
- 게임 서버가 중재 역할을 처음 수행
- 사업자가 서버를 독점적으로 운영하는 형태가 보편화
◆ 게임 서버의 역할
1 게임 루프 관리
- 싱글 플레이:
Input → Simulate(로직 처리) → 렌더링 의 반복(게임 루프)
- 멀티 플레이:
- 클라이언트의 입력이 서버에서 처리 → 상태 변화 전달 → 클라이언트가 렌더링
- 로직 처리가 어떻게 구성되냐에 따라 P2P, CS, Web 방식으로 분류
클라이언트 : 인풋을 받아서 랜더링함, 인풋을 서버로 보냄
서버 :인풋을 시뮬레이트 하고 클라이언트에게 보냄
2 서버와 클라이언트의 상호작용 (네트워크 기반으로 작동)
▶ 연결 : 최초로 클라이언트가 서버와 데이터를 주고받을 준비를 하는 것
▶ 요청과 응답 : 모든 메시징이 요청과 응답의 형식을 취할 필요는 없습니다.
▶ 능동적 통보 : 서버가 클라이언트 요청 없이 주기적으로 정보를 전달하는 방식입니다.
예) 접속 1시간 보상 통보
▶ 연결 해제 : 서버에서 클라이언트와의 통신을 차단하거나 해제하는 경우.
◆ 게임 서버가 하는 일
1 클라이언트와 상호작용
- 플레이어 간의 행동 중재 및 결과 판정
2 보안 처리
- 게임 판정은 서버에서, 일부 처리는 클라이언트에서 담당
- 레이턴시를 고려한 효율적 분배 필요(서버에 많은 로직을 처리하게 시키면 게임이 느려짐)
3 상태 관리
- 세션(게임 공간)의 상태 변화를 관리하며 서버 중단 시 상호작용 불가
◆ 좋은 게임 서버의 목표
1 안정성
- 서버의 상시 작동을 보장
- 소프트웨어 버그를 방지하여 비정상 종료, 교착 상태 등을 예방
2 확장성 (자세한 내용은 분산 서버 구조 특강에서 )
- 수직적 확장: 하드웨어 성능 향상 (경제적, 성능 고려)
- 수평적 확장: 서버 컴퓨터 수 증가 (대용량)
- 두 방법의 조화로운 설계 필요
3 성능
- 빠른 처리 속도 중요 (특히 다수의 동시 행동 처리)
- 코드와 알고리즘 최적화, 적합한 언어 사용(C++ 등)
◆ 게임 서버 개발자를 위한 역량
1 컴퓨터 구조와 네트워크에 대한 깊은 이해
2 게임 특성을 고려한 시스템 설계 능력
3 코딩 역량 및 효율적인 문제 해결 능력
4 디자인 시스템 능력
but 우리는 ‘네트워크’에 집중할 겁니다.
◆ 추가로 탐구해야 할 내용
1 세션(Session) :
- 세션의 정의와 게임 서버에서의 역할
2 프레임률(Frame Rate) :
- FPS와 서버 성능 간의 관계
3 교착 상태(Deadlock) :
- 교착 상태의 원인과 해결 방안
4 수직적/수평적 확장 :
- 각 확장의 구체적 장단점과 사용 사례
과제
주제 : OSI 7계층이란?
OSI 7계층의 간단한 개념과, 각 계층별 주요 개념에 대한 간단히 조사해주세요.
각 계층 별 디테일한 내용은 계층 별 주차에 진행할 예정이니 참고 바랍니다.
https://ashen99.tistory.com/357
※ 요약
◆ 1. 게임 서버의 역사
초기: 인터넷 이전, 전화선을 통한 1:1 플레이.
인터넷 보급 후: Dedicated Server 활용, 3인 이상 플레이 가능.
MUD 게임: 다수 유저 참여, 서버 중심 중재 구조 시작.
◆ 2. 게임 서버의 역할
게임 루프 관리: 클라이언트 입력 → 서버 처리 → 상태 전달 → 렌더링.
서버와 클라이언트 상호작용: 연결 및 요청/응답, 능동적 통보, 연결 해제.
◆ 3. 게임 서버가 수행하는 주요 기능
상호작용 중재: 플레이어 간 행동 판정.
보안: 서버와 클라이언트 간 효율적 로직 분배.
상태 관리: 세션의 상태 변화 관리.
◆ 4. 좋은 게임 서버의 목표
안정성: 지속 작동, 소프트웨어 결함 예방.
확장성: 수직적(성능) + 수평적(규모) 확장 조화.
성능: 빠른 처리와 최적화된 코드/알고리즘.
◆ 5. 개발자 역량
네트워크/컴퓨터 구조 이해.
게임 특성에 맞춘 시스템 설계.
문제 해결 및 코딩 역량.
※ 기억할 것
◆ 게임 서버의 본질은 클라이언트 간 연결과 중재.
◆ 안정성과 성능은 반드시 균형 있게 설계.
◆ 네트워크 원리를 숙지하면 서버 설계 역량 강화.
※Tip
◆ 세션(Session): 게임 내 공간 관리 및 서버 안정성 유지.
◆ 프레임률(Frame Rate): 서버 성능과 FPS의 상관관계 이해 필요.
◆ 교착 상태(Deadlock): 원인 분석 및 해결 방안 학습.
◆ 수직적/수평적 확장: 상황에 맞는 활용 사례 파악.
'내일배움캠프_게임서버(202410) > 분반 수업 스텐다드' 카테고리의 다른 글
스탠다드반 1차 과제 - ios7계층, 물리계층 (0) | 2024.12.03 |
---|---|
스텐다드 24.12.02. 네트워크 들어가기(2) (1) | 2024.12.02 |
과제 : 물리 계층이란? (0) | 2024.11.29 |
스텐다드 24.11.27. 게임 구조 & 네트워크 & 캠슐화 (3) | 2024.11.27 |
OT 24.11.18. (0) | 2024.11.20 |