SlideShare a Scribd company logo
게임 서버 구축 방법 비교: GBaaS vs. Self-hosting
G re a t Te c h n o l o g y F o r G re a t G a m e s
D K M o o n
dkmoon@ifunfactory.com
다루는 내용:
Photon 과 GameSparks 에서 보는 GBaaS 의 공통 요소들, 구현/설계상 차이점
다루지 않는 내용:
개개의 GBaaS 구현의 안정성 여부
About This Talk
01.
Great Technology For Great Games
다루는 내용:
Photon 과 GameSparks 에서 보는 GBaaS 의 공통 요소들, 구현/설계상 차이점
다루지 않는 내용:
개개의 GBaaS 구현의 안정성 여부
About This Talk
02.
Great Technology For Great Games
게임 서비스를 위한 Backend-as-a-Service (BaaS)
다시 말해…
“게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것”
여기에는…
1) 서버, DB, 네트워크 등 물리적 인프라 (physical components)
2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components)
3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components)
Game Backend-as-a-Service (GBaaS)
03.
Great Technology For Great Games
게임 서비스를 위한 Backend-as-a-Service (BaaS)
다시 말해…
“게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것”
여기에는…
1) 서버, DB, 네트워크 등 물리적 인프라 (physical components)
2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components)
3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components)
Game Backend-as-a-Service (GBaaS)
04.
Great Technology For Great Games
게임 서비스를 위한 Backend-as-a-Service (BaaS)
다시 말해…
“게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것”
여기에는…
1) 서버, DB, 네트워크 등 물리적 인프라 (physical components)
2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components)
3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components)
Game Backend-as-a-Service (GBaaS)
05.
Great Technology For Great Games
✓ Photon by Exit Games (Hamburg, German, founded in 2003)
✓ GameSparks (Dublin, Ireland, founded in 2013)
✓ PlayFab (Seattle, USA, founded in 2014)
GBaaS Providers
06.
Great Technology For Great Games
✓ Client-Server 모델 + TCP/UDP/HTTP/WS
✓ 코어 구현은 C++
✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게
이트웨이 서버에 접속하는 방식
✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음
✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음
✓ 제한된 dashboard 기능
✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태
Photon
Introduction
07.
Great Technology For Great Games
✓ Client-Server 모델 + TCP/UDP/HTTP/WS
✓ 코어 구현은 C++
✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게
이트웨이 서버에 접속하는 방식
✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음
✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음
✓ 제한된 dashboard 기능
✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태
Photon
Introduction
08.
Great Technology For Great Games
✓ Client-Server 모델 + TCP/UDP/HTTP/WS
✓ 코어 구현은 C++
✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게
이트웨이 서버에 접속하는 방식
✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음
✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음
✓ 제한된 dashboard 기능
✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태
Photon
Introduction
09.
Great Technology For Great Games
✓ Node.js workers pool + MongoDB
✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원
✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머
리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식
✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음
✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능
✓ 매칭, ��킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원
✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능
✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리
GameSparks
Introduction
10.
Great Technology For Great Games
✓ Node.js workers pool + MongoDB
✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원
✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머
리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식
✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음
✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능
✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원
✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능
✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리
GameSparks
Introduction
11.
Great Technology For Great Games
✓ Node.js workers pool + MongoDB
✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원
✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머
리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식
✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음
✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능
✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원
✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능
✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리
GameSparks
Introduction
12.
Great Technology For Great Games
✓ 방 (게임 세션) 기반 구현
• 게임의 기본 단위로 “게임 세션” 을 가정
• 게임 세션의 라이프 사이클에 맞춘 API 디자인
• 멀티 플레이의 개념 역시 방 안의 사용자들로 한정
✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현
• 기본 API 는 게임 로직에 무관한 중립적인 형태
• 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함
• 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함
✓ 동일한 시스템이 여러 리전에 자동 복제
• 소위 말하는 “글로벌 원 빌드”
Photon vs. GS
Commonalities
13.
Great Technology For Great Games
✓ 방 (게임 세션) 기반 구현
• 게임의 기본 단위로 “게임 세션” 을 가정
• 게임 세션의 라이프 사이클에 맞춘 API 디자인
• 멀티 플레이의 개념 역시 방 안의 사용자들로 한정
✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현
• 기본 API 는 게임 로직에 무관한 중립적인 형태
• 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함
• 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함
✓ 동일한 시스템이 여러 리전에 자동 복제
• 소위 말하는 “글로벌 원 빌드”
Photon vs. GS
Commonalities
14.
Great Technology For Great Games
✓ 방 (게임 세션) 기반 구현
• 게임의 기본 단위로 “게임 세션” 을 가정
• 게임 세션의 라이프 사이클에 맞춘 API 디자인
• 멀티 플레이의 개념 역시 방 안의 사용자들로 한정
✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현
• 기본 API 는 게임 로직에 무관한 중립적인 형태
• 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함
• 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함
✓ 동일한 시스템이 여러 리전에 자동 복제
• 소위 말하는 “글로벌 원 빌드”
Photon vs. GS
Commonalities
15.
Great Technology For Great Games
✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh
✓ 커스텀 로직 구현 방식
• Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출
• Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출
✓ Logical components 의 다양성
• Photon: “방” 에 한정
• GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원
✓ Operational component 유무
• Photon: CCU / Room monitoring에 한정
• GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능
Photon vs. GS
Differences
16.
Great Technology For Great Games
✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh
✓ 커스텀 로직 구현 방식
• Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출
• Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출
✓ Logical components 의 다양성
• Photon: “방” 에 한정
• GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원
✓ Operational component 유무
• Photon: CCU / Room monitoring에 한정
• GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능
Photon vs. GS
Differences
17.
Great Technology For Great Games
✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh
✓ 커스텀 로직 구현 방식
• Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출
• Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출
✓ Logical components 의 다양성
• Photon: “방” 에 한정
• GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원
✓ Operational component 유무
• Photon: CCU / Room monitoring에 한정
• GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능
Photon vs. GS
Differences
18.
Great Technology For Great Games
✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh
✓ 커스텀 로직 구현 방식
• Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출
• Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출
✓ Logical components 의 다양성
• Photon: “방” 에 한정
• GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원
✓ Operational component 유무
• Photon: CCU / Room monitoring에 한정
• GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능
Photon vs. GS
Differences
19.
Great Technology For Great Games
✓ 싱글 플레이 게임에 효과적
• 기본 API 가 콘텐츠 로직을 포함하지 않기 때문에,복잡한 콘텐츠 로직이
필요없고 정형화된 게임 시스템의 싱글 플레이 게임 제작에 효과적
✓ 방 (게임 세션) 기반 멀티 플레이 게임에 효과적
• API 가 방 기반으로 디자인 되었기 때문에, 방의 생성, 검색, 참여, 탈퇴,
종료 상황에 대해서 잘 정의하고 있음
GBaaS
Strength
20.
Great Technology For Great Games
✓ 싱글 플레이 게임에 효과적
• 기본 API 가 콘텐츠 로직을 포함하지 않기 때문에,복잡한 콘텐츠 로직이
필요없고 정형화된 게임 시스템의 싱글 플레이 게임 제작에 효과적
✓ 방 (게임 세션) 기반 멀티 플레이 게임에 효과적
• API 가 방 기반으로 디자인 되었기 때문에, 방의 생성, 검색, 참여, 탈퇴,
종료 상황에 대해서 잘 정의하고 있음
GBaaS
Strength
21.
Great Technology For Great Games
✓ 방 기반이 아닌 게임에 취약
• 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음

