SlideShare a Scribd company logo
클라이언트-서버
구조
세종대학교 판도라큐브 / 송민욱
uanid@outlook.com
Jan, 24, 2018
1
목차
■ 서버는 무엇인가
■ 데이터 통신 프로토콜 UDP vs TCP
■ 어떤 네트워크 통신 구조들을 이용하는가
■ 클라이언트-서버 구조
■ Thin-Client 모델 vs Fat-Client 모델
2/20
서버는 무엇인가
■ 서버의 역할:
– 서버는 클라이언트에게 네트워크
를 통해 정보나 서비스를 제공하
는 역할을 프로그램을 의미한다.
설마 이게 서버?
3/20
서버는 무엇인가
■ 고전적 정의(위키피디아)
– 클라이언트: 고객, 무언가를 요청하는 사람
– 서버: 서빙하는 사람, 요청받은 것을 제공하는 사람
4/20
데이터 통신 프로토콜 UDP vs TCP
■ UDP는 매우 빠른 속도(ping)을 가지고 있지만 데이터를 전송하다가 손실되거나 사라질 수
도 있음
■ TCP는 상대적으로 느린 속도(ping)을 가지지만 데이터를 전송하다가 손실되거나 사라지지
않음
– 정확히는 오류가 발생하면 다시 전송함
■ 아주 오랜 옛날, 게임 서버에선 TCP와 UDP 둘 다를 이용했음
■ 한국같이 네트워크가 좋은 지역은 TCP를, 미국에선 대체로 UDP를?....
■ 그리고 요즘처럼 전반적으로 네트워크 품질이 향상되고 나서는 대부분 TCP를 사용한다는…
인터넷 썰도 있음
■ 아마 TCP가 개발이 쉬워서 빨리 개발할 수 있으니 TCP로 몰린게 아닐까 하는 개인적인 생각
5/20
어떤 네트워크 통신 구조들을 이용하는가
■ C/S구조: 서버가 나머지 클라이언트들을 제어하는 것
■ P2P구조: 서로가 서로에게 영향을 주는 것
■ 현재 P2P는 이제 점점 사양하는 추세임
– 1. 서버를 구축하는데 가격이 말도 안되게 줄어들음
– 2. 다들 공유기를 기본으로 장착하고 있어서 연결이 안 됨
■ 공유기가 있으면 원하는 PC에 직접적으로 접근할 방법이 없음
클라이언트-서버(C/S) Peer to Peer(P2P)
6/20
클라이언트-서버 구조
■ 서비스를 제공하는 서버가 다수의 클라이언
트들 각각에게 요청에 따른 서비스를 제공
하는 것
■ 대체로 공개된 고정IP를 가지고 있음(*중요*)
– 대학교나 집에서 서버를 열었을 때 외
부에서 접속이 안 되는 가장 큰 이유
■ 대표적으로 웹서버나 게임서버, 애플리케
이션 서버 등… 이 존재함
7/20
Thin-Client 모델 vs Fat-Client 모델
■ Thin-Client: 중요 데이터 처리는 서버에 맡기고 단순한 역할
들만 수행함
■ Fat-Client: 중요 데이터 처리를 클라이언트에서 담당하고
서버는 단순히 데이터 취합 및 전달 등의 역할만 맡음
8/20
Thin-Client 모델 vs Fat-Client 모델
- 장단점
■ Thin-Client:
– 장점: 클라이언트가 변조되더라도 서버나 다른 유저들은
영향을 받지 않음
– 단점: 에러 확인 과정 및 기능 구현 때문에 서버의 부하가
증가함
■ Fat-Client:
– 장점: 서버의 부하가 줄어든다
– (저렴한비용으로 서버 구축이 가능)
– 단점: 클라이언트를 변조할 경우 그대로 변조된 데이터가 돌
아다님 9/20
Fat-Client 모델
- 을 사용한 게임들
■ 서든어택
■ 버블파이터
■ 공통점? 핵 X망겜
10/20
Fat-Client 모델
- 서든어택의 경우
■ 멀티 할 때 방장 컴퓨터 사양이 나쁘면 게임 전체가 느려진
다는 것을 바탕으로 서버는 아무런 일을 하지 않는다는 것을
유추 가능
■ 만약 방장 컴퓨터 혹은 유저 컴퓨터를 조작하면?
■ 다음과 같은 일 들이 발생 가능함
11/20
Fat-Client 모델
- 서든어택의 경우
■ 셀 수도 없을 정도로 핵이 많다
12/20
Fat-Client 모델
- 버블파이터의 경우
■ 마찬가지
13/20
Fat-Client 모델
- 특징
■ 위의 두 게임 모두 클라이언트에서 캐릭터 이동, 아이템 소
모, 공격 등 여러가지 연산 들을 담당하기 때문에 발생함
■ 클라이언트에서 캐릭터가 벽을 무시하고 이동하려고 해도
– 서버에서 확인하고 판단하지 않기 때문에 그대로 허용함
■ 만약 체력도 클라이언트에서 담당한다면 캐릭터를 무적으로
만들 수도 있음
14/20
Thin-Client 모델
- 을 사용한 게임들
■ 월드오브탱크
■ 월드오브워크래프트
■ 하스스톤
■ 리그오브레전드
■ 작업장은 있지만 핵은 아주 소수
15/20
Thin-Client 모델
- 월드오브탱크의 경우
■ 대략 9년간 운영한 게임
■ 그러나 지금까지 단 한번도 핵이 개발된 적이 없음
■ 특징
■ 매우 강한 Thin-client 모델을 가지고 있음
– 플레이어의 시점과 이동 방향, 속도까지 서버의 통제를
받음
– 플레이어가 어디를 조준하는지, 어디를 향하는지 모두
전술적 요소가 되기 때문 16/20
Thin-Client 모델
- 하스스톤의 경우
■ 단순한 카드 게임이기 때문에 클라이언트에서 계산할 것 들
이 별로 없음
■ 특징
■ 모든 연산을 서버에서만 하는 Thin-client 모델을 선택했기
때문에, 매주 클라이언트 업데이트 없이 새로운 모드 플레이
가 가능
17/20
Thin-Client 모델
- 리그오브레전드
■ Thin-client 모델이고 TCP를 사용하기 때문에 ping의 영향을
많이 받는 게임
■ 마우스 커서를 제외한 모든 것이 서버의 제어 하에 있음
■ 그러나 클라이언트에게 너무나 과다한 정보를 제공하기 때
문에 스킬 쿨타임 표시 핵 등이 개발됨
18/20
Thin-Client Fat-Client 혼합 모델
■ 요즘 많이 쓰이는 추세
■ PUBG, 마인크래프트 외 여러 게임들이 Fat과 Thin의 경계선
사이에 있음
■ 일부 필수적인 돈, 거래, 아이템 등은 서버에서 제어하고,
■ 낮은 Ping이 중요하거나 많은 부하가 드는 캐릭터 움직임, 시
점 등은 클라이언트에서 제어하는것
19/20
Thin-Client Fat-Client 혼합 모델
- (cont.)
■ 일반적인 개발일 경우 가장 이상적인 경우임
■ 개발 비용과 시간이 적게 들고 치명적인 핵이나 치트들을 막을
수 있기 때문
■ 게다가 PUBG처럼 일부 요소를 자바스크립트로 개발하면 완전한
Thin클라이언트가 아님에도 업데이트 없이 게임 요소 변경이 가
능함
■ 단점
■ 애매하게 개발할 경우 PUBG처럼 여러가지 핵 들이 개발될 수 도
있음 20/20
THANK YOU
21

