SlideShare a Scribd company logo
1 of 35
Download to read offline
Designing a Pragmatic Backend
Service for Mobile Games
DK Moon (dkmoon@ifunfactory.com)
November 13 2013
Cliche: Mobile Game Segment Growing Super Fast
0%
5%
10%
15%
20%
25%
30%
35%
40%
45%
2013 2014 2015
Video Game Market Revenue Growth
Mobile Games Video Game Console PC Games
Source: Gartner (October 2013)
Game Development Ecosystem
Game
Server
Game
Client
Internet
Game Development Ecosystem
Game
Server
Game
Client
Internet
Game concept
Game logic design
Game balance
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Client app impl.
Game logic impl.
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Client app impl.
Game logic impl.
소프트웨어 엔지니어
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Server app impl.
Game logic impl.
Client app impl.
Game logic impl.
소프트웨어 엔지니어
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Server app impl.
Game logic impl.
Client app impl.
Game logic impl.
소프트웨어 엔지니어
소프트웨어 엔지니어
Data center
DB
Server
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Server app impl.
Game logic impl.
Client app impl.
Game logic impl.
소프트웨어 엔지니어
소프트웨어 엔지니어
Data center
DB
Server
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Server app impl.
Game logic impl.
Client app impl.
Game logic impl.
소프트웨어 엔지니어
소프트웨어 엔지니어
Server mgmt
Server monitoring
Log analysis
시스템 엔지니어, DBA
Data center
DB
Server
Game Development Ecosystem
Game
Server
Game
Client
Internet
게임 기획자
Game concept
Game logic design
Game balance
Game graphic asset
게임 그래픽 디자이너
Server app impl.
Game logic impl.
Client app impl.
Game logic impl.
소프트웨어 엔지니어
소프트웨어 엔지니어
Server mgmt
Server monitoring
Log analysis
시스템 엔지니어, DBA
Who is the key player?
Mobile game is an entertainment business targeting end users.
Hence, game designer and graphic designer are important.
• They determine look & feel. Also, game logic.
• But it assumes your engineers do not break anything.
Unfortunately, they will.
Engineers cannot guarantee success, but can lead to failure.
• Software reliability is crucial.
• But very hard to find decent, experienced engineers.
Resource Requirement to Build a Mobile Game
Depending on game scale
• Casual games vs. mid-core games vs. hard-core games
If building a casual game…
• Around 300M KRW investment
• less than 10 members
• 6-9mo development
• 6-12mo service
Sorry, Buddy. Things Are Getting Worse.
Competition getting fierce
Need to design bigger games
• More people & time. Hence, more cost…
Need to shorten time-to-market
• More people. Again, more cost…
Efforts to Reduce Development Cycle
Client-side
• Relying on client engines (e.g., Unity3D, Cocos2D, …)
Server-side
• Hardware: using IaaS cloud for server provisioning. (AWS)
• Software: leveraging web server technologies.
• Game features: Adopting external components/services.
(e.g., leaderboard, community)
Incompleteness of existing server-side solution
IaaS helps, but to a limited extent
• Installing OS is not what engineers spend most of time.
• Converting into game server is the most time-consuming and error-prone.
Not all games are built on top of web server
• HTTP works on a request-response basis.
 Complex games require complex communication patterns.
• Web server is stateless in general.
 Even trivial operation should hit database.
