SlideShare a Scribd company logo
1 of 28
Download to read offline
게임 제작 개론 #6
게임 시스템 구조
NHN NEXT
구승모
Agenda
• 게임 시스템의 구조
– Single Game
– Multiplayer Game
– Case-study
• 결정형 및 비결정형 게임
학습 목표
• 기본적인 게임 시스템 구조에 대해 이해하고 게임의
구조적 특징이 콘텐츠에 어떤 영향을 주는지 설명 할 수
있다
• 결정형/비결정형 게임의 차이를 알고 어떤 게임이
각각에 해당하는지 실제 예를 들 수 있다
게임 시스템 구조
게임의 처리 과정
• 일반적인 게임의 처리 루프
– 싱글 플레이어 게임
– 그럼, 멀티 플레이어 게임은?
Inputs
Simulate
Render
Wait
States
events
timer
State State State
Time
멀티 플레이어 게임
• Input이 네트워크 상의 다른 컴퓨터로부터 올 수 있음
• 게임 로직 처리 및 상태 관리를 다른 컴퓨터에서 함
• 구조에 따른 분류
– P2P, Client-Server, Web-based, Hybrid
Inputs
Simulate
Render
Wait
States
my events
other hosts
over the network
스타크래프트는?
Peer to Peer
• P2P 구조
– 클라이언트간 상호 직접 연결
– 빠른 반응성 및 저렴한 유지 비용이 장점
– 확장성 및 해킹(Cheating)에 취약
– FPS 및 RTS 장르에 적합
Peer Peer
Peer Peer
P2P 방식의 처리 구조
• 게임 입력(event) 교환을 통해 각자 게임 로직 처리
Inputs
Simulate
Render
Wait
States
peer
events
Inputs
Simulate
Render
Wait
States
Compare Compare
exchange
P2P 방식의 동기화 구조
• 주기적으로 이벤트 모아서 교환
– (예) 1초에 20번 업데이트  50ms 간격의 Round
– 입력이 없더라도 Beacon신호는 Round 단위로 교환
• 상대 Peer로부터 해당 라운드의 이벤트를 모아 각자처리
– 각각의 클라이언트는 모두 아래와 같은 형태의 Queue를 유지
events eventsevents나
상대1
상대2
Round
0 ms 50 100 150
Round Round Round
events
events events
모든 Peer들의
입력이 모이면
해당 Round를
처리(Simulate)
하고 렌더링
특정 Peer의 정
보가 제시간에
도달하지 않으
면 Lag현상
??
events
월드 오브 워크래프트는?
Client-Server
• CS 구조
– 클라이언트는 서버를 통한 간접 연결
– 중요 로직은 서버에서 처리함으로써 해킹으로부터 비교적 안전
– NPC를 서버가 능동적으로 활용(drive)할 수 있음
– 구현 및 유지 보수 비용이 비교적 높음
– MMOG 장르에 적합
Client Client
Client Client
Server
Client-Server 방식의 처리 구조
• 서버가 게임 로직 처리(Simulate) 및 상태 관리
Simulate
States
Inputs
Render
Wait
eventsServer
state info
Client-Server 방식의 동기화 구조
• 모든 이벤트는 서버에 처리
– 클라이언트에서 발생하는 입력은 서버에 보냄
– 서버에서 모두 모아 계산한 후 해당 클라이언트로 방송
– 네트워크 트래픽이 서버에 집중되는 구조
– NPC가 생성하는 이벤트도 해당 영역내의 클라이언트에게 방송
Server
Client A
Client B
NPC
NPC
NPC
A
B
A
A
B
B
Event A
Event BNPC Event
팜빌은?
Web-Based
• 웹 서비스 방식 (REST)
– HTTPS를 이용한 보안성 확보가 쉬움
– 연결 유지가 필요 없어 접속이 불안정한 환경에서 유리
– 모바일 게임 및 소셜 게임 장르에 적합
– 부하 분산(웹서버 추가)이 용이하여 확장성이 높음
• L4/L7 스위치를 통한 Load-Balancing이 가능
Client
LB Web Server
Browser
Web Server
Client
Browser
Web ServerHTTP
Web-Based 방식의 처리 방식
• Request/Response 구조
– 웹의 특징을 그대로 물려 받음
• Atomic, Stateless
– 플레이어간 순서 보장이 필요할 경우
• 사과를 친구가 먼저 수확한 경우 어떻게 처리?
• 주로 Back-end (주로 캐시서버나 DB)에서 동기화
– 수동적: Server-initiated Action 어려움
• 몬스터의 선공과 같은 능동적 NPC 행동 불가
Web Client
Web Server
State State State
Response
Request
정리하면
• 만들고자 하는 게임 콘텐츠의 특성에 따라 구조 결정
– Scalability: 많은 수의 유저를 처리함에 유연한가?
– Responsiveness: 상대와의 작용-반작용이 빠르게 처리 되는가?
– NPC-Activeness: NPC 활용이 얼마나 적극적인가?
– Security: 해킹으로 부터 얼마나 안전한가?
– Robustness: 불안정한 접속 및 끊김으로 부터 복구가 쉬운가?
– Simplicity: 구현 및 유지 보수 비용이 싼가?
기준 Client-Server P2P Web-based
Scalability SOSO BAD GOOD
Responsiveness SOSO GOOD BAD
NPC-Activeness GOOD SOSO BAD
Security GOOD BAD GOOD
Robustness SOSO BAD GOOD
Simplicity BAD GOOD GOOD
Case Study
• LOL
• TERA
• Diablo 2
• Diablo 3
• 사이퍼즈
• 서든어택
• 피파온라인
• 애니팡
• 마비노기 영웅전
• … …
결정형 게임과 비결정형 게임
(Deterministic vs Non-deterministic)
결정형 게임
• 다음의 공통점은?
– 스타크래프트 리플레이
• 같은 경기를 녹화한 동영상보다 용량이 훨씬 작다
– LOL의 경기 참관하기 기능
• 5분 늦은 시점을 보여준다
– 스타크래프트 2 군단의 심장
• 리플레이 재생 중 특정 시점부터 이어하기 기능은?
• Discussion
– 위의 기능들에 대한 동작 원리는?
• 5분 구상하고 발표
• 어떻게 했을까?
결정형 게임의 구현 원리
• 이벤트의 집합으로 동일한 시뮬레이션이 가능
– 동일한 환경을 만들어주면 항상 같은 결과값이 나오도록 설계
• 랜덤으로 결정되는 것이 없음
– (참고) deterministic physics
• AI의 경우도 입력(플레이어의 특정 액션 등)에 따라 결정되는 구조
– (예) 플레이어에게 데미지를 100~150 사이 받으면 대상에게 분노하기
– (예) 프레임 단위 이벤트 동기화
Frame 1 2 3 4 5 6 7 8 …
PC 1     P#2 ↙ …
PC 2 P#1 P#2   …
PC 3  ↗ K#2 ↓ K#1 …
… … … … … … … … … …
NPC 1 IDLE ATK#7 - - DEF#1 - FWD - …
NPC 2 IDLE FWD - DEF#3 - ATK#4 - BACK …
… … … … … … … … … …
비결정형 게임
• 랜덤의 요소가 존재한다면?
– (예) 스타크래프트의 해병 라이플 데미지가 6~10 랜덤일 경우
• 피격대상의 히드라 HP가 8 남은 상태라면?
• 어떤 경우에는 히드라가 살고, 어떤 경우에는 죽게 됨
• 결정형 게임이 더 이상 아님
• 비 결정형 게임
– 똑같은 환경이 주어지더라도 다른 결과가 나옴
– 랜덤의 요소가 존재하여 똑같이 재현이 불가능
– (예) 테라, 와우, 아이온 등의 MMORPG
난수의 생성원리 소개
• 컴퓨터가 정말 무작위 숫자를 생성할 수 있을까?
– 특정 입력에 대해 서로 다른 결과를 생성할 수 있다면 가능
– 우리가 쓰는 컴퓨터는? deterministic machine
• Pseudo-Random Number
– 어떤 초기값(SEED)를 이용하여 이미 만들어진 메커니즘을 통하
여 생성되는 수로 무작위처럼 보이는 가짜 난수
– (예) middle-square, multiply-with-carry
좋은 난수 생성기?
• 온라인 포커 게임을 만든다고 했을 때
– 패 섞을(shuffle) 때 무작위 난수 생성을 이용하게 됨
– 만일, 난수 생성 알고리즘과 SEED를 알게 된다면?
• 그래서, 예측이 어려운 난수 생성이 필요
– 정말 무작위 하게 느껴지도록 하려면
• 연속되는 난수는 독립적이어야 함
• 생성 주기가 길어야 함
• 결과적으로 고르게 분포될수록 좋음
– 특정 숫자가 압도적으로 자주 나오지 않도록 함
비결정형을 결정형으로 만들기가 가능할까?
• 초기 SEED 값을 맞추는 방법
– 플레이어 입장에서는 랜덤이 동작하는 것처럼 보일 수 있음
– 생성되는 난수가 예측되기 때문에 사실상 결정형 게임이 됨
• Discussion
– MMORPG의 경우에 왜 결정형 게임으로 만들기 어려운가?
• 랜덤의 요소가 없으면 쉽게 결정형 게임으로 만들 수 있는가?
끝
• Q & A
• 강의 주제 안에서 알고 싶은 것은 게시판에 남겨주세요
• 다음 시간 강의 내용
– 게임 제작 팀 구성과 게임의 리소스 구성
참고 자료
• 참고 링크
– REST
• https://en.wikipedia.org/wiki/Representational_state_transfer
– Can a computer generate a truly random number?
• http://engineering.mit.edu/live/news/1753-can-a-computer-
generate-a-truly-random-number
– Pseudorandom number generator
• http://en.wikipedia.org/wiki/Pseudorandom_number_generator
– How to Generate a Sequence of Unique Random Integers
• http://preshing.com/20121224/how-to-generate-a-sequence-of-
unique-random-integers

