SlideShare a Scribd company logo
1 of 76
Download to read offline
01
02
03
End-to-End Solutions for Game Developers
COMMUNITY
CLIENT
COMMERCE
CLOUD
game services
Amazon Game Services (AGS)
싱글 플레이어 게임의 처리 과정
Inputs
Simulate
Render
Wait
States
events
timer
State State State
Time
Frame Per Second (FPS)  이 루프가 1초에 몇 번 도는가?
멀티 플레이어 게임
• 게임 로직 처리 및 상태 관리를 다른 컴퓨터에서 함
• 구조에 따른 분류
– P2P, Client-Server, Web-based, Hybrid
Inputs
Simulate
Render
Wait
States
my events
other hosts
over the network
멀티 플레이어 게임 타입
SessionPersistentAsynchronous
비동기형 (Asynchronous)
• 웹서비스 형태의 백엔드
• 2-tier: web servers + data store
• 3-tier: web front + app servers + data store
• 비용 효율화가 쉬움
• Spike load: Auto-scaling with Load Balancer
• 클라우드 환경에 아주 적합: AWS Spot instances 사용 가능
• (요즘 대세) 서버리스 형태로 구축 가능
• Serverless Architecture
웹 서비스 방식의 백엔드
• HTTPS를 이용한 보안성 확보가 쉬움
• 연결 유지가 필요 없어 접속이 불안정한 환경에서 유리
• 모바일 게임 및 소셜 게임 장르에 적합
• 부하 분산(웹서버 추가)이 용이하여 확장성이 높음
• Load-Balancer 사용
Client
LB Web Server
Browser
Web Server
Client
Browser
Web ServerHTTP
웹서비스 기반의 동기화 방식
Request/Response 구조
• 웹의 특징을 그대로 물려 받음
• Atomic, Stateless
• 플레이어간 순서 보장이 필요할 경우
• 사과를 친구가 먼저 수확한 경우 어떻게 처리?
• 주로 캐시서버나 DB에서 동기화
• 수동적: Server-initiated Action 어려움
• 몬스터의 선공과 같은 능동적 NPC 행동 불가
Web Client
Web Server
State State State
Response
Request
서버리스 형태의 백엔드 구축 가능 (AWS 예)
Client
Lambda
function
API
Gateway
DynamoDB
AWS IAM
S3
Cognito
Static Content
Download
Backend Logic Data Store
지속형 (Persistent)
• 게임 월드가 유지되는 형태
• 대표적으로 MMOG형 게임: MMORPG
• Scale-out 및 비용 절감이 쉽지 않음
• 지역 또는 채널 별로 서버를 나누고 플레이어가 서버 선택
• 상태 유지 (Stateful): 플레이어가 1명이어도 서버 유지 필요
• 성능 요구 사항
• 상태 저장 (CRUD) 및 게임내 거래(Transaction) 아주 빈번
• 고성능의 RDBMS 필요 (e.g. Amazon Aurora)
• 인접한 플레이어간 패킷 방송이 많음
• 고성능의 네트워크 인터페이스가 필요함
Client-Server 형태의 백엔드 구조
지속형 게임은 주로 CS 구조를 사용
• 클라이언트는 서버를 통한 간접 연결
• 중요 로직은 서버에서 처리함으로써 해킹으로부터 비교적 안전
• NPC를 서버가 능동적으로 활용(drive)할 수 있음
• 구현 및 유지 보수 비용이 비교적 높음
• MMOG와 같이 상태를 지속해야하는 게임에 적합
Client Client
Client Client
Server
Client-Server 방식의 처리 구조
서버가 게임 로직 처리(Simulate) 및 상태 관리
Simulate
States
Inputs
Render
Wait
eventsServer
state info
Client-Server 형태에서 주로 쓰는 동기화 방식
• 클라이언트에서 발생하는 이벤트는 서버에서 모두 모아
계산한 후 해당 클라이언트로 방송
자본주의(?) 동기화
• 서버가 먼저 진행  클라는 따라올테면 따라와봐  빠른
클라일수록 서버와의 격차가 가장 적음 (유리)
• 서버/클라간 시간차는 클라가 알아서 Dead Reckoning
Server
Client A
Client B
NPC
NPC
NPC
A
B
A
A
B
B
Event A
Event BNPC Event
서버 동기화 (Server-Authoritative)
클라가 늦게 받을수
록 튀는 현상 발생
클라우드 상에서의 일반적인 MMOG 아키텍처
Game Clients
1. Select a Realm
2. Connect to a Realm
Data
Server
Realm 3
Database
NPC, Chat, Physics,
…
World
Server
Aux
Svrs
Data
Server
Realm 1
Database
NPC, Chat, Physics,
…
World
Server
Aux
Svrs
Data
Server
Realm 2
Database
NPC, Chat, Physics,
…
World
Server
Aux
Svrs
Data
Server
Realm N
Database
NPC, Chat, Physics,
…
World
Server
Aux
Svrs
세션형 (Session-based) 게임
• 실시간 게임 중 가장 많은 형태
• 게임의 시작과 끝이 명확, 로비가 존재
• 주로 MOBA, FPS, RTS, Sports, …
• 연결 구조에 따라
• P2P: 클라이언트간 직접 연결
• Hosting: 플레이어 클라이언트 중 하나가 서버 역할
• Dedicated Server: 전용 서버로 Hosting
• 게임 장르별 주로 쓰는 동기화 방식
• 서버 동기화(Server-Authoritative): FPS, RPG, MOBA, Sports
• Lock-Step류: RTS, (AOS)
연결구조: Peer to Peer (P2P)
• Peer to Peer: 플레이어의 클라이언트간 직접 연결
• 빠른 반응성 및 저렴한 유지 비용이 장점
• 서버가 따로 없어도 친구끼리 게임을 할 수 있는…
• 확장성 및 해킹(cheating)에 취약: (예) Maphack, Helper, …
Player Player
Player Player
연결구조: Hosting
• P2P 구조에서 약간 변형된 형태
• 플레이어 클라이언트중 하나가 방장/호스트(Super-Peer) 역할
• 호스트(Super-Peer)를 통한 패킷 중계
• 실제 게임 로직 처리는 P2P 방식처럼 각자 하는 경우가 많음
• 성능이 좋은 클라이언트가 서버 역할을 하는 것이 좋음
Player (Host) Player
Player Player
연결구조: Dedicated Server
• 플레이어가 직접 호스팅하지 않음
• 게임회사의 데이터센터나 클라우드에서 (보이지 않는 플레이어가) 전용 서버를 돌리는 구조
• 렌더링을 하지 않는 클라이언트 프로그램이 서버 모드(headless)로 동작
• P2P/호스트 방식 게임을 온라인 게임 형태로 서비스 하기 위해서 변형된 형태
• NPC AI처리도 맡음
• 대부분의 세션형 온라인 게임에서 사용 (e.g. PUBG, LOL, Overwatch)
• (예) LOL의 경우 실제 10+1명이, 고오급시계의 경우 12+1명이 게임에 참여하는 형태
• 동기화 방식은 게임 성격에 따라 서버 동기화 또는 Lock-Step 계열을 사용
Dedicated
Server
Player Player
Player Player
참고: Lock-Step 형태의 동기화 방식
• 상대 Peer로부터 해당 라운드의 이벤트를 모아 각자처리
• 주로 RTS 및 과거의 AOS 장르에서 주로 사용
• 각각의 클라이언트는 모두 아래와 같은 형태의 Queue를 유지
• 공산주의(?) 동기화
• 다 함께 같이 간다  클라가 하나라도 멈추면 다 같이 기다린다
• 서버 동기화 방식과 다르게 특정 클라만 튀는 현상 없음
events eventsevents나
상대1
상대2
Round
0 ms 50 100 150
Round Round Round
events
events events
모든 Peer들의
입력이 모이면
해당 Round를
처리(Simulate)
하고 렌더링
특정 Peer의 정
보가 제시간에
도달하지 않으
면 Block
??
events
Dedicated Game Server
• 사실상 Client-Server 방식
• Lock-Step을 통한 동기화도 가능하지만 대부분의 경우 서버에서 로직을 돌리는 구조
• 중요 로직은 서버에서 처리함으로써 해킹으로부터 비교적 안전
• NPC를 서버가 능동적으로 활용(drive)할 수 있음
• 그럼, Dedicated Server 방식만의 장점은?
• 서버를 직접 구현하지 않고 클라이언트를 그대로 사용 (하나의 프로세스가 하나의 게임 세션 처리)
• 클라이언트의 지형, 애니메이션 및 물리 정보 그대로 사용
• 렌더링만 하지 않을 뿐, 클라이언트 엔진 레벨의 시뮬레이션이 가능!
• FPS 값이 (서버에서는 TickRate) 높을수록 더 정교한 시뮬레이션이 가능
Dedicated
Server
Player Player
Player Player
Game
Server
Client Client
Client Client
IMG FROM: http://imays.blog.me/221056158014
데디서버를 어떻게 만들수 있는가?
• 게임 엔진으로 만들 수 있음
• 일반적으로 클라이언트 게임 엔진 내에 포함된 복제 프레임워크 사용
• 일종의 네트워크 동기화 라이브러리이지만 데디 서버를 손쉽게 만들 수 있는 기능 제공
• 그러니까, 클라이언트를 그냥 게임 서버로 사용 가능하게…
• 복제 프레임워크 (Replication Framework)
• 특정 객체의 특정 멤버변수 상태 복제를 통한 상태 동기화
• 서버-클라이언트간 RPC를 통한 이벤트 동기화
• 상용 게임 엔진 예
• Lumberyard의 GridMate Replica Framework
• UE4의 Actor Replication
• Unity의 UNET HLAPI
Lumberyard GridMate
• 원격 복제를 지원하는 크로스플랫폼 네트워크 라이브러리
• 네트워크 상에서의 원격지 복제본(replicas) 지원
• 하나의 노드가 복제본을 소유하고 나머지 노드는 프록시(proxy)를 보는 구조
• 복제본은 데이터를 포함하고 RPC 수행 가능
• 특징
• 다양한 플랫폼 지원: Windows, Xbox One, PS4, Android and iOS
• 다양한 동기화 기능 제공: 변수 동기화, 변수 변경시 자동 콜백 호출, RPC, …
• 네트워크 테스트 및 시뮬레이션을 위한 RTT 변경, 패킷 손실 등의 다양한 기능 제공
Unreal Engine Dedicated Server
• UE4도 Dedicated Server를 쉽게 만들 수 있는 기능을 제공
• Dedicated Server Guide (Link)
• Actor Replication (Link)
Unity UNET
• Unity 5.1부터 도입된 네트워크 라이브러리 + 복제 프레임워크
• 방식1: High Level Scripting API (HLAPI)를 통한 객체의 상태 복제 지원
• NetworkManager를 통한 손쉬운 사용 (Host / Server / Client 모드)
• 손쉬운 네트워크 이벤트 주고 받기
• Commands (Client  Server)
• RPC (Server  Client)
• 방식2: Transport API를 통한 채널 단위의 Lower level의 통신 방식도 지원 (UDP 기반)
• 기존의 익숙한 방법: 채널을 만들고, 연결하고, 데이터를 주고 받고…
• NetworkTransport.*
UNET HLAPI Mode: Client, Server, Host
Player (Host) Player
Player Player
Player Authority
NPC Authority
UNET HLAPI 사용 방법
• Main Scene에서 Network Manager 콤포넌트 설정
• 주소 및 포트 번호, 플레이어 Prefab, Spawnable Prefabs 등
• 네트워크 동기화가 필요한 Entity에는 NetworkIdentity 콤포넌트 부착
• 자동으로 transform 동기화를 위해서는 Network Transform 콤포넌트 부착
• 스크립트는 NetworkBehaviour부터 상속받아 사용
• 멤버 변수에 대한 상태 복제 or 서버와 클라이언트간 함수 호출(RPC)
• 역할에 따라 Network Manager Start!
• StartHost(), StartServer(), StartClient()
• Quiz: 데디서버는 어떤 역할로 실행할까요?
상태 복제
• NetworkBehaviour로 부터 상속
• [SyncVar] attribute를 통한 멤버 변수 상태 동기화
• List의 경우 Built-in 타입 제공: SyncListString, SyncListFloat, SyncListInt, …
Command (Server RPC)
• 클라이언트(플레이어)가 데디서버에게 명령을 내리고 싶을 때
• [Command] attribute: 클라에서 호출하지만 서버에서 실행되는 함수 (함수명은 반드시 “Cmd”로 시작)
Client RPC
• 데디서버가 클라이언트에게 명령을 내리고 싶을 때
• [ClientRpc] attribute: 서버에서 호출하지만 클라이언트에서 실행되는 함수 (함수명은 “Rpc”로 시작)
Unity로 데디 서버 만들기 바로 시작!
• UNET을 사용한 초 간단 슈팅 게임 튜토리얼
• https://unity3d.com/kr/learn/tutorials/topics/multiplayer-networking
• 한번 따라 해보면 앞서 설명했던 개념이 한방에 잡힘!
• Unity Standalone Player를 Dedicated Server로 쓰는 경우
• (Quiz의 답) 코드상에서는 NetworkManager.StartServer() 호출하도록 수정
• EXE 실행시에는 반드시 –batchmode 옵션을 주기: headless 모드로 실행됨
DevOps 그리고 클라우드
• DevOps
• 요약하면 개발과 운영의 통합(이라고 쓰고 개발자가 운영까지하는 경우가…)
• 왜? 고객으로 부터의 피드백 반영 주기를 빠르게 하기 위함  혁신의 속도
• 재미를 확인하는 방법은 게이머들의 목소리를 듣고 수정하는 방법이 최선이기 때문
• 게임 서비스에 있어서 DevOps 개념은 김태현님의 NDC 2017 세션(Link)을 추천
• 클라우드 컴퓨팅은 DevOps를 위한 필수 도구
• 클라우드 시대가 되면서 인프라/시스템 엔지니어들이 해야 하는 부분을 게임 개발자들이 할 수
있게 됨  클라우드는 결국 게임 개발자에게 힘을 실어주는 도구
• Amazon GameLift
• 세션형 게임을 위한 최적화된 DevOps 환경을 제공
• 게임서비스에 특화된 AWS 클라우드 솔루션
IMG FROM: https://www.contegix.com/devops-part1-its-more-than-teams/
Amazon GameLift?
• 세션형 멀티플레이어 게임 서비스를 위한 DevOps 플랫폼
• AWS 클라우드 상에서 멀티 플레이어 게임 서버를 자동으
로 확장/축소
• 전세계적으로 low-latency 사용자 경험 제공
• 글로벌 플레이어를 대상으로 Matchmaking 지원
• DDoS 방어 메커니즘 지원
• 중단(downtime)없는 게임 서버 업데이트 지원
 인프라 레벨(서버 머신) 신경쓰지 말고 게임 서버 바이너리
