본문 바로가기
내일배움캠프_게임서버(202410)/분반 수업 스텐다드

게임서버

by GREEN나무 2024. 11. 20.
728x90

수업 정리: 게임 서버의 이해와 역할

 

수업 목적

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): 원인 분석 및 해결 방안 학습.
◆ 수직적/수평적 확장: 상황에 맞는 활용 사례 파악.