More Related Content

What's hot

게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스Seungmo Koo
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해Seungmo Koo
 
게임제작개론 9
게임제작개론 9게임제작개론 9
게임제작개론 9Seokmin No
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스Seungmo Koo
 
게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해Seungmo Koo
 
뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론sinnoske
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?Lee Sangkyoon (Kay)
 
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답PandoraCube , Sejong University
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기강 민우
 
이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010devCAT Studio, NEXON
 
게임제작개론 8
게임제작개론 8게임제작개론 8
게임제작개론 8Seokmin No
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다Jinho Jung
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기Sunnyrider
 
게임 기획자의 생존 전략
게임 기획자의 생존 전략게임 기획자의 생존 전략
게임 기획자의 생존 전략태성 이
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)Lee Sangkyoon (Kay)
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)ChangHyun Won
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기ByungChun2
 
레벨디자인 특강 이동훈
레벨디자인 특강 이동훈레벨디자인 특강 이동훈
레벨디자인 특강 이동훈Donghun Lee
 

What's hot (20)

게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해
 
게임제작개론 9
게임제작개론 9게임제작개론 9
게임제작개론 9
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스
 
게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해
 
뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론뉴비라이터를 위한 게임라이팅 일반론
뉴비라이터를 위한 게임라이팅 일반론
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?어서와 게임기획은 처음이지?
어서와 게임기획은 처음이지?
 
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
[PandoraCube] 게임 기획자 면접 시 가장 많이 하는 질문들과 나의 답
 
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
[IGC 2017] 넥슨코리아 오현근 - 평생 게임 기획자 하기
 