만 제공하면 나머지는 알아서!
http://steamcharts.com/app/578080
요즘 스팀 1등 하는 게임: 일주일간 동접 그래프
일반적인 주간 서버 사용량 그래프서버사용량
시간
서버 확충 실패서버사용량
시간
확보된 서버가 커버하는 부분
게임 못하는 플레이어들
(대기열 발생만큼의 수익 감소)
너무 많은 서버 선투자 비용서버사용량
시간
미리 확보한 서버가 커버
낭비되는 비용
GameLift의 탄력적 스케일링서버사용량
시간
Wasted $
Auto-scaling을 통한
비용 최적화가 가능
Fleet?
데디서버가
배포된 상태
플레이어가
접속하는 대상
플릿
다수의 EC2
인스턴스
게임 세션 1
Player slot 1
Player slot 2
Player slot 3
Player slot 4
Active
Active
게임 세션 2
Player slot 1
Player slot 2
Player slot 3
Player slot 4
Active
Active
Active
Active
게임 세션 N
Player slot 1
Player slot 2
Player slot 3
Player slot 4
Reserved
서버 프로세스 서버 프로세스 서버 프로세스
EC2 Instance EC2 Instance EC2 Instance
Build
개발자 Players
게임 세션 관리
FLEET
GameLift 사용법
데디서버
빌드 업로드
플릿 설정
및 생성
Scale 정책
설정
클라접속
Play
1 2 3 4
데디 서버 바이너리 (빌드) 업로드
• 게임 서버 실행 파일 및 부속 폴더를 한군데 모아두고
• AWS CLI를 사용하여 GameLift에 업로드
aws gamelift upload-build --name <빌드이름> --build-root <폴더> --operating-system
<WINDOW_2012 또는 AMAZON_LINUX> --region <리전>
플릿 설정
• EC2 인스턴스 타입 지정
• 실행 파일 이름, 명령 파라미터, 프로세스 수 지정
• 열어둘 포트, 프로토콜 종류, 허용 IP 대역 지정
• Auto-Scaling 정책 설정
• 상태변경 순서: Downloading  Validating  Activating  Active
• Active 상태가 되면 클라이언트로 부터 접속을 받을 수 있음
GameLift SDK 연동 (DEV)
• GameLift Server SDK
• C++ 및 C# 지원
• Unreal Engine 및 Unity 전용 플러그인 제공
• Lumberyard의 경우 이미 포함되어 있음
• Windows Server 및 Amazon Linux에서 운용 가능
• GameLift Client SDK
• AWS SDK를 그대로 사용하면 됨 (10종 이상의 프로그래밍 언어 지원)
• 게임 클라이언트에 직접 통합하기보다 주로 Matchmaking 서버 같은 게임 백엔드와 통합
GameLift를 통한 운영 (OPS)
• Web기반의 UI를 통한 운영
• API로도 제어 가능
• 각종 성능 지표 모니터링
• 스케일링 상황 모니터링
• 게임 서버에서 발생하는 이벤트 확인
• 게임 세션 및 플레이어 세션 정보 확인
• 매치메이킹 정보 및 분석 도구 제공
• ALIAS 기능을 통한 무중단 배포 가능
스케일링 상태 시각화
게임 세션 및 플레이어 세션 상태 확인
매치메이킹 기능 제공 (FlexMatch)
• FlexMatch
• 범용적으로 커스터마이징 가능한 매치메이킹 시스템
– https://aws.amazon.com/blogs/gamedev/matchmaking-your-way-amazon-gamelift-flexmatc
h-and-game-session-queues/
– http://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html
• 규칙(Rules) 기반
• 다양한 조건을 쿼리의 형태로 주면, 그 쿼리 결과에 맞는 플레이어들을 매칭
• 플레이어 숙련도, ELO 점수 등등
• 매칭이 성사되면 자동으로 GameLift 플릿상에 게임 세션을 생성
• 추가 비용 없음
• 공짜
매치메이킹 데이터 분석
AWS 글로벌 인프라 활용
US West (Oregon)
Japan
Ireland
US East (Virginia)
Brazil
Germany
India
Singapore
Korea
글로벌 지연 최적화 매치메이킹
Match
Player 1
Ping
Times
Player X
Ping
Times
…
GameLift
US West (Oregon)
EU Central (Frankfurt)
South America East (São Paulo)
Asia Pacific (Seoul)
사용방법: https://aws.amazon.com/ko/blogs/korea/amazon-gamelift-global-matchmaking-queue-for-low-latency-game-players/
GameLift Future
SOCIAL
Player Profiles
Friends
Engagement
Player Privacy
Search
Player Presence
AUTH
Identity
Skill & Rank
Session Management
Matchmaking
MULTIPLAYER
Parties
Notifications
Rank
COMMUNICATION
Text Chat
Voice Chat
P L A Y E R
A N A L Y T I C S
D E P L O Y M E N T
Ingestion
Release
Packaging
R E M O T E C O N F I G
A / B T E S T I N G
W E B S I T E S
C S T O O L S
C O M M E R C E
Wallet
Item Catalog
Virtual Currencies
In-App Purchase
Reputation
Auto-scaling
Authentication
Authorization
GAMELIFT
SERVER HOSTING
현재 기능
추가될 기능
바로 시작 하기
• 무료로 테스트 해 볼 수 있음
• c3.large 인스턴스 타입으로 125시간 무료
• https://console.aws.amazon.com/gamelift/
• 빠르게 테스트해볼 수 있는 샘플 게임 제공
• Amazon GameLift의 Sample Game 항목
• 물리 기반의 8인용 축구 게임
• GameLift 코드 레벨 사용법 및 데모
• 더미 플레이어 테스트용
• https://github.com/zeliard/GameLift
• Full-Stack 게임 샘플 (실제 세션형 게임 서비스와 기술적/기능적으로 동일)
• https://github.com/awslabs/aws-gamelift-sample
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지