Integrating into external service takes time.
• Also gives learning curve.
Backend Service for Mobile Games
A set of hardware resources and software components accessible
via API to resolve issues in building mobile game server and related
infrastructure.
Mobile Game Backend Design Space
Infrastructure
Game server core
In-game components
Design Consideration #1: Infrastructure
Cloud storage
• For player profiles and game achievements
• Exposing DB interface vs. providing API?
Design Consideration #1: Infrastructure
IaaS
• Game developers manually configure machine.
• Tools are at the granularity of machine (CPU, RAM, Disk, Traffic, …)
• Bare-metal provisioning vs. VM provisioning?
Design Consideration #1: Infrastructure
PaaS
• Cloud instance is pre-configured as game server.
• Tools are at the granularity of game (#sessions, #items, …)
• Might include push server, player mgmt tools, etc.
Design Consideration #2: Game Server Core
Networking
• Message format (custom format vs. Protobuf/Thrift/JSON/…)
• Operating layer (session layer vs. transport layer)
• External integration (authentication, billing, …)
Design Consideration #2: Game Server Core
Database abstraction
• Explicit database calling vs. transparent database handling
Design Consideration #2: Game Server Core
Library vs. Framework
• Actively call into vs. Passively invoked.
Design Consideration #2: Game Server Core
Programming model
• Procedural vs. Event-driven vs. Declarative vs. …
Design Consideration #3: In-game Components
Components implementing game features
• Leaderboard, Chatting, Virtual currency, Matchmaking, AI
• Genre-specific in-game components
• …
Components architecture must be extensible
• Tightly-coupled vs. loosely-coupled
• SDK approach vs. API approach
Short Survey on Backend Solutions
PlayerScale OpenKit Scoreoid Player.IO
Google
(App Engine /
Compute Engine)
In-game components
Yes
(leaderboards, chat,
virtual currency,
matchmaking)
Yes
(leaderboards)
Yes
(leaderboards, in-
game notifications,
achievements)
Yes
(lobby, chat)
Yes
(leaderboards,
achievement)
External integration
Payment
Authentication
Authentication Authentication
Payment
Authentication
Analytics tools Yes Yes Only for error logs Yes
Cloud Storage Yes Yes Yes Yes Yes
Player management Yes Yes
Game server core Only for Flash
Infra support other
than cloud storage
* Information gathered from official sites.
Short introduction on my work
Funapi
• Game server framework.
• Developers implement only game logic. Then, Funapi does the rest.
Argus
• PaaS cloud specialized in mobile games
• Developers focus only on game server. Then, Argus does the rest.
Lessons from designing a backend service
Must be fool-proof
• Not all game developers share the same skills set.
• Do not blame game developers.
• If they fail, double-check if fool-proof.
Lessons from designing a backend service
Must be out-of-the-box
• Extremely tight time budget in game development.
• Do not expect game developers to eagerly go thru learning curve.
• If your backend service has high learning curve or
requires extensive integration work, it is less likely to be adopted.
Lessons from designing a backend service
Think deployment scenario from the beginning
• Extremely difficult to pull back once deployed.
• Versioning should be in place from the beginning.
• Package manager like Debian APT is worth referring to.
Questions?
dkmoon@ifunfactory.com

More Related Content

What's hot

What's hot (9)

Puppet camp LA and Phoenix 2015: Keynote
Puppet camp LA and Phoenix 2015: Keynote Puppet camp LA and Phoenix 2015: Keynote
Puppet camp LA and Phoenix 2015: Keynote
 
The tech. behind RoboBlastPlanet
The tech. behind RoboBlastPlanetThe tech. behind RoboBlastPlanet
The tech. behind RoboBlastPlanet
 
[Serverless OpenHack Tokyo] Azure Serverless (English)
[Serverless OpenHack Tokyo] Azure Serverless (English)[Serverless OpenHack Tokyo] Azure Serverless (English)
[Serverless OpenHack Tokyo] Azure Serverless (English)
 
Cloud Gaming Architectures: From Social to Mobile to MMO
Cloud Gaming Architectures: From Social to Mobile to MMOCloud Gaming Architectures: From Social to Mobile to MMO
Cloud Gaming Architectures: From Social to Mobile to MMO
 
Addressables for live content management – Unite Copenhagen 2019
Addressables for live content management – Unite Copenhagen 2019Addressables for live content management – Unite Copenhagen 2019
Addressables for live content management – Unite Copenhagen 2019
 
The NBN Puppet Journey
The NBN Puppet JourneyThe NBN Puppet Journey
The NBN Puppet Journey
 
PuppetConf 2016: Puppet & Azure – Kenaz Kwa, Puppet
PuppetConf 2016: Puppet & Azure – Kenaz Kwa, PuppetPuppetConf 2016: Puppet & Azure – Kenaz Kwa, Puppet
PuppetConf 2016: Puppet & Azure – Kenaz Kwa, Puppet
 
Adobe AIR for mobile games
Adobe AIR for mobile gamesAdobe AIR for mobile games
Adobe AIR for mobile games
 
What's New in Puppet Enterprise 2016.2
What's New in Puppet Enterprise 2016.2What's New in Puppet Enterprise 2016.2
What's New in Puppet Enterprise 2016.2
 

Viewers also liked

NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
 
Realidad Virtual Nuevos Mundos Para La Psicoterapia Mackay
Realidad Virtual Nuevos Mundos Para La Psicoterapia MackayRealidad Virtual Nuevos Mundos Para La Psicoterapia Mackay
Realidad Virtual Nuevos Mundos Para La Psicoterapia Mackay
mackayunah
 
Enterprise Mobile App UX: Designing from UI to Backend
Enterprise Mobile App UX: Designing from UI to BackendEnterprise Mobile App UX: Designing from UI to Backend
Enterprise Mobile App UX: Designing from UI to Backend
Sanjeev Sharma
 

Viewers also liked (20)

iFun Deploy 소개
iFun Deploy 소개iFun Deploy 소개
iFun Deploy 소개
 
Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉Make "PONG" : 아키텍팅과 동기화 테크닉
Make "PONG" : 아키텍팅과 동기화 테크닉
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기클라우드 춘추전국시대 서버 개발자 생존기
클라우드 춘추전국시대 서버 개발자 생존기
 
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
PC 와 모바일에서의 P2P 게임 구현에서의 차이점 비교
 
iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray) iFun Engine plugin 만들기 (for Stingray)
iFun Engine plugin 만들기 (for Stingray)
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여게임 운영에 필요한 로그성 데이터들에 대하여
게임 운영에 필요한 로그성 데이터들에 대하여
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기iFunEngine: 30분 만에 게임 서버 만들기
iFunEngine: 30분 만에 게임 서버 만들기
 