More Related Content

Similar to [PandoraCube] 클라이언트-서버 구조

이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
Hyunjik Bae
 
Opendaylight beryllium
Opendaylight berylliumOpendaylight beryllium
Opendaylight beryllium
Cheolmin Lee
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
Seungmo Koo
 
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
productab180
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
강 민우
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
iFunFactory Inc.
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가Hyun-jik Bae
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
중선 곽
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
Dan Kang (강동한)
 
글로벌 게임 런칭과 Cdn의 활용.pdf
글로벌 게임 런칭과 Cdn의 활용.pdf글로벌 게임 런칭과 Cdn의 활용.pdf
글로벌 게임 런칭과 Cdn의 활용.pdf
Hana Lee
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
NAVER D2
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Jinuk Kim
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
활 김
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
Hyunjik Bae
 
Final project finalpdf
Final project finalpdfFinal project finalpdf
Final project finalpdf
jangwon23
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
흥배 최
 
씨디네트웍스_Dynamic Web Acceleration 소개서
씨디네트웍스_Dynamic Web Acceleration 소개서씨디네트웍스_Dynamic Web Acceleration 소개서
씨디네트웍스_Dynamic Web Acceleration 소개서
씨디네트웍스(CDNetworks)
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
Hyunjik Bae
 

Similar to [PandoraCube] 클라이언트-서버 구조 (20)