이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움
✓ 로직 확장이 어려움
• Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미
• Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코
드의 확인 및 버전 관리도 힘듦
✓ MMO 지원에 취약
• 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함
• 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없
이 시스템 만으로 구현하는데 한계가 있음
GBaaS
Weakness
22.
Great Technology For Great Games
✓ 방 기반이 아닌 게임에 취약
• 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음

이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움
✓ 로직 확장이 어려움
• Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미
• Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코
드의 확인 및 버전 관리도 힘듦
✓ MMO 지원에 취약
• 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함
• 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없
이 시스템 만으로 구현하는데 한계가 있음
GBaaS
Weakness
23.
Great Technology For Great Games
✓ 방 기반이 아닌 게임에 취약
• 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음

이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움
✓ 로직 확장이 어려움
• Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미
• Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코
드의 확인 및 버전 관리도 힘듦
✓ MMO 지원에 취약
• 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함
• 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없
이 시스템 만으로 구현하는데 한계가 있음
GBaaS
Weakness
24.
Great Technology For Great Games
✓ Strength
• 로직 확장이 자유로움
• 구현 가능한 시스템에 제약이 없음
• 병목 디버깅 / 튜닝 용이
• 따라서 복잡한 로직의 게임이나 MMO 등에 적합
✓ Weakness
• 기초적인 것만 돌려보기 위해서도 초기 작업량이 많음
Self-hosting
Strength & Weakness
25.
Great Technology For Great Games
✓ Strength
• 로직 확장이 자유로움
• 구현 가능한 시스템에 제약이 없음
• 병목 디버깅 / 튜닝 용이
• 따라서 복잡한 로직의 게임이나 MMO 등에 적합
✓ Weakness
• 기초적인 것만 돌려보기 위해서도 초기 작업량이 많음
Self-hosting
Strength & Weakness
26.
Great Technology For Great Games
✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함
✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함
✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함
✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함
✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음
✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음
✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함
✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함
Conclusion
27.
Great Technology For Great Games
✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함
✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함
✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함
✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함
✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음
✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음
✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함
✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함
Conclusion
28.
Great Technology For Great Games
✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함
✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함
✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함
✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함
✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음
✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음
✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함
✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함
Conclusion
29.
Great Technology For Great Games
(MMO and non-session based games) PC/MMO is about 27% of total game market.
Addressable Market Size Difference
30.
Great Technology For Great Games
Source: Newzoo report, June, 2016
DK Moon
dkmoon@ifunfactory.com
www.ifunfactory.com
THANKS!
G r e a t Te c h n o l o g y F o r G r e a t G a m e s , i F u n Fa c t o r y