Metodologias de desarrollo de software en Gaming [EA]
Metodologias de desarrollo de software en Gaming [EA]Metodologias de desarrollo de software en Gaming [EA]
Metodologias de desarrollo de software en Gaming [EA]
 
Cloud gaming
Cloud gamingCloud gaming
Cloud gaming
 
Project falcon1
Project falcon1Project falcon1
Project falcon1
 
Automatización de despliegues en Openshift con Ansible Tower
Automatización de despliegues en Openshift con Ansible TowerAutomatización de despliegues en Openshift con Ansible Tower
Automatización de despliegues en Openshift con Ansible Tower
 
Docker: Containers Evolved - Dynamic Instantiation of Microservices
Docker: Containers Evolved - Dynamic Instantiation of MicroservicesDocker: Containers Evolved - Dynamic Instantiation of Microservices
Docker: Containers Evolved - Dynamic Instantiation of Microservices
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
Realidad Virtual Nuevos Mundos Para La Psicoterapia Mackay
Realidad Virtual Nuevos Mundos Para La Psicoterapia MackayRealidad Virtual Nuevos Mundos Para La Psicoterapia Mackay
Realidad Virtual Nuevos Mundos Para La Psicoterapia Mackay
 
Enterprise Mobile App UX: Designing from UI to Backend
Enterprise Mobile App UX: Designing from UI to BackendEnterprise Mobile App UX: Designing from UI to Backend
Enterprise Mobile App UX: Designing from UI to Backend
 

Similar to Designing a pragmatic back-end service for mobile games

Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hd
slantsixgames
 

Similar to Designing a pragmatic back-end service for mobile games (20)