이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 
Opendaylight beryllium
Opendaylight berylliumOpendaylight beryllium
Opendaylight beryllium
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
Lag 없는 실시간 데이터 파이프라인을 위한 아키텍처 개선기
 
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
글로벌 게임 런칭과 Cdn의 활용.pdf
글로벌 게임 런칭과 Cdn의 활용.pdf글로벌 게임 런칭과 Cdn의 활용.pdf
글로벌 게임 런칭과 Cdn의 활용.pdf
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD웹기반원격감시제어 2010 CPD
웹기반원격감시제어 2010 CPD
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
Final project finalpdf
Final project finalpdfFinal project finalpdf
Final project finalpdf
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
씨디네트웍스_Dynamic Web Acceleration 소개서
씨디네트웍스_Dynamic Web Acceleration 소개서씨디네트웍스_Dynamic Web Acceleration 소개서
씨디네트웍스_Dynamic Web Acceleration 소개서
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
 

More from PandoraCube , Sejong University

[PandoraCube] 게임에 재미요소 부여하기
[PandoraCube] 게임에 재미요소 부여하기[PandoraCube] 게임에 재미요소 부여하기
[PandoraCube] 게임에 재미요소 부여하기
PandoraCube , Sejong University
 
[PandoraCube] 게임과 언어
[PandoraCube] 게임과 언어[PandoraCube] 게임과 언어
[PandoraCube] 게임과 언어
PandoraCube , Sejong University
 
2019.12.23 ysj
2019.12.23 ysj2019.12.23 ysj
[PandoraCube] 쉐이더 with Unity
[PandoraCube] 쉐이더 with Unity[PandoraCube] 쉐이더 with Unity
[PandoraCube] 쉐이더 with Unity
PandoraCube , Sejong University
 
[PandoraCube] 의사소통 구현정도
[PandoraCube] 의사소통 구현정도[PandoraCube] 의사소통 구현정도
[PandoraCube] 의사소통 구현정도
PandoraCube , Sejong University
 
[PandoraCube] GOG GALAXY 2.0
[PandoraCube] GOG GALAXY 2.0[PandoraCube] GOG GALAXY 2.0
[PandoraCube] GOG GALAXY 2.0
PandoraCube , Sejong University
 
[PandoraCube] World of Warcraft
[PandoraCube] World of Warcraft[PandoraCube] World of Warcraft
[PandoraCube] World of Warcraft
PandoraCube , Sejong University
 
[PandoraCube] Microsphere Interpolation
[PandoraCube] Microsphere Interpolation[PandoraCube] Microsphere Interpolation
[PandoraCube] Microsphere Interpolation
PandoraCube , Sejong University
 
[PandoraCube] 게임 타격감에 대하여
[PandoraCube] 게임 타격감에 대하여[PandoraCube] 게임 타격감에 대하여
[PandoraCube] 게임 타격감에 대하여
PandoraCube , Sejong University
 
[PandoraCube] 게임과 법 1
[PandoraCube] 게임과 법 1[PandoraCube] 게임과 법 1
[PandoraCube] 게임과 법 1
PandoraCube , Sejong University
 
[PandoraCube] 게임 개발자의 수익
[PandoraCube] 게임 개발자의 수익[PandoraCube] 게임 개발자의 수익
[PandoraCube] 게임 개발자의 수익
PandoraCube , Sejong University
 
[PandoraCube] 게임 출시에 대해
[PandoraCube] 게임 출시에 대해[PandoraCube] 게임 출시에 대해
[PandoraCube] 게임 출시에 대해
PandoraCube , Sejong University
 
[PandoraCube] 클라우드 게이밍
[PandoraCube] 클라우드 게이밍[PandoraCube] 클라우드 게이밍
[PandoraCube] 클라우드 게이밍
PandoraCube , Sejong University
 
[PandoraCube] 오토배틀러 장르 분석
[PandoraCube] 오토배틀러 장르 분석[PandoraCube] 오토배틀러 장르 분석
[PandoraCube] 오토배틀러 장르 분석
PandoraCube , Sejong University
 