이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010이원, MMORPG 스토리텔링의 금기들, NDC2010
이원, MMORPG 스토리텔링의 금기들, NDC2010
 
게임제작개론 8
게임제작개론 8게임제작개론 8
게임제작개론 8
 
쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다쩌는게임기획서 이렇게 쓴다
쩌는게임기획서 이렇게 쓴다
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기
 
게임 기획자의 생존 전략
게임 기획자의 생존 전략게임 기획자의 생존 전략
게임 기획자의 생존 전략
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)
 
게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)게임 개발 파이프라인과 시스템 기획(공개용)
게임 개발 파이프라인과 시스템 기획(공개용)
 
게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기게임 시스템 디자인 시작하기
게임 시스템 디자인 시작하기
 
[PandoraCube] 게임 디자인 원리
[PandoraCube] 게임 디자인 원리[PandoraCube] 게임 디자인 원리
[PandoraCube] 게임 디자인 원리
 
레벨디자인 특강 이동훈
레벨디자인 특강 이동훈레벨디자인 특강 이동훈
레벨디자인 특강 이동훈
 

Similar to 게임제작개론 : #6 게임 시스템 구조에 대한 이해

[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 Seungmo Koo
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례기룡 남
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인승명 양
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기flashscope
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈Minwoo Kim
 
Network programming report
Network programming reportNetwork programming report
Network programming reportJongwon
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기YEONG-CHEON YOU
 
KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화
KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화
KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화Jongwon Kim
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)창완 장
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
[ETHCon Korea 2019] Yun sungjun 윤성준
[ETHCon Korea 2019] Yun sungjun 윤성준[ETHCon Korea 2019] Yun sungjun 윤성준
[ETHCon Korea 2019] Yun sungjun 윤성준ethconkr
 