The Future is Operations: Why Mobile Games Need Backends
The Future is Operations: Why Mobile Games Need BackendsThe Future is Operations: Why Mobile Games Need Backends
The Future is Operations: Why Mobile Games Need Backends
 
Metodologías de desarrollo de software en Gaming
Metodologías de desarrollo de software en GamingMetodologías de desarrollo de software en Gaming
Metodologías de desarrollo de software en Gaming
 
Streamed Cloud Gaming Solutions for Android* and PC Games
Streamed Cloud Gaming Solutions for Android* and PC GamesStreamed Cloud Gaming Solutions for Android* and PC Games
Streamed Cloud Gaming Solutions for Android* and PC Games
 
My Presentation.ppt
My Presentation.pptMy Presentation.ppt
My Presentation.ppt
 
Behind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game GloballyBehind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
Behind the Scenes: Deploying a Low-Latency Multiplayer Game Globally
 
Say hello to the new PlayFab!
Say hello to the new PlayFab!Say hello to the new PlayFab!
Say hello to the new PlayFab!
 
Introduction to Game Engine: Concepts & Components
Introduction to Game Engine: Concepts & ComponentsIntroduction to Game Engine: Concepts & Components
Introduction to Game Engine: Concepts & Components
 
De Re PlayStation Vita
De Re PlayStation VitaDe Re PlayStation Vita
De Re PlayStation Vita
 
FootballX - How to make an online game using serverless
FootballX - How to make an online game using serverlessFootballX - How to make an online game using serverless
FootballX - How to make an online game using serverless
 
Intro to Massively Multiplayer Online Game (MMOG) Design
Intro to Massively Multiplayer Online Game (MMOG) DesignIntro to Massively Multiplayer Online Game (MMOG) Design
Intro to Massively Multiplayer Online Game (MMOG) Design
 
HTML5 Game Development frameworks overview
HTML5 Game Development frameworks overviewHTML5 Game Development frameworks overview
HTML5 Game Development frameworks overview
 
Intro to Game Development & Operations on AWS
Intro to Game Development & Operations on AWSIntro to Game Development & Operations on AWS
Intro to Game Development & Operations on AWS
 
ARISE
ARISEARISE
ARISE
 
Applying AI in Games (GDC2019)
Applying AI in Games (GDC2019)Applying AI in Games (GDC2019)
Applying AI in Games (GDC2019)
 
GP Intro.pptx
GP Intro.pptxGP Intro.pptx
GP Intro.pptx
 
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
(GAM301) Real-Time Game Analytics with Amazon Kinesis, Amazon Redshift, and A...
 
Supersize your production pipe enjmin 2013 v1.1 hd
Supersize your production pipe    enjmin 2013 v1.1 hdSupersize your production pipe    enjmin 2013 v1.1 hd
Supersize your production pipe enjmin 2013 v1.1 hd
 
AppBattler - An Android-based SDK for game developers to enable social gaming
AppBattler - An Android-based SDK for game developers to enable social gamingAppBattler - An Android-based SDK for game developers to enable social gaming
AppBattler - An Android-based SDK for game developers to enable social gaming
 
Final project report of a game
Final project report of a gameFinal project report of a game
Final project report of a game
 
Gameathon @ Neev
Gameathon @ NeevGameathon @ Neev
Gameathon @ Neev
 

More from iFunFactory Inc.

More from iFunFactory Inc. (19)

