SlideShare a Scribd company logo
1 of 29
Download to read offline
게임 서버의 이해
문서의 목적
• 일반적인 게임 서버에 대한 대략적인 이해를 돕기 위해
• 서버의 용어 및 구조에 대해 이해하고 커뮤니케이션이 가능 하기 위해
• 서버를 고려한 게임 디자인이 가능하도록 하기 위해
• 각종 자료 출처
➢ https://www.slideshare.net/sm9kr/6-20903192
➢ https://www.slideshare.net/hyunjikbae1/ss-35206140
서버란 무엇인가?
서버(Server)란 무엇인가?
• 싱글 플레이 게임의 처리 과정
➢ 단일 컴퓨터 내에서 Input을 받아, 그 컴퓨터에서 게임 로직 및 상태를 처리
서버(Server)란 무엇인가?
• 멀티 플레이 게임의 처리 과정
➢ Input이 네트워크 상의 다른 컴퓨터로부터 발생할 수 있음
➢ 게임 로직 및 상태 처리를 다른 컴퓨터에서 함
서버(Server)란 무엇인가?
• 서버의 정의
➢ 클라이언트에게 네트워크를 통해 서비스를 하는 컴퓨터를 지칭하는 단어
➢ 일반적인 인터넷이나 온라인 게임, 웹 게임 등은 서버 역할만을 수행하는 PC가
존재하지만, 게임 구조에 따라 개인용 컴퓨터(PC)도 서버가 될 수 있음
서버의 종류
서버의 연결 구조에 따른 분류
서버의 종류
• P2P(Peer to Peer) 서버
➢ 클라이언트간 상호 직접 연결
➢ 빠른 반응성 및 저렴한 유지 비용이 장점
➢ 확장성 및 해킹(Cheating)에 취약
➢ FPS 및 RTS 장르에 적합
서든어택
스타크래프트
서버의 종류
• P2P 서버의 처리 구조
➢ 게임의 각종 이벤트를 교환해 각자 게임 로직을 처리
서버의 종류
• P2P 서버의 동기화 구조
➢ 주기적(50ms)으로 이벤트를 모아 서로 한번에 교환
➢ 상대 Peer로 부터 해당 라운드의 이벤트를 모아 각자 처리
▪ 각각의 클라이언트는 모두 위와 같은 형태의 Queue 유지
서버의 종류
• 리슨(Listen) 서버
➢ 호스트(Host) 서버라고도 말하며, 클라이언트 중 하나가 서버의 역할을 담당
➢ 호스트를 패킷 중계
➢ 실제 게임 로직 처리는 P2P 방식처럼 각자 하는 경우가 많음
▪ 모든 로직 처리를 호스트가 담당하면 부하가 크기 때문
➢ 호스트가 게임을 이탈하면 서버 자체가 날아가거나, 다른 플레이어가 호스트 역
할을 이어받음
스타크래프트 대기 방
서버의 종류
• 클라이언트 서버
➢ 클라이언트들은 하나의 큰 서버를 통해 서로 통신
➢ 중요한 로직은 모두 서버에서 처리함으로써 해킹으로부터 비교적 안전
➢ 24시간 돌아가야 하는 게임 중 세션 단위로 분할되는 게임도 클라이언트 서버
를 사용
배틀그라운드
월드 오브 워크래프트
서버의 종류
• 클라이언트 서버의 처리 및 동기화 구조
➢ 각 클라이언트에서 발생하는 입력을 모두 서버로 보내고, 서버에서 일괄적으로
모아서 처리한 후 각 클라이언트에게 내용을 전달 (브로드캐스트)
➢ 네트워크 트래픽이 서버에 집중되는 구조
➢ 게임 내의 NPC가 생성하는 이벤트도 해당 영역의 클라이언트에게 방송
서버의 종류
• 웹 기반 서버
➢ 연결 유지가 필요 없어 접속이 불안정한 환경에서 유리
➢ 반응 속도가 중요하지 않은 모바일 게임 및 소셜 게임 장르에 적합
➢ 부하 분산(웹 서버 추가)이 용이하여 확장성이 높음
아이 러브 커피
팜빌
서버의 종류
• 웹 기반 서버의 처리 구조
➢ 웹의 특징을 그대로 물려 받은 Request/Response 구조
➢ 수동적인 특징이 있으며, 서버에선 몬스터의 선공과 같은 능동적인 처리 불가능
서버의 종류
• 정리
➢ 만들고자 하는 게임의 특성에 따라 서버의 구조를 결정
▪ Scalability : 많은 수의 유저를 처리함에 유연한가?
▪ Responsiveness : 상대와의 작용-반작용이 빠르게 처리 되는가?
▪ NPC-Activeness : NPC 활용이 얼마나 적극적일 수 있는가?
▪ Security : 해킹으로 부터 얼마나 안전한가?
▪ Robustness : 불안정한 접속 및 끊김으로 부터 복구가 쉬운가?
▪ Simplicity : 구현 및 유지 보수 비용이 싼가?
서버의 통신 방법
서버의 통신 방법
• 통신 규약 (프로토콜)
➢ IP
▪ 데이터를 다른 컴퓨터에게 보내기 위해서는 해당 데이터를 어디로 보내야 하는지를 알아야 함
▪ 그 보내는 위치(주소)가 바로 IP
✓ 192.168.100.100
▪ 숫자 만으로는 그곳이 어딘지 사람이 식별하기 어려움으로, 이를 Domain Name으로 바꿔주는 Domain Name
Service를 사용
✓ www.naver.com
서버의 통신 방법
• 통신 방법
➢ TCP
▪ 서버와 클라이언트 간의 데이터를 신뢰성 있게 전달하기 위해 만들어진 규약
▪ 데이터는 네트워크 선로를 통해 전달되는 과정에서 손실 되거나 순서가 뒤바뀔 수 있는데, TCP는 이런 손실을 검색해
서 교정하고 순서를 재조합하도록 해줌
➢ UDP
▪ 서비스의 신뢰성이 낮고 데이터의 도착 순서 및 도착 여부를 확인하지 않는 통신 규약
▪ 패킷 손실이 발생할 가능성이 있음
➢ 차이점
▪ TCP
✓ 1대1 연결 지향. 신뢰할 수 있는 통신 서비스 제공
✓ 연결 확립과 보내진 패킷의 확인. 순서화. 전달 중 손상된 패킷을 복구하는 책임을 짐
▪ UDP
✓ 1대1, 1대다의 비연결 지향. 신뢰할 수 없는 통신 서비스 제공
✓ 데이터 크기가 작을 때나, 연결 확립에 의한 부하를 피하기 위해 사용
✓ 수많은 온라인 게임에서 사용하는 방식
서버의 통신 방법
• 패킷 & 라우팅
➢ 패킷
▪ 통신, 네트워크에서 한번에 전송하는 정보의 단위
▪ 보내야할 데이터들을 패킷 단위로 잘게 쪼개서 전송
▪ 패킷에 담겨진 데이터는 압축 형태를 띄는 경우가 많음
▪ 패킷에는 이 데이터가 보내져야 할 주소와 내용을 담고 있음
➢ 라우팅
▪ 하나의 컴퓨터에서 네트워크로 연결 된 다른 컴퓨터와 통신을 할 때 발생한 패킷을 목적지 까지 전달해주는 과정
▪ 데이터를 최적의 경로를 선택하여 목적지까지 이송하는 모든 절차
▪ 패킷은 라우터에서 지정한 경로를 타고 이동 함
✓ 라우터 : 공유기. 패킷의 목적지를 추출해 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 패킷을 이동
시키는 장치
분산 서버 구조 (로드 밸런싱)
분산 서버 구조
• 분산 서버가 없다면?
➢ 모든 게임 서버 로직은 1개의 컴퓨터에서 수행
➢ 모든 플레이어 정보는 1개의 데이터베이스에 저장
➢ 동시접속자 수가 무제한으로 발생할 경우
▪ 과부화로 인해 서버로 보낸 메시지의 응답 처리가 늦게 도착함
▪ 서버 자체에 접속 과정이 매우 오래 걸림
▪ 서버와의 연결이 돌발적으로 해제 됨
▪ 서버로의 접속 자체가 실패함
분산 서버 구조
• 간단한 분산 서버 구조의 한 예
➢ 게임 서버와 데이터베이스로 구성된 세트를 여러 개 나열
➢ 계정 인증 및 로그인과 관련된 부분은 별도로 처리
로스트아크 분산 서버
와우 분산 서버
분산 서버 구조
• 분산 서버 방법
➢ 데이터 분산
▪ 유저 데이터가 한 곳에 너무 많이 몰리는 것을 방지하기 위한 방법
▪ 한 게임 서버에 최대 유저 수를 놓고, 그런 서버를 여러 대 배치
▪ 데이터베이스의 경우 샤딩 처리
✓ 샤딩 : 한 서버의 플레이어 데이터를 각기 다른 데이터베이스로 분할해 보관하는 방법
➢ 기능적 분산
▪ 서버가 행하는 기능을 서버별로 독립적으로 설계하는 방법
✓ 채팅 서버, 로그인 서버, 매칭 서버, 경매장 서버 등
✓ 각 서버에 문제가 생겨도 게임 플레이 자체에 문제를 주지 않음
✓ 문제 발생 시 추적 및 해결에 용이한 구조
데이터 분산
기능적 분산
상용 서버 소개
상용 서버 소개
• AWS
➢ 아마존 웹 서비스 (Amazon Web Services)
➢ 아마존이 제공하는 각종 원격 컴퓨팅 서비스
➢ AWS를 통해 각종 네트워크 환경, 보안, 데이터베이스, 서버 컴퓨터 머신 등을 제공
➢ 일반적으로 가장 많이 사용하는 상용 서버
• Photon
➢ Unity에서 많이 사용하는 네트워크 엔진
➢ 서버 자체를 대여해 사용할 수 있으며, 각종 서버 구축용 라이브러리 제공
➢ 포톤 클라우드라는 SDK를 이용해 클라이언트 개발 후 클라우드 서버에 연결 해 사용도 가능
서버 관련 용어 설명
서버 관련 용어 설명
• 오버 플로우 (Overflow)
➢ 서버에서 사용하는 데이터 타입에서 정해진 범위를 넘는 데이터가 입력됐을 시 서버가 뻗는 현상
▪ Ex. 몬스터 HP가 int로 선언되어 있는데, HP 값이 22억일 경우
▪ Int 데이터 타입의 허용 범위를 넘는 데이터가 입력되었으므로 서버가 뻗음
• 스케일 아웃 / 스케일 업
➢ 스케일 업
▪ 서버 한대의 성능을 업그레이드 시켜 더 많은 처리가 가능하게 만드는 행위
➢ 스케일 아웃
▪ 분산 서버 구조에서 서버와 데이터베이스의 대수를 늘려 부하를 더욱 줄이는 행위
서버 관련 용어 설명
• 레이턴시 (Latency)
➢ 클라이언트와 서버 간의 지연 시간
➢ 클라이언트에서 이벤트를 발생시키고 그에 따른 응답 속도를 ms로 표현
➢ 응답 속도가 느려 지연 시간이 발생할 경우 ‘렉’이 발생
• 타임 아웃 (Time Out)
➢ 클라이언트에서 이벤트를 호출 한 후 지정된 지연 시간을 초과했을 경우 발생하는 현상
➢ 타임 아웃이 발생하면 강제로 네트워크 연결을 끊거나, 해당 이벤트에 대한 반응을 대기하지 않는 상태가 됨