Similar to 게임제작개론 : #6 게임 시스템 구조에 대한 이해 (20)

[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
 
Multiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개 NHN NEXT 2014년도 게임트랙 소개
NHN NEXT 2014년도 게임트랙 소개
 
레이더즈 기술 사례
레이더즈 기술 사례레이더즈 기술 사례
레이더즈 기술 사례
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
 
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
[NDC14] 모바일 게임의 다음 혁신 - 야생의 땅 듀랑고의 계산 프로세스 중심 게임 디자인
 
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
[NHN NEXT]실전프로젝트 밴드 게임 만들기 후기
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
KGC 2014 가볍고 유연하게 데이터 분석하기 : 쿠키런 사례 중심 , 데브시스터즈
 
Network programming report
Network programming reportNetwork programming report
Network programming report
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
나만의 엔진 개발하기
나만의 엔진 개발하기나만의 엔진 개발하기
나만의 엔진 개발하기
 
KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화
KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화
KGC 2014 프로파일러를 이용한 게임 클라이언트 최적화
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
[ETHCon Korea 2019] Yun sungjun 윤성준
[ETHCon Korea 2019] Yun sungjun 윤성준[ETHCon Korea 2019] Yun sungjun 윤성준
[ETHCon Korea 2019] Yun sungjun 윤성준
 

More from Seungmo Koo

Understanding Tech Debt
Understanding Tech Debt Understanding Tech Debt
Understanding Tech Debt Seungmo Koo
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화Seungmo Koo
 
게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅Seungmo Koo
 
게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링Seungmo Koo
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍Seungmo Koo
 
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링Seungmo Koo
 
게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP AdvSeungmo Koo
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCPSeungmo Koo
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개Seungmo Koo
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPSeungmo Koo
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonSeungmo Koo
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개Seungmo Koo
 
Game Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental InfoGame Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental InfoSeungmo Koo
 

More from Seungmo Koo (15)

Understanding Tech Debt
Understanding Tech Debt Understanding Tech Debt
Understanding Tech Debt
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
게임서버프로그래밍 #7 - 패킷핸들링 및 암호화
 
게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅게임서버프로그래밍 #6 - 예외처리 및 로깅
게임서버프로그래밍 #6 - 예외처리 및 로깅
 
게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링게임서버프로그래밍 #5 - 데이터베이스 핸들링
게임서버프로그래밍 #5 - 데이터베이스 핸들링
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
게임서버프로그래밍 #3 - 메모리 및 오브젝트 풀링
 
게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP게임서버프로그래밍 #1 - IOCP
게임서버프로그래밍 #1 - IOCP
 
게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개게임제작개론 : #0 과목소개
게임제작개론 : #0 과목소개
 
Windows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCPWindows Registered I/O (RIO) vs IOCP
Windows Registered I/O (RIO) vs IOCP
 
Windows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance ComparisonWindows IOCP vs Linux EPOLL Performance Comparison
Windows IOCP vs Linux EPOLL Performance Comparison
 
NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개NHN NEXT 게임 전공 소개
NHN NEXT 게임 전공 소개
 
Game Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental InfoGame Developer Magazine, May 2012, Supplemental Info
Game Developer Magazine, May 2012, Supplemental Info
 

게임제작개론 : #6 게임 시스템 구조에 대한 이해

  • 1. 게임 제작 개론 #6 게임 시스템 구조 NHN NEXT 구승모
  • 2. Agenda • 게임 시스템의 구조 – Single Game – Multiplayer Game – Case-study • 결정형 및 비결정형 게임
  • 3. 학습 목표 • 기본적인 게임 시스템 구조에 대해 이해하고 게임의 구조적 특징이 콘텐츠에 어떤 영향을 주는지 설명 할 수 있다 • 결정형/비결정형 게임의 차이를 알고 어떤 게임이 각각에 해당하는지 실제 예를 들 수 있다
  • 5. 게임의 처리 과정 • 일반적인 게임의 처리 루프 – 싱글 플레이어 게임 – 그럼, 멀티 플레이어 게임은? Inputs Simulate Render Wait States events timer State State State Time
  • 6. 멀티 플레이어 게임 • Input이 네트워크 상의 다른 컴퓨터로부터 올 수 있음 • 게임 로직 처리 및 상태 관리를 다른 컴퓨터에서 함 • 구조에 따른 분류 – P2P, Client-Server, Web-based, Hybrid Inputs Simulate Render Wait States my events other hosts over the network
  • 8. Peer to Peer • P2P 구조 – 클라이언트간 상호 직접 연결 – 빠른 반응성 및 저렴한 유지 비용이 장점 – 확장성 및 해킹(Cheating)에 취약 – FPS 및 RTS 장르에 적합 Peer Peer Peer Peer
  • 9. P2P 방식의 처리 구조 • 게임 입력(event) 교환을 통해 각자 게임 로직 처리 Inputs Simulate Render Wait States peer events Inputs Simulate Render Wait States Compare Compare exchange
  • 10. P2P 방식의 동기화 구조 • 주기적으로 이벤트 모아서 교환 – (예) 1초에 20번 업데이트  50ms 간격의 Round – 입력이 없더라도 Beacon신호는 Round 단위로 교환 • 상대 Peer로부터 해당 라운드의 이벤트를 모아 각자처리 – 각각의 클라이언트는 모두 아래와 같은 형태의 Queue를 유지 events eventsevents나 상대1 상대2 Round 0 ms 50 100 150 Round Round Round events events events 모든 Peer들의 입력이 모이면 해당 Round를 처리(Simulate) 하고 렌더링 특정 Peer의 정 보가 제시간에 도달하지 않으 면 Lag현상 ?? events
  • 12. Client-Server • CS 구조 – 클라이언트는 서버를 통한 간접 연결 – 중요 로직은 서버에서 처리함으로써 해킹으로부터 비교적 안전 – NPC를 서버가 능동적으로 활용(drive)할 수 있음 – 구현 및 유지 보수 비용이 비교적 높음 – MMOG 장르에 적합 Client Client Client Client Server
  • 13. Client-Server 방식의 처리 구조 • 서버가 게임 로직 처리(Simulate) 및 상태 관리 Simulate States Inputs Render Wait eventsServer state info
  • 14. Client-Server 방식의 동기화 구조 • 모든 이벤트는 서버에 처리 – 클라이언트에서 발생하는 입력은 서버에 보냄 – 서버에서 모두 모아 계산한 후 해당 클라이언트로 방송 – 네트워크 트래픽이 서버에 집중되는 구조 – NPC가 생성하는 이벤트도 해당 영역내의 클라이언트에게 방송 Server Client A Client B NPC NPC NPC A B A A B B Event A Event BNPC Event
  • 16. Web-Based • 웹 서비스 방식 (REST) – HTTPS를 이용한 보안성 확보가 쉬움 – 연결 유지가 필요 없어 접속이 불안정한 환경에서 유리 – 모바일 게임 및 소셜 게임 장르에 적합 – 부하 분산(웹서버 추가)이 용이하여 확장성이 높음 • L4/L7 스위치를 통한 Load-Balancing이 가능 Client LB Web Server Browser Web Server Client Browser Web ServerHTTP
  • 17. Web-Based 방식의 처리 방식 • Request/Response 구조 – 웹의 특징을 그대로 물려 받음 • Atomic, Stateless – 플레이어간 순서 보장이 필요할 경우 • 사과를 친구가 먼저 수확한 경우 어떻게 처리? • 주로 Back-end (주로 캐시서버나 DB)에서 동기화 – 수동적: Server-initiated Action 어려움 • 몬스터의 선공과 같은 능동적 NPC 행동 불가 Web Client Web Server State State State Response Request
  • 18. 정리하면 • 만들고자 하는 게임 콘텐츠의 특성에 따라 구조 결정 – Scalability: 많은 수의 유저를 처리함에 유연한가? – Responsiveness: 상대와의 작용-반작용이 빠르게 처리 되는가? – NPC-Activeness: NPC 활용이 얼마나 적극적인가? – Security: 해킹으로 부터 얼마나 안전한가? – Robustness: 불안정한 접속 및 끊김으로 부터 복구가 쉬운가? – Simplicity: 구현 및 유지 보수 비용이 싼가? 기준 Client-Server P2P Web-based Scalability SOSO BAD GOOD Responsiveness SOSO GOOD BAD NPC-Activeness GOOD SOSO BAD Security GOOD BAD GOOD Robustness SOSO BAD GOOD Simplicity BAD GOOD GOOD
  • 19. Case Study • LOL • TERA • Diablo 2 • Diablo 3 • 사이퍼즈 • 서든어택 • 피파온라인 • 애니팡 • 마비노기 영웅전 • … …
  • 20. 결정형 게임과 비결정형 게임 (Deterministic vs Non-deterministic)
  • 21. 결정형 게임 • 다음의 공통점은? – 스타크래프트 리플레이 • 같은 경기를 녹화한 동영상보다 용량이 훨씬 작다 – LOL의 경기 참관하기 기능 • 5분 늦은 시점을 보여준다 – 스타크래프트 2 군단의 심장 • 리플레이 재생 중 특정 시점부터 이어하기 기능은? • Discussion – 위의 기능들에 대한 동작 원리는? • 5분 구상하고 발표 • 어떻게 했을까?
  • 22. 결정형 게임의 구현 원리 • 이벤트의 집합으로 동일한 시뮬레이션이 가능 – 동일한 환경을 만들어주면 항상 같은 결과값이 나오도록 설계 • 랜덤으로 결정되는 것이 없음 – (참고) deterministic physics • AI의 경우도 입력(플레이어의 특정 액션 등)에 따라 결정되는 구조 – (예) 플레이어에게 데미지를 100~150 사이 받으면 대상에게 분노하기 – (예) 프레임 단위 이벤트 동기화 Frame 1 2 3 4 5 6 7 8 … PC 1     P#2 ↙ … PC 2 P#1 P#2   … PC 3  ↗ K#2 ↓ K#1 … … … … … … … … … … … NPC 1 IDLE ATK#7 - - DEF#1 - FWD - … NPC 2 IDLE FWD - DEF#3 - ATK#4 - BACK … … … … … … … … … … …
  • 23. 비결정형 게임 • 랜덤의 요소가 존재한다면? – (예) 스타크래프트의 해병 라이플 데미지가 6~10 랜덤일 경우 • 피격대상의 히드라 HP가 8 남은 상태라면? • 어떤 경우에는 히드라가 살고, 어떤 경우에는 죽게 됨 • 결정형 게임이 더 이상 아님 • 비 결정형 게임 – 똑같은 환경이 주어지더라도 다른 결과가 나옴 – 랜덤의 요소가 존재하여 똑같이 재현이 불가능 – (예) 테라, 와우, 아이온 등의 MMORPG
  • 24. 난수의 생성원리 소개 • 컴퓨터가 정말 무작위 숫자를 생성할 수 있을까? – 특정 입력에 대해 서로 다른 결과를 생성할 수 있다면 가능 – 우리가 쓰는 컴퓨터는? deterministic machine • Pseudo-Random Number – 어떤 초기값(SEED)를 이용하여 이미 만들어진 메커니즘을 통하 여 생성되는 수로 무작위처럼 보이는 가짜 난수 – (예) middle-square, multiply-with-carry
  • 25. 좋은 난수 생성기? • 온라인 포커 게임을 만든다고 했을 때 – 패 섞을(shuffle) 때 무작위 난수 생성을 이용하게 됨 – 만일, 난수 생성 알고리즘과 SEED를 알게 된다면? • 그래서, 예측이 어려운 난수 생성이 필요 – 정말 무작위 하게 느껴지도록 하려면 • 연속되는 난수는 독립적이어야 함 • 생성 주기가 길어야 함 • 결과적으로 고르게 분포될수록 좋음 – 특정 숫자가 압도적으로 자주 나오지 않도록 함
  • 26. 비결정형을 결정형으로 만들기가 가능할까? • 초기 SEED 값을 맞추는 방법 – 플레이어 입장에서는 랜덤이 동작하는 것처럼 보일 수 있음 – 생성되는 난수가 예측되기 때문에 사실상 결정형 게임이 됨 • Discussion – MMORPG의 경우에 왜 결정형 게임으로 만들기 어려운가? • 랜덤의 요소가 없으면 쉽게 결정형 게임으로 만들 수 있는가?
  • 27. 끝 • Q & A • 강의 주제 안에서 알고 싶은 것은 게시판에 남겨주세요 • 다음 시간 강의 내용 – 게임 제작 팀 구성과 게임의 리소스 구성
  • 28. 참고 자료 • 참고 링크 – REST • https://en.wikipedia.org/wiki/Representational_state_transfer – Can a computer generate a truly random number? • http://engineering.mit.edu/live/news/1753-can-a-computer- generate-a-truly-random-number – Pseudorandom number generator • http://en.wikipedia.org/wiki/Pseudorandom_number_generator – How to Generate a Sequence of Unique Random Integers • http://preshing.com/20121224/how-to-generate-a-sequence-of- unique-random-integers