More Related Content

What's hot

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
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Esun Kim
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019devCAT Studio, NEXON
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델Seungmo Koo
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다Lee Dustin
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리강 민우
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012devCAT Studio, NEXON
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자TonyCms
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 

What's hot (20)

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
 
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
Akka.NET 으로 만드는 온라인 게임 서버 (NDC2016)
 
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
이무림, Enum의 Boxing을 어찌할꼬? 편리하고 성능좋게 Enum 사용하기, NDC2019
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다레퍼런스만 알면 언리얼 엔진이 제대로 보인다
레퍼런스만 알면 언리얼 엔진이 제대로 보인다
 
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
[IGC 2017] 블루홀 최준혁 - '플레이어언노운스 배틀그라운드' DEV 스토리
 
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
조정훈, 게임 프로그래머를 위한 클래스 설계, NDC2012
 
GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자GameInstance에 대해서 알아보자
GameInstance에 대해서 알아보자
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 

Similar to [IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지

AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버ByungChun2
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021Amazon Web Services Korea
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기YEONG-CHEON YOU
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들Hyunjik Bae
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)Seungmo Koo
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다Dae Kim
 
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3 AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3 Amazon Web Services Korea
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hostingiFunFactory Inc.
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현iFunFactory Inc.
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트Amazon Web Services Korea
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Amazon Web Services Korea
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...Amazon Web Services Korea
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 