More Related Content

게임서버 구축 방법비교 : GBaaS vs. Self-hosting

  • 1. 게임 서버 구축 방법 비교: GBaaS vs. Self-hosting G re a t Te c h n o l o g y F o r G re a t G a m e s D K M o o n dkmoon@ifunfactory.com
  • 2. 다루는 내용: Photon 과 GameSparks 에서 보는 GBaaS 의 공통 요소들, 구현/설계상 차이점 다루지 않는 내용: 개개의 GBaaS 구현의 안정성 여부 About This Talk 01. Great Technology For Great Games
  • 3. 다루는 내용: Photon 과 GameSparks 에서 보는 GBaaS 의 공통 요소들, 구현/설계상 차이점 다루지 않는 내용: 개개의 GBaaS 구현의 안정성 여부 About This Talk 02. Great Technology For Great Games
  • 4. 게임 서비스를 위한 Backend-as-a-Service (BaaS) 다시 말해… “게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것” 여기에는… 1) 서버, DB, 네트워크 등 물리적 인프라 (physical components) 2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components) 3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components) Game Backend-as-a-Service (GBaaS) 03. Great Technology For Great Games
  • 5. 게임 서비스를 위한 Backend-as-a-Service (BaaS) 다시 말해… “게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것” 여기에는… 1) 서버, DB, 네트워크 등 물리적 인프라 (physical components) 2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components) 3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components) Game Backend-as-a-Service (GBaaS) 04. Great Technology For Great Games
  • 6. 게임 서비스를 위한 Backend-as-a-Service (BaaS) 다시 말해… “게임 서비스를 위한 제반 인프라를 클라우드 서비스 형태로 제공하는 것” 여기에는… 1) 서버, DB, 네트워크 등 물리적 인프라 (physical components) 2) 게임 시스템 구현을 위한 논리적 프로그래밍 요소 (logical components) 3) 게임 시스템/유저 관리 등 운영 기능이 포함됨 (operational components) Game Backend-as-a-Service (GBaaS) 05. Great Technology For Great Games
  • 7. ✓ Photon by Exit Games (Hamburg, German, founded in 2003) ✓ GameSparks (Dublin, Ireland, founded in 2013) ✓ PlayFab (Seattle, USA, founded in 2014) GBaaS Providers 06. Great Technology For Great Games
  • 8. ✓ Client-Server 모델 + TCP/UDP/HTTP/WS ✓ 코어 구현은 C++ ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게 이트웨이 서버에 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음 ✓ 제한된 dashboard 기능 ✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태 Photon Introduction 07. Great Technology For Great Games
  • 9. ✓ Client-Server 모델 + TCP/UDP/HTTP/WS ✓ 코어 구현은 C++ ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게 이트웨이 서버에 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음 ✓ 제한된 dashboard 기능 ✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태 Photon Introduction 08. Great Technology For Great Games
  • 10. ✓ Client-Server 모델 + TCP/UDP/HTTP/WS ✓ 코어 구현은 C++ ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, 클라이언트가 지역별 게 이트웨이 서버에 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ API 역시 방을 다루는 방식에 촛점이 맞춰져 있음 ✓ 제한된 dashboard 기능 ✓ 명시적으로 접속할 게임 버전을 클라이언트가 지정하는 형태 Photon Introduction 09. Great Technology For Great Games
  • 11. ✓ Node.js workers pool + MongoDB ✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원 ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머 리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능 ✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원 ✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능 ✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리 GameSparks Introduction 10. Great Technology For Great Games
  • 12. ✓ Node.js workers pool + MongoDB ✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원 ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머 리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능 ✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원 ✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능 ✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리 GameSparks Introduction 11. Great Technology For Great Games
  • 13. ✓ Node.js workers pool + MongoDB ✓ 비동기 API 는 WSS, 리얼타임 API 는 TCP/UDP 지원 ✓ 동일한 시스템이 여러 리전에 레플리케이션되고, GS 에서 설정한 프라이머 리 리전의 게이트웨이 서버로 클라이언트가 접속하는 방식 ✓ 게임의 전체 흐름이 방의 생성 → 플레이 → 종료에 맞춰져 있음 ✓ 다만 방을 만드는 방식이 명시적인 방법 외에 Match 나 Challenge 도 가능 ✓ 매칭, 랭킹, 그룹핑, 성취 보상, 가상 경제 등에 대한 API 도 지원 ✓ Dashboard 상에서 리소스 설정, JS 편집, REST 테스트 가능 ✓ 설정의 스냅샷 → 릴리즈 방식으로 버전 관리 GameSparks Introduction 12. Great Technology For Great Games
  • 14. ✓ 방 (게임 세션) 기반 구현 • 게임의 기본 단위로 “게임 세션” 을 가정 • 게임 세션의 라이프 사이클에 맞춘 API 디자인 • 멀티 플레이의 개념 역시 방 안의 사용자들로 한정 ✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현 • 기본 API 는 게임 로직에 무관한 중립적인 형태 • 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함 • 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함 ✓ 동일한 시스템이 여러 리전에 자동 복제 • 소위 말하는 “글로벌 원 빌드” Photon vs. GS Commonalities 13. Great Technology For Great Games
  • 15. ✓ 방 (게임 세션) 기반 구현 • 게임의 기본 단위로 “게임 세션” 을 가정 • 게임 세션의 라이프 사이클에 맞춘 API 디자인 • 멀티 플레이의 개념 역시 방 안의 사용자들로 한정 ✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현 • 기본 API 는 게임 로직에 무관한 중립적인 형태 • 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함 • 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함 ✓ 동일한 시스템이 여러 리전에 자동 복제 • 소위 말하는 “글로벌 원 빌드” Photon vs. GS Commonalities 14. Great Technology For Great Games
  • 16. ✓ 방 (게임 세션) 기반 구현 • 게임의 기본 단위로 “게임 세션” 을 가정 • 게임 세션의 라이프 사이클에 맞춘 API 디자인 • 멀티 플레이의 개념 역시 방 안의 사용자들로 한정 ✓ 기본 API 의 후킹과 커스텀 로직을 통한 게임 콘텐츠 구현 • 기본 API 는 게임 로직에 무관한 중립적인 형태 • 콘텐츠 구현을 위해서는 로직을 확장할 수 있는 방식이 필요함 • 두 제품 모두 API 후킹 및 커스텀 로직 확장을 제공함 ✓ 동일한 시스템이 여러 리전에 자동 복제 • 소위 말하는 “글로벌 원 빌드” Photon vs. GS Commonalities 15. Great Technology For Great Games
  • 17. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 16. Great Technology For Great Games
  • 18. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 17. Great Technology For Great Games
  • 19. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 18. Great Technology For Great Games
  • 20. ✓ 멀티플레이어 Topology 구현: Photon Client-Server vs. GS full mesh ✓ 커스텀 로직 구현 방식 • Webhook 방식: Photon 이 가정한 event 발생시 외부 API 를 호출 • Code injection 방식: GS 는 임의의 JS 코드를 등록하고 이를 호출 ✓ Logical components 의 다양성 • Photon: “방” 에 한정 • GS: 매칭, 그룹핑, 랭킹, 성취 및 보상, 가상 화폐 등 다양한 영역 지원 ✓ Operational component 유무 • Photon: CCU / Room monitoring에 한정 • GS: logical components 의 설정 및 모니터링이 대쉬보드로 가능 Photon vs. GS Differences 19. Great Technology For Great Games
  • 21. ✓ 싱글 플레이 게임에 효과적 • 기본 API 가 콘텐츠 로직을 포함하지 않기 때문에,복잡한 콘텐츠 로직이 필요없고 정형화된 게임 시스템의 싱글 플레이 게임 제작에 효과적 ✓ 방 (게임 세션) 기반 멀티 플레이 게임에 효과적 • API 가 방 기반으로 디자인 되었기 때문에, 방의 생성, 검색, 참여, 탈퇴, 종료 상황에 대해서 잘 정의하고 있음 GBaaS Strength 20. Great Technology For Great Games
  • 22. ✓ 싱글 플레이 게임에 효과적 • 기본 API 가 콘텐츠 로직을 포함하지 않기 때문에,복잡한 콘텐츠 로직이 필요없고 정형화된 게임 시스템의 싱글 플레이 게임 제작에 효과적 ✓ 방 (게임 세션) 기반 멀티 플레이 게임에 효과적 • API 가 방 기반으로 디자인 되었기 때문에, 방의 생성, 검색, 참여, 탈퇴, 종료 상황에 대해서 잘 정의하고 있음 GBaaS Strength 21. Great Technology For Great Games
  • 23. ✓ 방 기반이 아닌 게임에 취약 • 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음
 이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움 ✓ 로직 확장이 어려움 • Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미 • Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코 드의 확인 및 버전 관리도 힘듦 ✓ MMO 지원에 취약 • 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함 • 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없 이 시스템 만으로 구현하는데 한계가 있음 GBaaS Weakness 22. Great Technology For Great Games
  • 24. ✓ 방 기반이 아닌 게임에 취약 • 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음
 이는 추후에 추가해서 해결 될 수 ��는 것이 아닌 구조적인 문제에 가까움 ✓ 로직 확장이 어려움 • Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미 • Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코 드의 확인 및 버전 관리도 힘듦 ✓ MMO 지원에 취약 • 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함 • 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없 이 시스템 만으로 구현하는데 한계가 있음 GBaaS Weakness 23. Great Technology For Great Games
  • 25. ✓ 방 기반이 아닌 게임에 취약 • 오픈월드 등 방 기반이 아닌 시스템을 구현하기 위한 API 존재하지 않음
 이는 추후에 추가해서 해결 될 수 있는 것이 아닌 구조적인 문제에 가까움 ✓ 로직 확장이 어려움 • Webhook 은 외부 시스템에 별도로 state 를 복제/관리해야됨을 의미 • Code injection 은 대규모 코드의 작성이 어렵고, cloud 상에 올라간 코 드의 확인 및 버전 관리도 힘듦 ✓ MMO 지원에 취약 • 방 기반 API 는 거의 필연적으로 브로드캐스팅 방식을 사용함 • 상황에 따라 패킷 전송 범위를 다르게 정하는 것은 콘텐츠 로직의 도움 없 이 시스템 만으로 구현하는데 한계가 있음 GBaaS Weakness 24. Great Technology For Great Games
  • 26. ✓ Strength • 로직 확장이 자유로움 • 구현 가능한 시스템에 제약이 없음 • 병목 디버깅 / 튜닝 용이 • 따라서 복잡한 로직의 게임이나 MMO 등에 적합 ✓ Weakness • 기초적인 것만 돌려보기 위해서도 초기 작업량이 많음 Self-hosting Strength & Weakness 25. Great Technology For Great Games
  • 27. ✓ Strength • 로직 확장이 자유로움 • 구현 가능한 시스템에 제약이 없음 • 병목 디버깅 / 튜닝 용이 • 따라서 복잡한 로직의 게임이나 MMO 등에 적합 ✓ Weakness • 기초적인 것만 돌려보기 위해서도 초기 작업량이 많음 Self-hosting Strength & Weakness 26. Great Technology For Great Games
  • 28. ✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함 ✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함 ✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함 ✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함 ✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음 ✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음 ✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함 ✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함 Conclusion 27. Great Technology For Great Games
  • 29. ✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함 ✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함 ✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함 ✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함 ✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음 ✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음 ✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함 ✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함 Conclusion 28. Great Technology For Great Games
  • 30. ✓ GBaaS 는 서버/DB/네트워크 등 물리 요소를 다루지 않아도 되기에 편리함 ✓ GBaaS 는 게임 시스템 구현을 위한 논리 요소를 “단순화”하여 쓰기 쉽게함 ✓ GBaaS 의 운영 요소 유무는 안정성 만큼이나 중요하게 고려되어야 함 ✓ GBaaS 의 단순화된 논리 요소는 게임 로직의 확장을 어렵게 함 ✓ GBaaS 의 이런 장단점으로 싱글 플레이/방 기반 멀티플레이에 적합도 높음 ✓ 서버 직접 운영은 단순화의 부족으로 초기 작업량이 많을 수 있음 ✓ 그러나 다양한 시스템의 구현과 로직의 확장이 용이함 ✓ 또한 블랙박스 요소의 감소로 디버깅이 용이함 Conclusion 29. Great Technology For Great Games
  • 31. (MMO and non-session based games) PC/MMO is about 27% of total game market. Addressable Market Size Difference 30. Great Technology For Great Games Source: Newzoo report, June, 2016
  • 32. DK Moon dkmoon@ifunfactory.com www.ifunfactory.com THANKS! G r e a t Te c h n o l o g y F o r G r e a t G a m e s , i F u n Fa c t o r y