More Related Content

What's hot

게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해Seungmo Koo
 
Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기태성 이
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법Lee Sangkyoon (Kay)
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해Seungmo Koo
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCHo Gyu Lee
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점Ryan Park
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직Hoyoung Choi
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양Jubok Kim
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버iFunFactory Inc.
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기강 민우
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리강 민우
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들Hyunjik Bae
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 

What's hot (20)

게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
 
Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해
 
Ndc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABCNdc14 분산 서버 구축의 ABC
Ndc14 분산 서버 구축의 ABC
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점
 
중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
 
NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 

Similar to 게임 디자이너와 게임 서버

[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
Network programming report
Network programming reportNetwork programming report
Network programming reportJongwon
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기YEONG-CHEON YOU
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae
 
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드Hyunjik Bae
 
웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드Hyunjik Bae
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Amazon Web Services Korea
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021Amazon Web Services Korea
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해Seungmo Koo
 
Block chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overviewBlock chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overview병준 김
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live세준 김
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망Vong Sik Kong
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망gueste9d250
 

Similar to 게임 디자이너와 게임 서버 (20)

[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
Network programming report
Network programming reportNetwork programming report
Network programming report
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드
 
웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 
게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해게임제작개론 : #6 게임 시스템 구조에 대한 이해
게임제작개론 : #6 게임 시스템 구조에 대한 이해
 
Block chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overviewBlock chain architecture and hyperledger fabric overview
Block chain architecture and hyperledger fabric overview
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망
 
게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망게임 서버 기술 현황 및 전망
게임 서버 기술 현황 및 전망
 

게임 디자이너와 게임 서버

  • 2. 문서의 목적 • 일반적인 게임 서버에 대한 대략적인 이해를 돕기 위해 • 서버의 용어 및 구조에 대해 이해하고 커뮤니케이션이 가능 하기 위해 • 서버를 고려한 게임 디자인이 가능하도록 하기 위해 • 각종 자료 출처 ➢ https://www.slideshare.net/sm9kr/6-20903192 ➢ https://www.slideshare.net/hyunjikbae1/ss-35206140
  • 4. 서버(Server)란 무엇인가? • 싱글 플레이 게임의 처리 과정 ➢ 단일 컴퓨터 내에서 Input을 받아, 그 컴퓨터에서 게임 로직 및 상태를 처리
  • 5. 서버(Server)란 무엇인가? • 멀티 플레이 게임의 처리 과정 ➢ Input이 네트워크 상의 다른 컴퓨터로부터 발생할 수 있음 ➢ 게임 로직 및 상태 처리를 다른 컴퓨터에서 함
  • 6. 서버(Server)란 무엇인가? • 서버의 정의 ➢ 클라이언트에게 네트워크를 통해 서비스를 하는 컴퓨터를 지칭하는 단어 ➢ 일반적인 인터넷이나 온라인 게임, 웹 게임 등은 서버 역할만을 수행하는 PC가 존재하지만, 게임 구조에 따라 개인용 컴퓨터(PC)도 서버가 될 수 있음
  • 7. 서버의 종류 서버의 연결 구조에 따른 분류
  • 8. 서버의 종류 • P2P(Peer to Peer) 서버 ➢ 클라이언트간 상호 직접 연결 ➢ 빠른 반응성 및 저렴한 유지 비용이 장점 ➢ 확장성 및 해킹(Cheating)에 취약 ➢ FPS 및 RTS 장르에 적합 서든어택 스타크래프트
  • 9. 서버의 종류 • P2P 서버의 처리 구조 ➢ 게임의 각종 이벤트를 교환해 각자 게임 로직을 처리
  • 10. 서버의 종류 • P2P 서버의 동기화 구조 ➢ 주기적(50ms)으로 이벤트를 모아 서로 한번에 교환 ➢ 상대 Peer로 부터 해당 라운드의 이벤트를 모아 각자 처리 ▪ 각각의 클라이언트는 모두 위와 같은 형태의 Queue 유지
  • 11. 서버의 종류 • 리슨(Listen) 서버 ➢ 호스트(Host) 서버라고도 말하며, 클라이언트 중 하나가 서버의 역할을 담당 ➢ 호스트를 패킷 중계 ➢ 실제 게임 로직 처리는 P2P 방식처럼 각자 하는 경우가 많음 ▪ 모든 로직 처리를 호스트가 담당하면 부하가 크기 때문 ➢ 호스트가 게임을 이탈하면 서버 자체가 날아가거나, 다른 플레이어가 호스트 역 할을 이어받음 스타크래프트 대기 방
  • 12. 서버의 종류 • 클라이언트 서버 ➢ 클라이언트들은 하나의 큰 서버를 통해 서로 통신 ➢ 중요한 로직은 모두 서버에서 처리함으로써 해킹으로부터 비교적 안전 ➢ 24시간 돌아가야 하는 게임 중 세션 단위로 분할되는 게임도 클라이언트 서버 를 사용 배틀그라운드 월드 오브 워크래프트
  • 13. 서버의 종류 • 클라이언트 서버의 처리 및 동기화 구조 ➢ 각 클라이언트에서 발생하는 입력을 모두 서버로 보내고, 서버에서 일괄적으로 모아서 처리한 후 각 클라이언트에게 내용을 전달 (브로드캐스트) ➢ 네트워크 트래픽이 서버에 집중되는 구조 ➢ 게임 내의 NPC가 생성하는 이벤트도 해당 영역의 클라이언트에게 방송
  • 14. 서버의 종류 • 웹 기반 서버 ➢ 연결 유지가 필요 없어 접속이 불안정한 환경에서 유리 ➢ 반응 속도가 중요하지 않은 모바일 게임 및 소셜 게임 장르에 적합 ➢ 부하 분산(웹 서버 추가)이 용이하여 확장성이 높음 아이 러브 커피 팜빌
  • 15. 서버의 종류 • 웹 기반 서버의 처리 구조 ➢ 웹의 특징을 그대로 물려 받은 Request/Response 구조 ➢ 수동적인 특징이 있으며, 서버에선 몬스터의 선공과 같은 능동적인 처리 불가능
  • 16. 서버의 종류 • 정리 ➢ 만들고자 하는 게임의 특성에 따라 서버의 구조를 결정 ▪ Scalability : 많은 수의 유저를 처리함에 유연한가? ▪ Responsiveness : 상대와의 작용-반작용이 빠르게 처리 되는가? ▪ NPC-Activeness : NPC 활용이 얼마나 적극적일 수 있는가? ▪ Security : 해킹으로 부터 얼마나 안전한가? ▪ Robustness : 불안정한 접속 및 끊김으로 부터 복구가 쉬운가? ▪ Simplicity : 구현 및 유지 보수 비용이 싼가?
  • 18. 서버의 통신 방법 • 통신 규약 (프로토콜) ➢ IP ▪ 데이터를 다른 컴퓨터에게 보내기 위해서는 해당 데이터를 어디로 보내야 하는지를 알아야 함 ▪ 그 보내는 위치(주소)가 바로 IP ✓ 192.168.100.100 ▪ 숫자 만으로는 그곳이 어딘지 사람이 식별하기 어려움으로, 이를 Domain Name으로 바꿔주는 Domain Name Service를 사용 ✓ www.naver.com
  • 19. 서버의 통신 방법 • 통신 방법 ➢ TCP ▪ 서버와 클라이언트 간의 데이터를 신뢰성 있게 전달하기 위해 만들어진 규약 ▪ 데이터는 네트워크 선로를 통해 전달되는 과정에서 손실 되거나 순서가 뒤바뀔 수 있는데, TCP는 이런 손실을 검색해 서 교정하고 순서를 재조합하도록 해줌 ➢ UDP ▪ 서비스의 신뢰성이 낮고 데이터의 도착 순서 및 도착 여부를 확인하지 않는 통신 규약 ▪ 패킷 손실이 발생할 가능성이 있음 ➢ 차이점 ▪ TCP ✓ 1대1 연결 지향. 신뢰할 수 있는 통신 서비스 제공 ✓ 연결 확립과 보내진 패킷의 확인. 순서화. 전달 중 손상된 패킷을 복구하는 책임을 짐 ▪ UDP ✓ 1대1, 1대다의 비연결 지향. 신뢰할 수 없는 통신 서비스 제공 ✓ 데이터 크기가 작을 때나, 연결 확립에 의한 부하를 피하기 위해 사용 ✓ 수많은 온라인 게임에서 사용하는 방식
  • 20. 서버의 통신 방법 • 패킷 & 라우팅 ➢ 패킷 ▪ 통신, 네트워크에서 한번에 전송하는 정보의 단위 ▪ 보내야할 데이터들을 패킷 단위로 잘게 쪼개서 전송 ▪ 패킷에 담겨진 데이터는 압축 형태를 띄는 경우가 많음 ▪ 패킷에는 이 데이터가 보내져야 할 주소와 내용을 담고 있음 ➢ 라우팅 ▪ 하나의 컴퓨터에서 네트워크로 연결 된 다른 컴퓨터와 통신을 할 때 발생한 패킷을 목적지 까지 전달해주는 과정 ▪ 데이터를 최적의 경로를 선택하여 목적지까지 이송하는 모든 절차 ▪ 패킷은 라우터에서 지정한 경로를 타고 이동 함 ✓ 라우터 : 공유기. 패킷의 목적지를 추출해 그 위치에 대한 최적의 경로를 지정하며, 이 경로를 따라 패킷을 이동 시키는 장치
  • 21. 분산 서버 구조 (로드 밸런싱)
  • 22. 분산 서버 구조 • 분산 서버가 없다면? ➢ 모든 게임 서버 로직은 1개의 컴퓨터에서 수행 ➢ 모든 플레이어 정보는 1개의 데이터베이스에 저장 ➢ 동시접속자 수가 무제한으로 발생할 경우 ▪ 과부화로 인해 서버로 보낸 메시지의 응답 처리가 늦게 도착함 ▪ 서버 자체에 접속 과정이 매우 오래 걸림 ▪ 서버와의 연결이 돌발적으로 해제 됨 ▪ 서버로의 접속 자체가 실패함
  • 23. 분산 서버 구조 • 간단한 분산 서버 구조의 한 예 ➢ 게임 서버와 데이터베이스로 구성된 세트를 여러 개 나열 ➢ 계정 인증 및 로그인과 관련된 부분은 별도로 처리 로스트아크 분산 서버 와우 분산 서버
  • 24. 분산 서버 구조 • 분산 서버 방법 ➢ 데이터 분산 ▪ 유저 데이터가 한 곳에 너무 많이 몰리는 것을 방지하기 위한 방법 ▪ 한 게임 서버에 최대 유저 수를 놓고, 그런 서버를 여러 대 배치 ▪ 데이터베이스의 경우 샤딩 처리 ✓ 샤딩 : 한 서버의 플레이어 데이터를 각기 다른 데이터베이스로 분할해 보관하는 방법 ➢ 기능적 분산 ▪ 서버가 행하는 기능을 서버별로 독립적으로 설계하는 방법 ✓ 채팅 서버, 로그인 서버, 매칭 서버, 경매장 서버 등 ✓ 각 서버에 문제가 생겨도 게임 플레이 자체에 문제를 주지 않음 ✓ 문제 발생 시 추적 및 해결에 용이한 구조 데이터 분산 기능적 분산
  • 26. 상용 서버 소개 • AWS ➢ 아마존 웹 서비스 (Amazon Web Services) ➢ 아마존이 제공하는 각종 원격 컴퓨팅 서비스 ➢ AWS를 통해 각종 네트워크 환경, 보안, 데이터베이스, 서버 컴퓨터 머신 등을 제공 ➢ 일반적으로 가장 많이 사용하는 상용 서버 • Photon ➢ Unity에서 많이 사용하는 네트워크 엔진 ➢ 서버 자체를 대여해 사용할 수 있으며, 각종 서버 구축용 라이브러리 제공 ➢ 포톤 클라우드라는 SDK를 이용해 클라이언트 개발 후 클라우드 서버에 연결 해 사용도 가능
  • 28. 서버 관련 용어 설명 • 오버 플로우 (Overflow) ➢ 서버에서 사용하는 데이터 타입에서 정해진 범위를 넘는 데이터가 입력됐을 시 서버가 뻗는 현상 ▪ Ex. 몬스터 HP가 int로 선언되어 있는데, HP 값이 22억일 경우 ▪ Int 데이터 타입의 허용 범위를 넘는 데이터가 입력되었으므로 서버가 뻗음 • 스케일 아웃 / 스케일 업 ➢ 스케일 업 ▪ 서버 한대의 성능을 업그레이드 시켜 더 많은 처리가 가능하게 만드는 행위 ➢ 스케일 아웃 ▪ 분산 서버 구조에서 서버와 데이터베이스의 대수를 늘려 부하를 더욱 줄이는 행위
  • 29. 서버 관련 용어 설명 • 레이턴시 (Latency) ➢ 클라이언트와 서버 간의 지연 시간 ➢ 클라이언트에서 이벤트를 발생시키고 그에 따른 응답 속도를 ms로 표현 ➢ 응답 속도가 느려 지연 시간이 발생할 경우 ‘렉’이 발생 • 타임 아웃 (Time Out) ➢ 클라이언트에서 이벤트를 호출 한 후 지정된 지연 시간을 초과했을 경우 발생하는 현상 ➢ 타임 아웃이 발생하면 강제로 네트워크 연결을 끊거나, 해당 이벤트에 대한 반응을 대기하지 않는 상태가 됨