Similar to [IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지 (20)

AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
게임 디자이너와 게임 서버
게임 디자이너와 게임 서버게임 디자이너와 게임 서버
게임 디자이너와 게임 서버
 
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
AWS를 활용해서 글로벌 게임 런칭하기 - 박진성 AWS 솔루션즈 아키텍트 :: AWS Summit Seoul 2021
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
사설 서버를 막는 방법들 (프리섭, 더이상은 Naver)
 
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
클라우드 기반 Unity 게임 서버 구축, 60분이면 충분하다
 
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3 AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
AWS로 게임 기반 다지기 - 김병수, 박진성 :: AWS Game Master 온라인 세미나 #3
 
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting게임서버 구축 방법비교 : GBaaS vs. Self-hosting
게임서버 구축 방법비교 : GBaaS vs. Self-hosting
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현2016 NDC  - 클라우드 시대의  모바일 게임 운영 플랫폼 구현
2016 NDC - 클라우드 시대의 모바일 게임 운영 플랫폼 구현
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
게임 서비스 품질 향상을 위한 데이터 분석 활용하기 - 김필중 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
게임사를 위한 Amazon GameLift 세션 - 이정훈, AWS 솔루션즈 아키텍트
 
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
Photon게임서버 네트워크엔진과 GBaaS를 통한 AWS DB 서비스 구성 방법 소개 - AWS Summit Seoul 2017
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
아마존의 관리형 게임 플랫폼 활용하기: GameLift (Deep Dive) :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS ...
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 

More from 강 민우

[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기강 민우
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들강 민우
 
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기강 민우
 
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마강 민우
 
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기강 민우
 
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다강 민우
 
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데강 민우
 
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원강 민우
 
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가강 민우
 
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점강 민우
 
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인강 민우
 
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법강 민우
 
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법강 민우
 
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가강 민우
 
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다강 민우
 
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성강 민우
 
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유강 민우
 
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나강 민우
 
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니강 민우
 
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소강 민우
 

More from 강 민우 (20)

[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
[IGC2018] 엔씨소프트 이경종 - 심층강화학습을 활용한 프로게이머 수준의 AI 만들기
 
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
[IGC2018] 청강대 이득우 - 언리얼에디터확장을위해알아야할것들
 
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
[IGC2018] SUB 윤민 - 나만의 사운드—제작하고 연출하기
 
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
[IGC2018] 이락디지털문화연구소 남기덕 - 게임 디자인의 시작, 테마
 
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
[IGC2018] 왓스튜디오 방영훈 - 놀면서공부하기
 
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
[IGC2018] 넷마블 이상철 - 모바일 게임 보안 AR(Android Republic) 변조앱 내부를 파헤치다
 
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
[IGC2018] TeamHoray 문지환 - 던그리드, 이랬으면 더 좋았을 텐데
 
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
[IGC2018] 에픽게임즈 신광섭 - 언리얼엔진4 포트나이트 멀티플랫폼 개발 지원
 
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
[IGC2018] 잔디소프트 윤세민 - HTML5 게임 어디까지 가능한가
 
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
[IGC2018] 해피툭 김봉균 - 대만 게임 시장 진출시 유의해야 할 점
 
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
[IGC2018] 캡콤 토쿠다 유야 - 몬스터헌터 월드의 게임 컨셉과 레벨 디자인
 
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과  세계를 만드는 법
[IGC2018] 산타모니카스튜디오 에이브 타라키 - 게임의 컨셉 디자인과 세계를 만드는 법
 
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
[IGC2018] 펄어비스 강건우 - 펄어비스에서 기획자가 일하는 방법
 
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
[IGC2018] 스튜디오EIM 정사인 - 좋은 소리는 무엇인가
 
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
[IGC2018] 유유자적라이프 김윤정 - SunShine 베를린을 밝게 비추다
 
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
[IGC2018] 자라나는 씨앗 김효택 - MazM 시리즈로 바라본 스토리 게임의 가능성
 
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유 [IGC2018] 인플루전 곽노진 -  인디게임이 망할 수 밖에 없는 현실과 이유
[IGC2018] 인플루전 곽노진 - 인디게임이 망할 수 밖에 없는 현실과 이유
 
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나[IGC2018] 라운드8 박성준 - 블레스 언리쉬드  우리는 왜 모든것을 재설계했나
[IGC2018] 라운드8 박성준 - 블레스 언리쉬드 우리는 왜 모든것을 재설계했나
 
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
[IGC2018] 아이봉 정봉재 - 아직 아이 망하니
 
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
[IGC2018] 퍼니파우 최재영 - 감성을 위한 개발요소
 

Recently uploaded

JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP Korea
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP Korea
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석JMP Korea
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP Korea
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP Korea
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?Jay Park
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법JMP Korea
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화JMP Korea
 

Recently uploaded (8)

JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 

[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지

  • 1.
  • 3.
  • 4. End-to-End Solutions for Game Developers COMMUNITY CLIENT COMMERCE CLOUD game services Amazon Game Services (AGS)
  • 5.
  • 6. 싱글 플레이어 게임의 처리 과정 Inputs Simulate Render Wait States events timer State State State Time Frame Per Second (FPS)  이 루프가 1초에 몇 번 도는가?
  • 7. 멀티 플레이어 게임 • 게임 로직 처리 및 상태 관리를 다른 컴퓨터에서 함 • 구조에 따른 분류 – P2P, Client-Server, Web-based, Hybrid Inputs Simulate Render Wait States my events other hosts over the network
  • 8. 멀티 플레이어 게임 타입 SessionPersistentAsynchronous
  • 9.
  • 10. 비동기형 (Asynchronous) • 웹서비스 형태의 백엔드 • 2-tier: web servers + data store • 3-tier: web front + app servers + data store • 비용 효율화가 쉬움 • Spike load: Auto-scaling with Load Balancer • 클라우드 환경에 아주 적합: AWS Spot instances 사용 가능 • (요즘 대세) 서버리스 형태로 구축 가능 • Serverless Architecture
  • 11. 웹 서비스 방식의 백엔드 • HTTPS를 이용한 보안성 확보가 쉬움 • 연결 유지가 필요 없어 접속이 불안정한 환경에서 유리 • 모바일 게임 및 소셜 게임 장르에 적합 • 부하 분산(웹서버 추가)이 용이하여 확장성이 높음 • Load-Balancer 사용 Client LB Web Server Browser Web Server Client Browser Web ServerHTTP
  • 12. 웹서비스 기반의 동기화 방식 Request/Response 구조 • 웹의 특징을 그대로 물려 받음 • Atomic, Stateless • 플레이어간 순서 보장이 필요할 경우 • 사과를 친구가 먼저 수확한 경우 어떻게 처리? • 주로 캐시서버나 DB에서 동기화 • 수동적: Server-initiated Action 어려움 • 몬스터의 선공과 같은 능동적 NPC 행동 불가 Web Client Web Server State State State Response Request
  • 13. 서버리스 형태의 백엔드 구축 가능 (AWS 예) Client Lambda function API Gateway DynamoDB AWS IAM S3 Cognito Static Content Download Backend Logic Data Store
  • 14.
  • 15. 지속형 (Persistent) • 게임 월드가 유지되는 형태 • 대표적으로 MMOG형 게임: MMORPG • Scale-out 및 비용 절감이 쉽지 않음 • 지역 또는 채널 별로 서버를 나누고 플레이어가 서버 선택 • 상태 유지 (Stateful): 플레이어가 1명이어도 서버 유지 필요 • 성능 요구 사항 • 상태 저장 (CRUD) 및 게임내 거래(Transaction) 아주 빈번 • 고성능의 RDBMS 필요 (e.g. Amazon Aurora) • 인접한 플레이어간 패킷 방송이 많음 • 고성능의 네트워크 인터페이스가 필요함
  • 16. Client-Server 형태의 백엔드 구조 지속형 게임은 주로 CS 구조를 사용 • 클라이언트는 서버를 통한 간접 연결 • 중요 로직은 서버에서 처리함으로써 해킹으로부터 비교적 안전 • NPC를 서버가 능동적으로 활용(drive)할 수 있음 • 구현 및 유지 보수 비용이 비교적 높음 • MMOG와 같이 상태를 지속해야하는 게임에 적합 Client Client Client Client Server
  • 17. Client-Server 방식의 처리 구조 서버가 게임 로직 처리(Simulate) 및 상태 관리 Simulate States Inputs Render Wait eventsServer state info
  • 18. Client-Server 형태에서 주로 쓰는 동기화 방식 • 클라이언트에서 발생하는 이벤트는 서버에서 모두 모아 계산한 후 해당 클라이언트로 방송 자본주의(?) 동기화 • 서버가 먼저 진행  클라는 따라올테면 따라와봐  빠른 클라일수록 서버와의 격차가 가장 적음 (유리) • 서버/클라간 시간차는 클라가 알아서 Dead Reckoning Server Client A Client B NPC NPC NPC A B A A B B Event A Event BNPC Event 서버 동기화 (Server-Authoritative) 클라가 늦게 받을수 록 튀는 현상 발생
  • 19. 클라우드 상에서의 일반적인 MMOG 아키텍처 Game Clients 1. Select a Realm 2. Connect to a Realm Data Server Realm 3 Database NPC, Chat, Physics, … World Server Aux Svrs Data Server Realm 1 Database NPC, Chat, Physics, … World Server Aux Svrs Data Server Realm 2 Database NPC, Chat, Physics, … World Server Aux Svrs Data Server Realm N Database NPC, Chat, Physics, … World Server Aux Svrs
  • 20.
  • 21. 세션형 (Session-based) 게임 • 실시간 게임 중 가장 많은 형태 • 게임의 시작과 끝이 명확, 로비가 존재 • 주로 MOBA, FPS, RTS, Sports, … • 연결 구조에 따라 • P2P: 클라이언트간 직접 연결 • Hosting: 플레이어 클라이언트 중 하나가 서버 역할 • Dedicated Server: 전용 서버로 Hosting • 게임 장르별 주로 쓰는 동기화 방식 • 서버 동기화(Server-Authoritative): FPS, RPG, MOBA, Sports • Lock-Step류: RTS, (AOS)
  • 22. 연결구조: Peer to Peer (P2P) • Peer to Peer: 플레이어의 클라이언트간 직접 연결 • 빠른 반응성 및 저렴한 유지 비용이 장점 • 서버가 따로 없어도 친구끼리 게임을 할 수 있는… • 확장성 및 해킹(cheating)에 취약: (예) Maphack, Helper, … Player Player Player Player
  • 23. 연결구조: Hosting • P2P 구조에서 약간 변형된 형태 • 플레이어 클라이언트중 하나가 방장/호스트(Super-Peer) 역할 • 호스트(Super-Peer)를 통한 패킷 중계 • 실제 게임 로직 처리는 P2P 방식처럼 각자 하는 경우가 많음 • 성능이 좋은 클라이언트가 서버 역할을 하는 것이 좋음 Player (Host) Player Player Player
  • 24. 연결구조: Dedicated Server • 플레이어가 직접 호스팅하지 않음 • 게임회사의 데이터센터나 클라우드에서 (보이지 않는 플레이어가) 전용 서버를 돌리는 구조 • 렌더링을 하지 않는 클라이언트 프로그램이 서버 모드(headless)로 동작 • P2P/호스트 방식 게임을 온라인 게임 형태로 서비스 하기 위해서 변형된 형태 • NPC AI처리도 맡음 • 대부분의 세션형 온라인 게임에서 사용 (e.g. PUBG, LOL, Overwatch) • (예) LOL의 경우 실제 10+1명이, 고오급시계의 경우 12+1명이 게임에 참여하는 형태 • 동기화 방식은 게임 성격에 따라 서버 동기화 또는 Lock-Step 계열을 사용 Dedicated Server Player Player Player Player
  • 25. 참고: Lock-Step 형태의 동기화 방식 • 상대 Peer로부터 해당 라운드의 이벤트를 모아 각자처리 • 주로 RTS 및 과거의 AOS 장르에서 주로 사용 • 각각의 클라이언트는 모두 아래와 같은 형태의 Queue를 유지 • 공산주의(?) 동기화 • 다 함께 같이 간다  클라가 하나라도 멈추면 다 같이 기다린다 • 서버 동기화 방식과 다르게 특정 클라만 튀는 현상 없음 events eventsevents나 상대1 상대2 Round 0 ms 50 100 150 Round Round Round events events events 모든 Peer들의 입력이 모이면 해당 Round를 처리(Simulate) 하고 렌더링 특정 Peer의 정 보가 제시간에 도달하지 않으 면 Block ?? events
  • 26.
  • 27.
  • 28. Dedicated Game Server • 사실상 Client-Server 방식 • Lock-Step을 통한 동기화도 가능하지만 대부분의 경우 서버에서 로직을 돌리는 구조 • 중요 로직은 서버에서 처리함으로써 해킹으로부터 비교적 안전 • NPC를 서버가 능동적으로 활용(drive)할 수 있음 • 그럼, Dedicated Server 방식만의 장점은? • 서버를 직접 구현하지 않고 클라이언트를 그대로 사용 (하나의 프로세스가 하나의 게임 세션 처리) • 클라이언트의 지형, 애니메이션 및 물리 정보 그대로 사용 • 렌더링만 하지 않을 뿐, 클라이언트 엔진 레벨의 시뮬레이션이 가능! • FPS 값이 (서버에서는 TickRate) 높을수록 더 정교한 시뮬레이션이 가능 Dedicated Server Player Player Player Player Game Server Client Client Client Client
  • 30. 데디서버를 어떻게 만들수 있는가? • 게임 엔진으로 만들 수 있음 • 일반적으로 클라이언트 게임 엔진 내에 포함된 복제 프레임워크 사용 • 일종의 네트워크 동기화 라이브러리이지만 데디 서버를 손쉽게 만들 수 있는 기능 제공 • 그러니까, 클라이언트를 그냥 게임 서버로 사용 가능하게… • 복제 프레임워크 (Replication Framework) • 특정 객체의 특정 멤버변수 상태 복제를 통한 상태 동기화 • 서버-클라이언트간 RPC를 통한 이벤트 동기화 • 상용 게임 엔진 예 • Lumberyard의 GridMate Replica Framework • UE4의 Actor Replication • Unity의 UNET HLAPI
  • 31. Lumberyard GridMate • 원격 복제를 지원하는 크로스플랫폼 네트워크 라이브러리 • 네트워크 상에서의 원격지 복제본(replicas) 지원 • 하나의 노드가 복제본을 소유하고 나머지 노드는 프록시(proxy)를 보는 구조 • 복제본은 데이터를 포함하고 RPC 수행 가능 • 특징 • 다양한 플랫폼 지원: Windows, Xbox One, PS4, Android and iOS • 다양한 동기화 기능 제공: 변수 동기화, 변수 변경시 자동 콜백 호출, RPC, … • 네트워크 테스트 및 시뮬레이션을 위한 RTT 변경, 패킷 손실 등의 다양한 기능 제공
  • 32. Unreal Engine Dedicated Server • UE4도 Dedicated Server를 쉽게 만들 수 있는 기능을 제공 • Dedicated Server Guide (Link) • Actor Replication (Link)
  • 33. Unity UNET • Unity 5.1부터 도입된 네트워크 라이브러리 + 복제 프레임워크 • 방식1: High Level Scripting API (HLAPI)를 통한 객체의 상태 복제 지원 • NetworkManager를 통한 손쉬운 사용 (Host / Server / Client 모드) • 손쉬운 네트워크 이벤트 주고 받기 • Commands (Client  Server) • RPC (Server  Client) • 방식2: Transport API를 통한 채널 단위의 Lower level의 통신 방식도 지원 (UDP 기반) • 기존의 익숙한 방법: 채널을 만들고, 연결하고, 데이터를 주고 받고… • NetworkTransport.*
  • 34. UNET HLAPI Mode: Client, Server, Host Player (Host) Player Player Player
  • 37. UNET HLAPI 사용 방법 • Main Scene에서 Network Manager 콤포넌트 설정 • 주소 및 포트 번호, 플레이어 Prefab, Spawnable Prefabs 등 • 네트워크 동기화가 필요한 Entity에는 NetworkIdentity 콤포넌트 부착 • 자동으로 transform 동기화를 위해서는 Network Transform 콤포넌트 부착 • 스크립트는 NetworkBehaviour부터 상속받아 사용 • 멤버 변수에 대한 상태 복제 or 서버와 클라이언트간 함수 호출(RPC) • 역할에 따라 Network Manager Start! • StartHost(), StartServer(), StartClient() • Quiz: 데디서버는 어떤 역할로 실행할까요?
  • 38.
  • 39. 상태 복제 • NetworkBehaviour로 부터 상속 • [SyncVar] attribute를 통한 멤버 변수 상태 동기화 • List의 경우 Built-in 타입 제공: SyncListString, SyncListFloat, SyncListInt, …
  • 40. Command (Server RPC) • 클라이언트(플레이어)가 데디서버에게 명령을 내리고 싶을 때 • [Command] attribute: 클라에서 호출하지만 서버에서 실행되는 함수 (함수명은 반드시 “Cmd”로 시작)
  • 41. Client RPC • 데디서버가 클라이언트에게 명령을 내리고 싶을 때 • [ClientRpc] attribute: 서버에서 호출하지만 클라이언트에서 실행되는 함수 (함수명은 “Rpc”로 시작)
  • 42.
  • 43. Unity로 데디 서버 만들기 바로 시작! • UNET을 사용한 초 간단 슈팅 게임 튜토리얼 • https://unity3d.com/kr/learn/tutorials/topics/multiplayer-networking • 한번 따라 해보면 앞서 설명했던 개념이 한방에 잡힘! • Unity Standalone Player를 Dedicated Server로 쓰는 경우 • (Quiz의 답) 코드상에서는 NetworkManager.StartServer() 호출하도록 수정 • EXE 실행시에는 반드시 –batchmode 옵션을 주기: headless 모드로 실행됨
  • 44.
  • 45. DevOps 그리고 클라우드 • DevOps • 요약하면 개발과 운영의 통합(이라고 쓰고 개발자가 운영까지하는 경우가…) • 왜? 고객으로 부터의 피드백 반영 주기를 빠르게 하기 위함  혁신의 속도 • 재미를 확인하는 방법은 게이머들의 목소리를 듣고 수정하는 방법이 최선이기 때문 • 게임 서비스에 있어서 DevOps 개념은 김태현님의 NDC 2017 세션(Link)을 추천 • 클라우드 컴퓨팅은 DevOps를 위한 필수 도구 • 클라우드 시대가 되면서 인프라/시스템 엔지니어들이 해야 하는 부분을 게임 개발자들이 할 수 있게 됨  클라우드는 결국 게임 개발자에게 힘을 실어주는 도구 • Amazon GameLift • 세션형 게임을 위한 최적화된 DevOps 환경을 제공 • 게임서비스에 특화된 AWS 클라우드 솔루션 IMG FROM: https://www.contegix.com/devops-part1-its-more-than-teams/
  • 46. Amazon GameLift? • 세션형 멀티플레이어 게임 서비스를 위한 DevOps 플랫폼 • AWS 클라우드 상에서 멀티 플레이어 게임 서버를 자동으 로 확장/축소 • 전세계적으로 low-latency 사용자 경험 제공 • 글로벌 플레이어를 대상으로 Matchmaking 지원 • DDoS 방어 메커니즘 지원 • 중단(downtime)없는 게임 서버 업데이트 지원  인프라 레벨(서버 머신) 신경쓰지 말고 게임 서버 바이너리 만 제공하면 나머지는 알아서!
  • 47. http://steamcharts.com/app/578080 요즘 스팀 1등 하는 게임: 일주일간 동접 그래프
  • 48. 일반적인 주간 서버 사용량 그래프서버사용량 시간
  • 49. 서버 확충 실패서버사용량 시간 확보된 서버가 커버하는 부분 게임 못하는 플레이어들 (대기열 발생만큼의 수익 감소)
  • 50. 너무 많은 서버 선투자 비용서버사용량 시간 미리 확보한 서버가 커버 낭비되는 비용
  • 51. GameLift의 탄력적 스케일링서버사용량 시간 Wasted $ Auto-scaling을 통한 비용 최적화가 가능
  • 53. 게임 세션 1 Player slot 1 Player slot 2 Player slot 3 Player slot 4 Active Active 게임 세션 2 Player slot 1 Player slot 2 Player slot 3 Player slot 4 Active Active Active Active 게임 세션 N Player slot 1 Player slot 2 Player slot 3 Player slot 4 Reserved 서버 프로세스 서버 프로세스 서버 프로세스 EC2 Instance EC2 Instance EC2 Instance Build 개발자 Players 게임 세션 관리 FLEET
  • 54. GameLift 사용법 데디서버 빌드 업로드 플릿 설정 및 생성 Scale 정책 설정 클라접속 Play 1 2 3 4
  • 55. 데디 서버 바이너리 (빌드) 업로드 • 게임 서버 실행 파일 및 부속 폴더를 한군데 모아두고 • AWS CLI를 사용하여 GameLift에 업로드 aws gamelift upload-build --name <빌드이름> --build-root <폴더> --operating-system <WINDOW_2012 또는 AMAZON_LINUX> --region <리전>
  • 56. 플릿 설정 • EC2 인스턴스 타입 지정 • 실행 파일 이름, 명령 파라미터, 프로세스 수 지정 • 열어둘 포트, 프로토콜 종류, 허용 IP 대역 지정 • Auto-Scaling 정책 설정
  • 57.
  • 58.
  • 59. • 상태변경 순서: Downloading  Validating  Activating  Active • Active 상태가 되면 클라이언트로 부터 접속을 받을 수 있음
  • 60. GameLift SDK 연동 (DEV) • GameLift Server SDK • C++ 및 C# 지원 • Unreal Engine 및 Unity 전용 플러그인 제공 • Lumberyard의 경우 이미 포함되어 있음 • Windows Server 및 Amazon Linux에서 운용 가능 • GameLift Client SDK • AWS SDK를 그대로 사용하면 됨 (10종 이상의 프로그래밍 언어 지원) • 게임 클라이언트에 직접 통합하기보다 주로 Matchmaking 서버 같은 게임 백엔드와 통합
  • 61.
  • 62.
  • 63.
  • 64.
  • 65. GameLift를 통한 운영 (OPS) • Web기반의 UI를 통한 운영 • API로도 제어 가능 • 각종 성능 지표 모니터링 • 스케일링 상황 모니터링 • 게임 서버에서 발생하는 이벤트 확인 • 게임 세션 및 플레이어 세션 정보 확인 • 매치메이킹 정보 및 분석 도구 제공 • ALIAS 기능을 통한 무중단 배포 가능
  • 67. 게임 세션 및 플레이어 세션 상태 확인
  • 68. 매치메이킹 기능 제공 (FlexMatch) • FlexMatch • 범용적으로 커스터마이징 가능한 매치메이킹 시스템 – https://aws.amazon.com/blogs/gamedev/matchmaking-your-way-amazon-gamelift-flexmatc h-and-game-session-queues/ – http://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-match.html • 규칙(Rules) 기반 • 다양한 조건을 쿼리의 형태로 주면, 그 쿼리 결과에 맞는 플레이어들을 매칭 • 플레이어 숙련도, ELO 점수 등등 • 매칭이 성사되면 자동으로 GameLift 플릿상에 게임 세션을 생성 • 추가 비용 없음 • 공짜
  • 70. AWS 글로벌 인프라 활용 US West (Oregon) Japan Ireland US East (Virginia) Brazil Germany India Singapore Korea
  • 71. 글로벌 지연 최적화 매치메이킹 Match Player 1 Ping Times Player X Ping Times … GameLift US West (Oregon) EU Central (Frankfurt) South America East (São Paulo) Asia Pacific (Seoul) 사용방법: https://aws.amazon.com/ko/blogs/korea/amazon-gamelift-global-matchmaking-queue-for-low-latency-game-players/
  • 72. GameLift Future SOCIAL Player Profiles Friends Engagement Player Privacy Search Player Presence AUTH Identity Skill & Rank Session Management Matchmaking MULTIPLAYER Parties Notifications Rank COMMUNICATION Text Chat Voice Chat P L A Y E R A N A L Y T I C S D E P L O Y M E N T Ingestion Release Packaging R E M O T E C O N F I G A / B T E S T I N G W E B S I T E S C S T O O L S C O M M E R C E Wallet Item Catalog Virtual Currencies In-App Purchase Reputation Auto-scaling Authentication Authorization GAMELIFT SERVER HOSTING 현재 기능 추가될 기능
  • 73. 바로 시작 하기 • 무료로 테스트 해 볼 수 있음 • c3.large 인스턴스 타입으로 125시간 무료 • https://console.aws.amazon.com/gamelift/ • 빠르게 테스트해볼 수 있는 샘플 게임 제공 • Amazon GameLift의 Sample Game 항목 • 물리 기반의 8인용 축구 게임 • GameLift 코드 레벨 사용법 및 데모 • 더미 플레이어 테스트용 • https://github.com/zeliard/GameLift • Full-Stack 게임 샘플 (실제 세션형 게임 서비스와 기술적/기능적으로 동일) • https://github.com/awslabs/aws-gamelift-sample