2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
2019 아이펀팩토리 Dev Day 세션6 아이펀엔진 운영툴 연동하기 - 장수원
 
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
2019 아이펀팩토리 Dev Day 세션5 아이펀엔진으로 만든 게임 성능 분석 및 디버깅 - 남승현
 
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
2019 아이펀팩토리 Dev Day 세션4 아이펀엔진에 MO 게임 콘텐츠 채워 넣기 - 남승현
 
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
2019 아이펀팩토리 Dev Day 세션3 아이펀엔진 개발 환경 설정하기 (Windows+ VS) - 김진욱
 
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
2019 아이펀팩토리 Dev Day 세션2 아이펀엔진 개발 환경 설정하기 (Linux + VS Code) - 김진욱
 
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
2019 아이펀팩토리 Dev Day 세션1 네트워크 프로그래밍 개론 - 문대경 대표
 
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
[MGDC] 리눅스 게임 서버 성능 분석하기 - 아이펀팩토리 김진욱 CTO
 
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _03 Scalable 한 게임 서버 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
[아이펀팩토리] 2018 데브데이 서버위더스 _01 HTML5/WebSocket으로 Pong 게임 만들기
 
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
[아이펀팩토리] 2018 데브데이 서버위더스 _02 분산 환경을 위한 ORM 개발 경험 공유
 
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
[아이펀팩토리] 2018 데브데이 서버위더스 _04 리눅스 게임 서버 성능 분석
 
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기 [아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
[아이펀팩토리] 클라이언트 개발자, 서버 개발 시작하기
 
[아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP [아이펀팩토리] 2017 NDCP
[아이펀팩토리] 2017 NDCP
 
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
[아이펀팩토리]2017 NDC 강연 자료_아이펀 엔진 개발 노트
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 
유니티 쉐이더 단기속성
유니티 쉐이더 단기속성유니티 쉐이더 단기속성
유니티 쉐이더 단기속성
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버혼자서 만드는 MMO게임 서버
혼자서 만드는 MMO게임 서버
 
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기Python과 AWS를 이용하여 게임 테스트 환경 구축하기
Python과 AWS를 이용하여 게임 테스트 환경 구축하기
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Recently uploaded (20)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 

Designing a pragmatic back-end service for mobile games

  • 1. Designing a Pragmatic Backend Service for Mobile Games DK Moon (dkmoon@ifunfactory.com) November 13 2013
  • 2. Cliche: Mobile Game Segment Growing Super Fast 0% 5% 10% 15% 20% 25% 30% 35% 40% 45% 2013 2014 2015 Video Game Market Revenue Growth Mobile Games Video Game Console PC Games Source: Gartner (October 2013)
  • 5. Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance
  • 6. Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset
  • 7. Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너
  • 8. Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너 Client app impl. Game logic impl.
  • 9. Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너 Client app impl. Game logic impl. 소프트웨어 엔지니어
  • 10. Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너 Server app impl. Game logic impl. Client app impl. Game logic impl. 소프트웨어 엔지니어
  • 11. Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너 Server app impl. Game logic impl. Client app impl. Game logic impl. 소프트웨어 엔지니어 소프트웨어 엔지니어
  • 12. Data center DB Server Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너 Server app impl. Game logic impl. Client app impl. Game logic impl. 소프트웨어 엔지니어 소프트웨어 엔지니어
  • 13. Data center DB Server Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너 Server app impl. Game logic impl. Client app impl. Game logic impl. 소프트웨어 엔지니어 소프트웨어 엔지니어 Server mgmt Server monitoring Log analysis 시스템 엔지니어, DBA
  • 14. Data center DB Server Game Development Ecosystem Game Server Game Client Internet 게임 기획자 Game concept Game logic design Game balance Game graphic asset 게임 그래픽 디자이너 Server app impl. Game logic impl. Client app impl. Game logic impl. 소프트웨어 엔지니어 소프트웨어 엔지니어 Server mgmt Server monitoring Log analysis 시스템 엔지니어, DBA
  • 15. Who is the key player? Mobile game is an entertainment business targeting end users. Hence, game designer and graphic designer are important. • They determine look & feel. Also, game logic. • But it assumes your engineers do not break anything. Unfortunately, they will. Engineers cannot guarantee success, but can lead to failure. • Software reliability is crucial. • But very hard to find decent, experienced engineers.
  • 16. Resource Requirement to Build a Mobile Game Depending on game scale • Casual games vs. mid-core games vs. hard-core games If building a casual game… • Around 300M KRW investment • less than 10 members • 6-9mo development • 6-12mo service
  • 17. Sorry, Buddy. Things Are Getting Worse. Competition getting fierce Need to design bigger games • More people & time. Hence, more cost… Need to shorten time-to-market • More people. Again, more cost…
  • 18. Efforts to Reduce Development Cycle Client-side • Relying on client engines (e.g., Unity3D, Cocos2D, …) Server-side • Hardware: using IaaS cloud for server provisioning. (AWS) • Software: leveraging web server technologies. • Game features: Adopting external components/services. (e.g., leaderboard, community)
  • 19. Incompleteness of existing server-side solution IaaS helps, but to a limited extent • Installing OS is not what engineers spend most of time. • Converting into game server is the most time-consuming and error-prone. Not all games are built on top of web server • HTTP works on a request-response basis.  Complex games require complex communication patterns. • Web server is stateless in general.  Even trivial operation should hit database. Integrating into external service takes time. • Also gives learning curve.
  • 20. Backend Service for Mobile Games A set of hardware resources and software components accessible via API to resolve issues in building mobile game server and related infrastructure.
  • 21. Mobile Game Backend Design Space Infrastructure Game server core In-game components
  • 22. Design Consideration #1: Infrastructure Cloud storage • For player profiles and game achievements • Exposing DB interface vs. providing API?
  • 23. Design Consideration #1: Infrastructure IaaS • Game developers manually configure machine. • Tools are at the granularity of machine (CPU, RAM, Disk, Traffic, …) • Bare-metal provisioning vs. VM provisioning?
  • 24. Design Consideration #1: Infrastructure PaaS • Cloud instance is pre-configured as game server. • Tools are at the granularity of game (#sessions, #items, …) • Might include push server, player mgmt tools, etc.
  • 25. Design Consideration #2: Game Server Core Networking • Message format (custom format vs. Protobuf/Thrift/JSON/…) • Operating layer (session layer vs. transport layer) • External integration (authentication, billing, …)
  • 26. Design Consideration #2: Game Server Core Database abstraction • Explicit database calling vs. transparent database handling
  • 27. Design Consideration #2: Game Server Core Library vs. Framework • Actively call into vs. Passively invoked.
  • 28. Design Consideration #2: Game Server Core Programming model • Procedural vs. Event-driven vs. Declarative vs. …
  • 29. Design Consideration #3: In-game Components Components implementing game features • Leaderboard, Chatting, Virtual currency, Matchmaking, AI • Genre-specific in-game components • … Components architecture must be extensible • Tightly-coupled vs. loosely-coupled • SDK approach vs. API approach
  • 30. Short Survey on Backend Solutions PlayerScale OpenKit Scoreoid Player.IO Google (App Engine / Compute Engine) In-game components Yes (leaderboards, chat, virtual currency, matchmaking) Yes (leaderboards) Yes (leaderboards, in- game notifications, achievements) Yes (lobby, chat) Yes (leaderboards, achievement) External integration Payment Authentication Authentication Authentication Payment Authentication Analytics tools Yes Yes Only for error logs Yes Cloud Storage Yes Yes Yes Yes Yes Player management Yes Yes Game server core Only for Flash Infra support other than cloud storage * Information gathered from official sites.
  • 31. Short introduction on my work Funapi • Game server framework. • Developers implement only game logic. Then, Funapi does the rest. Argus • PaaS cloud specialized in mobile games • Developers focus only on game server. Then, Argus does the rest.
  • 32. Lessons from designing a backend service Must be fool-proof • Not all game developers share the same skills set. • Do not blame game developers. • If they fail, double-check if fool-proof.
  • 33. Lessons from designing a backend service Must be out-of-the-box • Extremely tight time budget in game development. • Do not expect game developers to eagerly go thru learning curve. • If your backend service has high learning curve or requires extensive integration work, it is less likely to be adopted.
  • 34. Lessons from designing a backend service Think deployment scenario from the beginning • Extremely difficult to pull back once deployed. • Versioning should be in place from the beginning. • Package manager like Debian APT is worth referring to.