[PandoraCube] 연쇄 할인마
[PandoraCube] 연쇄 할인마[PandoraCube] 연쇄 할인마
[PandoraCube] 연쇄 할인마
PandoraCube , Sejong University
 
[PandoraCube] 모션 캡쳐와 게임
[PandoraCube] 모션 캡쳐와 게임[PandoraCube] 모션 캡쳐와 게임
[PandoraCube] 모션 캡쳐와 게임
PandoraCube , Sejong University
 
[PandoraCube] 객체 지향 프로그래밍
[PandoraCube] 객체 지향 프로그래밍[PandoraCube] 객체 지향 프로그래밍
[PandoraCube] 객체 지향 프로그래밍
PandoraCube , Sejong University
 
[PandoraCube] 유니티에 광고 넣기
[PandoraCube] 유니티에 광고 넣기[PandoraCube] 유니티에 광고 넣기
[PandoraCube] 유니티에 광고 넣기
PandoraCube , Sejong University
 
[PandoraCube] 이야이야이야이야기
[PandoraCube] 이야이야이야이야기[PandoraCube] 이야이야이야이야기
[PandoraCube] 이야이야이야이야기
PandoraCube , Sejong University
 
[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자
PandoraCube , Sejong University
 

More from PandoraCube , Sejong University (20)

[PandoraCube] 게임에 재미요소 부여하기
[PandoraCube] 게임에 재미요소 부여하기[PandoraCube] 게임에 재미요소 부여하기
[PandoraCube] 게임에 재미요소 부여하기
 
[PandoraCube] 게임과 언어
[PandoraCube] 게임과 언어[PandoraCube] 게임과 언어
[PandoraCube] 게임과 언어
 
2019.12.23 ysj
2019.12.23 ysj2019.12.23 ysj
2019.12.23 ysj
 
[PandoraCube] 쉐이더 with Unity
[PandoraCube] 쉐이더 with Unity[PandoraCube] 쉐이더 with Unity
[PandoraCube] 쉐이더 with Unity
 
[PandoraCube] 의사소통 구현정도
[PandoraCube] 의사소통 구현정도[PandoraCube] 의사소통 구현정도
[PandoraCube] 의사소통 구현정도
 
[PandoraCube] GOG GALAXY 2.0
[PandoraCube] GOG GALAXY 2.0[PandoraCube] GOG GALAXY 2.0
[PandoraCube] GOG GALAXY 2.0
 
[PandoraCube] World of Warcraft
[PandoraCube] World of Warcraft[PandoraCube] World of Warcraft
[PandoraCube] World of Warcraft
 
[PandoraCube] Microsphere Interpolation
[PandoraCube] Microsphere Interpolation[PandoraCube] Microsphere Interpolation
[PandoraCube] Microsphere Interpolation
 
[PandoraCube] 게임 타격감에 대하여
[PandoraCube] 게임 타격감에 대하여[PandoraCube] 게임 타격감에 대하여
[PandoraCube] 게임 타격감에 대하여
 
[PandoraCube] 게임과 법 1
[PandoraCube] 게임과 법 1[PandoraCube] 게임과 법 1
[PandoraCube] 게임과 법 1
 
[PandoraCube] 게임 개발자의 수익
[PandoraCube] 게임 개발자의 수익[PandoraCube] 게임 개발자의 수익
[PandoraCube] 게임 개발자의 수익
 
[PandoraCube] 게임 출시에 대해
[PandoraCube] 게임 출시에 대해[PandoraCube] 게임 출시에 대해
[PandoraCube] 게임 출시에 대해
 
[PandoraCube] 클라우드 게이밍
[PandoraCube] 클라우드 게이밍[PandoraCube] 클라우드 게이밍
[PandoraCube] 클라우드 게이밍
 
[PandoraCube] 오토배틀러 장르 분석
[PandoraCube] 오토배틀러 장르 분석[PandoraCube] 오토배틀러 장르 분석
[PandoraCube] 오토배틀러 장르 분석
 
[PandoraCube] 연쇄 할인마
[PandoraCube] 연쇄 할인마[PandoraCube] 연쇄 할인마
[PandoraCube] 연쇄 할인마
 
[PandoraCube] 모션 캡쳐와 게임
[PandoraCube] 모션 캡쳐와 게임[PandoraCube] 모션 캡쳐와 게임
[PandoraCube] 모션 캡쳐와 게임
 
[PandoraCube] 객체 지향 프로그래밍
[PandoraCube] 객체 지향 프로그래밍[PandoraCube] 객체 지향 프로그래밍
[PandoraCube] 객체 지향 프로그래밍
 
[PandoraCube] 유니티에 광고 넣기
[PandoraCube] 유니티에 광고 넣기[PandoraCube] 유니티에 광고 넣기
[PandoraCube] 유니티에 광고 넣기
 
[PandoraCube] 이야이야이야이야기
[PandoraCube] 이야이야이야이야기[PandoraCube] 이야이야이야이야기
[PandoraCube] 이야이야이야이야기
 
[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자[PandoraCube] '게임메이커'에 대해 알아보자
[PandoraCube] '게임메이커'에 대해 알아보자
 

[PandoraCube] 클라이언트-서버 구조

  • 1. 클라이언트-서버 구조 세종대학교 판도라큐브 / 송민욱 uanid@outlook.com Jan, 24, 2018 1
  • 2. 목차 ■ 서버는 무엇인가 ■ 데이터 통신 프로토콜 UDP vs TCP ■ 어떤 네트워크 통신 구조들을 이용하는가 ■ 클라이언트-서버 구조 ■ Thin-Client 모델 vs Fat-Client 모델 2/20
  • 3. 서버는 무엇인가 ■ 서버의 역할: – 서버는 클라이언트에게 네트워크 를 통해 정보나 서비스를 제공하 는 역할을 프로그램을 의미한다. 설마 이게 서버? 3/20
  • 4. 서버는 무엇인가 ■ 고전적 정의(위키피디아) – 클라이언트: 고객, 무언가를 요청하는 사람 – 서버: 서빙하는 사람, 요청받은 것을 제공하는 사람 4/20
  • 5. 데이터 통신 프로토콜 UDP vs TCP ■ UDP는 매우 빠른 속도(ping)을 가지고 있지만 데이터를 전송하다가 손실되거나 사라질 수 도 있음 ■ TCP는 상대적으로 느린 속도(ping)을 가지지만 데이터를 전송하다가 손실되거나 사라지지 않음 – 정확히는 오류가 발생하면 다시 전송함 ■ 아주 오랜 옛날, 게임 서버에선 TCP와 UDP 둘 다를 이용했음 ■ 한국같이 네트워크가 좋은 지역은 TCP를, 미국에선 대체로 UDP를?.... ■ 그리고 요즘처럼 전반적으로 네트워크 품질이 향상되고 나서는 대부분 TCP를 사용한다는… 인터넷 썰도 있음 ■ 아마 TCP가 개발이 쉬워서 빨리 개발할 수 있으니 TCP로 몰린게 아닐까 하는 개인적인 생각 5/20
  • 6. 어떤 네트워크 통신 구조들을 이용하는가 ■ C/S구조: 서버가 나머지 클라이언트들을 제어하는 것 ■ P2P구조: 서로가 서로에게 영향을 주는 것 ■ 현재 P2P는 이제 점점 사양하는 추세임 – 1. 서버를 구축하는데 가격이 말도 안되게 줄어들음 – 2. 다들 공유기를 기본으로 장착하고 있어서 연결이 안 됨 ■ 공유기가 있으면 원하는 PC에 직접적으로 접근할 방법이 없음 클라이언트-서버(C/S) Peer to Peer(P2P) 6/20
  • 7. 클라이언트-서버 구조 ■ 서비스를 제공하는 서버가 다수의 클라이언 트들 각각에게 요청에 따른 서비스를 제공 하는 것 ■ 대체로 공개된 고정IP를 가지고 있음(*중요*) – 대학교나 집에서 서버를 열었을 때 외 부에서 접속이 안 되는 가장 큰 이유 ■ 대표적으로 웹서버나 게임서버, 애플리케 이션 서버 등… 이 존재함 7/20
  • 8. Thin-Client 모델 vs Fat-Client 모델 ■ Thin-Client: 중요 데이터 처리는 서버에 맡기고 단순한 역할 들만 수행함 ■ Fat-Client: 중요 데이터 처리를 클라이언트에서 담당하고 서버는 단순히 데이터 취합 및 전달 등의 역할만 맡음 8/20
  • 9. Thin-Client 모델 vs Fat-Client 모델 - 장단점 ■ Thin-Client: – 장점: 클라이언트가 변조되더라도 서버나 다른 유저들은 영향을 받지 않음 – 단점: 에러 확인 과정 및 기능 구현 때문에 서버의 부하가 증가함 ■ Fat-Client: – 장점: 서버의 부하가 줄어든다 – (저렴한비용으로 서버 구축이 가능) – 단점: 클라이언트를 변조할 경우 그대로 변조된 데이터가 돌 아다님 9/20
  • 10. Fat-Client 모델 - 을 사용한 게임들 ■ 서든어택 ■ 버블파이터 ■ 공통점? 핵 X망겜 10/20
  • 11. Fat-Client 모델 - 서든어택의 경우 ■ 멀티 할 때 방장 컴퓨터 사양이 나쁘면 게임 전체가 느려진 다는 것을 바탕으로 서버는 아무런 일을 하지 않는다는 것을 유추 가능 ■ 만약 방장 컴퓨터 혹은 유저 컴퓨터를 조작하면? ■ 다음과 같은 일 들이 발생 가능함 11/20
  • 12. Fat-Client 모델 - 서든어택의 경우 ■ 셀 수도 없을 정도로 핵이 많다 12/20
  • 13. Fat-Client 모델 - 버블파이터의 경우 ■ 마찬가지 13/20
  • 14. Fat-Client 모델 - 특징 ■ 위의 두 게임 모두 클라이언트에서 캐릭터 이동, 아이템 소 모, 공격 등 여러가지 연산 들을 담당하기 때문에 발생함 ■ 클라이언트에서 캐릭터가 벽을 무시하고 이동하려고 해도 – 서버에서 확인하고 판단하지 않기 때문에 그대로 허용함 ■ 만약 체력도 클라이언트에서 담당한다면 캐릭터를 무적으로 만들 수도 있음 14/20
  • 15. Thin-Client 모델 - 을 사용한 게임들 ■ 월드오브탱크 ■ 월드오브워크래프트 ■ 하스스톤 ■ 리그오브레전드 ■ 작업장은 있지만 핵은 아주 소수 15/20
  • 16. Thin-Client 모델 - 월드오브탱크의 경우 ■ 대략 9년간 운영한 게임 ■ 그러나 지금까지 단 한번도 핵이 개발된 적이 없음 ■ 특징 ■ 매우 강한 Thin-client 모델을 가지고 있음 – 플레이어의 시점과 이동 방향, 속도까지 서버의 통제를 받음 – 플레이어가 어디를 조준하는지, 어디를 향하는지 모두 전술적 요소가 되기 때문 16/20
  • 17. Thin-Client 모델 - 하스스톤의 경우 ■ 단순한 카드 게임이기 때문에 클라이언트에서 계산할 것 들 이 별로 없음 ■ 특징 ■ 모든 연산을 서버에서만 하는 Thin-client 모델을 선택했기 때문에, 매주 클라이언트 업데이트 없이 새로운 모드 플레이 가 가능 17/20
  • 18. Thin-Client 모델 - 리그오브레전드 ■ Thin-client 모델이고 TCP를 사용하기 때문에 ping의 영향을 많이 받는 게임 ■ 마우스 커서를 제외한 모든 것이 서버의 제어 하에 있음 ■ 그러나 클라이언트에게 너무나 과다한 정보를 제공하기 때 문에 스킬 쿨타임 표시 핵 등이 개발됨 18/20
  • 19. Thin-Client Fat-Client 혼합 모델 ■ 요즘 많이 쓰이는 추세 ■ PUBG, 마인크래프트 외 여러 게임들이 Fat과 Thin의 경계선 사이에 있음 ■ 일부 필수적인 돈, 거래, 아이템 등은 서버에서 제어하고, ■ 낮은 Ping이 중요하거나 많은 부하가 드는 캐릭터 움직임, 시 점 등은 클라이언트에서 제어하는것 19/20
  • 20. Thin-Client Fat-Client 혼합 모델 - (cont.) ■ 일반적인 개발일 경우 가장 이상적인 경우임 ■ 개발 비용과 시간이 적게 들고 치명적인 핵이나 치트들을 막을 수 있기 때문 ■ 게다가 PUBG처럼 일부 요소를 자바스크립트로 개발하면 완전한 Thin클라이언트가 아님에도 업데이트 없이 게임 요소 변경이 가 능함 ■ 단점 ■ 애매하게 개발할 경우 PUBG처럼 여러가지 핵 들이 개발될 수 도 있음 20/20