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

기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까Han Je Sung
 
게임제작개론 9
게임제작개론 9게임제작개론 9
게임제작개론 9Seokmin No
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱Seungmo Koo
 
Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기태성 이
 
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해Seungmo Koo
 
게임제작개론 8
게임제작개론 8게임제작개론 8
게임제작개론 8Seokmin No
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)Lee Sangkyoon (Kay)
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012devCAT Studio, NEXON
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법Lee Sangkyoon (Kay)
 
게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해Seungmo Koo
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건강 민우
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?강 민우
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스Seungmo Koo
 
[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니Yongha Kim
 
전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)Chanman Jo
 
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마강 민우
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정강 민우
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리강 민우
 

What's hot (20)

기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까기획자의 포트폴리오는 어떻게 써야 할까
기획자의 포트폴리오는 어떻게 써야 할까
 
게임제작개론 9
게임제작개론 9게임제작개론 9
게임제작개론 9
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱
 
Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기Part3. 아이디어를 게임기획으로 발전시키기
Part3. 아이디어를 게임기획으로 발전시키기
 
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
게임제작개론 : #7 팀 역할과 게임 리소스에 대한 이해
 
게임제작개론 8
게임제작개론 8게임제작개론 8
게임제작개론 8
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
 
프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법프로그래머에게 사랑받는 게임 기획서 작성법
프로그래머에게 사랑받는 게임 기획서 작성법
 
게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해게임제작개론 : #5 플레이어에 대한 이해
게임제작개론 : #5 플레이어에 대한 이해
 
마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건마비노기듀얼 이야기-넥슨 김동건
마비노기듀얼 이야기-넥슨 김동건
 
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
[IGC 2016] 컴투스 김동준 - 기획 지망생은 무엇을 준비하나요?
 
게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스게임제작개론 : #8 게임 제작 프로세스
게임제작개론 : #8 게임 제작 프로세스
 
[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니[NDC 2021] 게임 PD가 되어 보니
[NDC 2021] 게임 PD가 되어 보니
 
전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)전투 시스템 기획(Canvas 스터디 1차)
전투 시스템 기획(Canvas 스터디 1차)
 
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
 

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
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: 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
 

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 장창완(최종)
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 

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
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스Seungmo 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 (16)

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
 
게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스게임제작개론 : #9 라이브 서비스
게임제작개론 : #9 라이브 서비스
 
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
 

Recently uploaded

TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)yonseilibrary
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료Seongwon Kim
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다ultrasuperrok
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.ultrasuperrok
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.ultrasuperrok
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111a01091282057
 

Recently uploaded (6)

TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111
 

게임제작개론 : #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