스마트폰 온라인 게임에서 고려해야 할 것들

Hyunjik Bae
Hyunjik BaeCEO at Nettention
스마트폰 온라인 게임에서 
고려해야 할 것들 
넷텐션 
배현직
대표적 이슈들 
• 폰 하드웨어 
• 무선 네트워크 
• 멀티플랫폼 
• 서버의 역할 
• 클라우드 서버
모바일 
• 게임 출시 경험이 몇차례 있는 모바일 게 
임 업체들은, 생각보다 성능에 목숨거는 
분위기 
• 어머님,아버님은 폰 안바꿈 
• 카톡만 되면 됨
처리 성능 
• 10년전 데스크탑 성능 
• 그러나 더 악조건
• iPhone 4S의 전체 메모리는 512MB 
• 그 중에서 실제 사용가능한 프로세스 메 
모리는? 
• iOS 7  50~200MB 
• iPhone 5S에서 iOS 8 업그레이드 후 잔여 공 
간이 700에서 500MB로 하락! 
• 메모리 모자라면 PC는? 한편 모바일은?
• 60Hz만 충족시킨다고 ok? 배터리는? 
• 하이엔드 경험을 위해 60Hz 강행 
• 배터리 아끼기 위해 15Hz로 다운 
• 멀티스레드 싫어함 & 소켓 버퍼 커야
네트워크의 고약한 점 
• 긴 하위호환성의 문제 
• 사람 피를 완전히 바꾸는 것만큼 어려움 
• 유선 네트워크보다 무선 네트워크가 물리학상으로도 훨씬 더 
불안정
3G 
• RTT 50~100ms 
• 위치 이동 안해도 20%까지 패킷로스 증가
3G 
• 에이…LTE 나온지가 벌써 3년 지났어요! 
78.4 
21.6 
3G 
LTE 
2013년 조사 결과
Wifi 자체가 일으키는 패킷 드랍과 딜레 
이
UDP의 레이턴시 vs. TCP의 레이턴시
TCP on packet drop 
• 무선 통신의 높은 레이턴시와 패킷 드 
랍율 
• TCP는 쉽게 retransmission 랙이 발생 
함 
• 결론: UDP 꼭 쓰세요 
20~200ms 20% 
20~200ms (80%) 
520~720ms (20%)
UDP only면 충분? 
• 기업 방화벽 
• 일부 wifi AP 
• 일부 3G/LTE 기지국 
• 결론: TCP를 꼭 혼용하세요 (프라우드넷은 옛날부터 이미 ㅋ)
UDP vs. traffic conservation 
• 무선 통신량  패킷 드랍율 
• 전파 혼잡  패킷 드랍율 
• 결국 한번 보낼 때 적게 패킷 보내야 
• 결론: UDP 패킷을 필요한 것들은 합쳐 
보내세요 
• 그렇다고 너무 합치면 합침 대기 간격 
(coalesce interval) 자체가 랙이 됨 
• RTO에 비례해서 잡아야 (아니면 프라우드넷을… ㅋㅋ)
모바일에서 P2P 
• 프라우드넷은 선 홀펀칭 후 릴레이 방식  게임 개발자는 그냥 
항상 홀펀칭 된다는 가정하에 코딩 
• 홀펀칭 대기 시간이 없어 개발은 편하지만, 
안타깝게도 양쪽 다 LTE인 경우 홀펀칭 안됨  
• 하나 이상이 wifi이면 85(국외)~95%(국내)지만
• 3G/LTE vs. Wifi 
• 게임 하다가 wifi존에서 나간 경우 
• 게임 하다가 wifi존에 도착한 경우 
• 게임 플레이하다 전화가 온 경우
MPTCP가 뜰까? 
• 연결 유지 기능을 TCP stack에! 
• 거의 모든 라우터에서 TCP 타입 IP 패킷을 투과시킨다는 점을 착안 
• TCP option field hacking! 페이로드 손 안댐! 님좀짱! 
• Proof of Concept (POC) 
Wifi 
MPTCP-aware Server 
3G
• MPTCP in iOS7 
• Siri (검증중?) 
• 후퇴 가능한 프로토콜 
• 올리버 논문의 변경 없이 안착한다면? 
• 그렇지 않다면?
• SCTP, DCCP 혹은 기타는 안나오나? 
• 나온지 10년이 넘었는데도 안착 못하는 이유
• 프라우드넷에서는? 
• P2P, C/S 모두 연결유지 기능 프로토타입 구현된 상태 
• 리눅스 포팅 끝나면 마무리 예정 (현재 일부 업체 임상실험(…)중) 
• 기존 사용중 업체들에게는 무료로 업데이트될거임
멀티플랫폼
현재 지원중 
언어 네트워크 클라이언트 생성 
C++ CNetClient* a=Proud::CNetClient::Create(); 
C# NetClient a=new Nettention.Proud.NetClient(); 
UnrealScript a = class'NetClient'.static.Create(); 
Java NetClient a=new com.nettention.proud.NetClient(); 
플랫폼 네트워크 클라이언트 라이브러리 
Windows ProudNetClient.lib 
iOS libProudNetClient.a 
Android, NDK ProudNetClient.jar libProudNetClient.a 
Unreal Engine 3 UnrealEngine3/Development/src/ProudNet/*.* 
Unity Engine ProudNetClient.dll (Android, iOS도 동일)
스마트폰 온라인 게임에서 고려해야 할 것들
• 짜증나더라도, epoll, kqueue, simple poll은 
• reactor 모듈로, iocp는 proactor 모듈로 이원화 후 
• 제각각 케이스를 만들어야 성능에 유리 
• syscall과 1:1 대응하기 때문. 모바일에서 성능에 중요한 요소임 
언어 비동기 I/O API 이벤트 대기 함수 
Windows IOCP GetQueuedCompletionStatus 
Android epoll epoll_wait 
iOS kqueue kevent 
Marmalade simple poll select
• Win32 API 쓰던 부분들 다 뜯어냄 
• #if 떡칠  
최대한 모아놓고 거기서만 #if 떡칠 
• 제일 까다로왔던 부분은 의외로… string 부분임 -0-; 
VC++, Marmalade Android, iOS 
char Multibyte 
(3개 국어 소화 불가능) 
UTF-8 
wchar_t UTF-16 UTF-32 
(메모리 너무 차지)
• Mono ≠ .Net Framework 
• iPhone3GS, iPhone 4에서 일으키는 문제 
• Mono Socket.Connect 함수의 버그
단일 서버
논리적 단일 서버
Web Application Server aka. WAS 
• 클라이언트와 서버간 HTTP로 통신 
• php, asp.net, node.js, java, …
클라 LB 
php 
php 
php 
MySQL 
redis 
redis 
redis 
클라우드 서버 
• 로드밸런서 
• 웹서버 
• 서버간 메모리 
동기화 & 캐시 
• 백엔드 디비
장점 
• 빠른 개발 
• 손쉬운 클라우드 서버 인스턴싱 
• No down-time 
• 간편하게 scale out 가능 
• 연결 유지 불필요
단점 
• 랙 
• 스토리지 과부하 
TCP syn 
relay write/ack
• 해킹된 클라 
해킹된 판 
정 결과
• 많은 계층 
• HAL-VM-Linux-Apache-PHP-… 
• 서버간 통신량 
• TIME_WAIT
• 플레이어간 상호작용에 하이젠버그
• 몇 단점에도 불구하고 장점이 매우 큼 
• 낮은 반응 속도 < 높은 안정성 
• 비동기 멀티플레이 게임에서는 만족
decision making tree 
비동기 
멀티플레이 
동기 
멀티플레이 
TCP, UDP 
클라에서 
플레이 판정 
(빠른 반응성, 서버 
유지비 절감) 
서버에서 
플레이 판정 
(해킹 방어, 
잠수함 패치 용이) 
HTTP
웹서버+프라우드넷 
• 이렇게 개발하는 경우 
• 처음에 웹서버로 개발하다가 중 
도에 필요해지는 경우 
• 멀티플레이, 서버사이드 게임판정 
• 어떻게 같이 사용하는지 
• DB를 매개채로 데이터 공유 
• 플러그인을 통해 서버간 통신
논리적 단일 서버 
• 우리의 DB cache 시스템으로 논리적 
단일 서버를 이렇게 구축 
게임 
DB 
유저계 
정 DB 
매핑DB 
DB cache 
server 
게임 
DB 
유저계 
정 DB 
DB cache 
server 
게임 
DB 
유저계 
정 DB 
DB cache 
server 
게임 
DB 
유저계 
정 DB 
DB cache 
server 
게임서버 
게임서버 
게임서버 
매핑DB 매핑DB 
클라
클라우드
클라우드 서버 
50000 
40000 
30000 
20000 
10000 
0 
3 6 9 12 18 24 
CCU 
리얼 서버 
클라우드 서버 
TCO 12 
TCO 5.8
클라우드 서버에서 
• 점검 없이 서버 증감 
• 클라우드 서버에서 매핑 DB 
• 인스턴수 줄이면 마이그레이션 어쩔… 
• 매핑 DB=SPOF?  미러링하세요
실시간 멀티플레이는? 
Hypervisor 
VM 
CPU 
100% 
VM 
CPU 
20% 
랙 유발
클라우드에서 프라우드넷의 성능 
• 모바일 게임 Fish Riots 라이 
브 서버 
• A???? US West 
• 7GB RAM, 4 CPU 
• Windows Server 2012 
• 화면에 최대 50개의 타 플레이 
어가 보여짐 (일반적인 
MMORPG보다 2배정도 부하 
를 줌) 
• 스트레스 테스트 클라이언트 
를 사용 
• No P2P
• 동시접속자 1112명에서 
CPU 8~12% 사용 
• System process는 약 6% 
를 사용 (서버 반 클라 반) 
• 일반적인 서버의 한계 수 
위가 CPU 80%인 점을 감 
안하면, 최대 동시접속자 
7000명 처리 가능
리얼 머신에서 처리 성능 
CPU Intel® Core™ i7-2600 CPU @ 3.40GHz 
(4코어&하이퍼스레딩) 
메모리 16.0GB 
운영체제 Window 8.1 Pro K 
시스템 종류 64비트 운영체제, x64 기반 프로세서 
1000개 + 
더미 클라이언트 
즉, 80% 기준으로 동시 
접속자 
20000명 처리
채팅 서버 머신당 동시접속자 6만 
그것도 라이브 서비스에서
지금 프라우드넷은… 
• 온라인 게임 플레이에서는 자신있는데, 
• 실시간 멀티플레이 
• 서버에서의 게임플레이 판정 
• 문제는 대부분의 모바일 게임이 오프라 
인이라는…  
• 아무튼, 방망이는 계속 깎습니다 
(새로운 종류의 방망이도 만드는 중)
유니티 관련 세미나인데 유니티에 대한 얘기가 없네요?
프라우드넷 on 유니티 
13 Unity-powered 
5 unkown 
4 other engines
1 of 50

Recommended

게임 분산 서버 구조 by
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
37.7K views35 slides
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉 by
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
6.7K views52 slides
임태현, 게임 서버 디자인 가이드, NDC2013 by
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
20.2K views85 slides
MMOG Server-Side 충돌 및 이동처리 설계와 구현 by
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
1.6K views74 slides
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019 by
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019
홍성우, 게임 서버의 목차 - 시작부터 출시까지, NDC2019devCAT Studio, NEXON
6K views75 slides
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버 by
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
50.2K views152 slides

More Related Content

What's hot

NDC12_Lockless게임서버설계와구현 by
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
7.7K views48 slides
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3 by
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
13.5K views251 slides
Next-generation MMORPG service architecture by
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architectureJongwon Kim
7.1K views44 slides
실시간 게임 서버 최적화 전략 by
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
3.8K views95 slides
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막) by
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
43.8K views370 slides
Multiplayer Game Sync Techniques through CAP theorem by
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theoremSeungmo Koo
11.9K views64 slides

What's hot(20)

NDC12_Lockless게임서버설계와구현 by noerror
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
noerror7.7K views
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3 by Heungsub Lee
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
Heungsub Lee13.5K views
Next-generation MMORPG service architecture by Jongwon Kim
Next-generation MMORPG service architectureNext-generation MMORPG service architecture
Next-generation MMORPG service architecture
Jongwon Kim7.1K views
실시간 게임 서버 최적화 전략 by YEONG-CHEON YOU
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
YEONG-CHEON YOU3.8K views
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막) by Heungsub Lee
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
Heungsub Lee43.8K views
Multiplayer Game Sync Techniques through CAP theorem by Seungmo Koo
Multiplayer Game Sync Techniques through CAP theoremMultiplayer Game Sync Techniques through CAP theorem
Multiplayer Game Sync Techniques through CAP theorem
Seungmo Koo11.9K views
임태현, MMO 서버 개발 포스트 모템, NDC2012 by devCAT Studio, NEXON
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
NDC 11 자이언트 서버의 비밀 by 승명 양
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
승명 양4.4K views
테라로 살펴본 MMORPG의 논타겟팅 시스템 by QooJuice
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice3.3K views
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기 by 강 민우
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
[IGC 2017] 펄어비스 민경인 - Mmorpg를 위한 voxel 기반 네비게이션 라이브러리 개발기
강 민우5.1K views
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference by Xionglong Jin
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
Xionglong Jin18.7K views
[0903 구경원] recast 네비메쉬 by KyeongWon Koo
[0903 구경원] recast 네비메쉬[0903 구경원] recast 네비메쉬
[0903 구경원] recast 네비메쉬
KyeongWon Koo10.2K views
게임서버프로그래밍 #8 - 성능 평가 by Seungmo Koo
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
Seungmo Koo7.6K views
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델 by Seungmo Koo
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델
Seungmo Koo6K views
중앙 서버 없는 게임 로직 by Hoyoung Choi
중앙 서버 없는 게임 로직중앙 서버 없는 게임 로직
중앙 서버 없는 게임 로직
Hoyoung Choi8.2K views
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오... by Amazon Web Services Korea
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
라이브 서비스를 위한 게임 서버 구성 by Hyunjik Bae
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
Hyunjik Bae5.8K views
쿠키런 1년, 서버개발 분투기 by Brian Hong
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
Brian Hong109.6K views
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012 by devCAT Studio, NEXON
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
게임 서버 성능 분석하기 by iFunFactory Inc.
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
iFunFactory Inc.1.6K views

Similar to 스마트폰 온라인 게임에서 고려해야 할 것들

2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가 by
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가Hyun-jik Bae
8.1K views27 slides
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프 by
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
5.1K views64 slides
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가 by
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가NAVER D2
43.1K views38 slides
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018 by
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
4.6K views122 slides
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지 by
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지강 민우
11.8K views76 slides
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps... by
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
3.7K views59 slides

Similar to 스마트폰 온라인 게임에서 고려해야 할 것들(20)

2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가 by Hyun-jik Bae
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
Hyun-jik Bae8.1K views
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프 by Jinuk Kim
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Jinuk Kim5.1K views
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가 by NAVER D2
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
NAVER D243.1K views
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018 by devCAT Studio, NEXON
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지 by 강 민우
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
[IGC 2017] 아마존 구승모 - 게임 엔진으로 서버 제작 및 운영까지
강 민우11.8K views
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps... by hoondong kim
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
hoondong kim3.7K views
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기 by Jinuk Kim
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
Jinuk Kim13.6K views
Azure로 MMO게임 서비스하기 by YEONG-CHEON YOU
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기
YEONG-CHEON YOU1.5K views
What is Game Server ? by 흥배 최
What is Game Server ?What is Game Server ?
What is Game Server ?
흥배 최669 views
Quic을 이용한 네트워크 성능 개선 by NAVER D2
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
NAVER D219.2K views
cdit hci zerto '소통하는 세미나' 소개자료(201705) by CDIT-HCI
cdit hci zerto '소통하는 세미나' 소개자료(201705)cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)
CDIT-HCI334 views
KGC 2014: 분산 게임 서버 구조론 by Hyunjik Bae
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
Hyunjik Bae5.2K views
Game Server Middleware 'ProudNet' by Nettention
Game Server Middleware 'ProudNet'Game Server Middleware 'ProudNet'
Game Server Middleware 'ProudNet'
Nettention2.5K views
build a linux webhosting server by 정현 윤
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
정현 윤49.1K views
서버와 클라이언트 같은 엔진 사용하기 by YEONG-CHEON YOU
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
YEONG-CHEON YOU1.3K views
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드 by Jeongsang Baek
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
Jeongsang Baek16.2K views
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스 by Dan Kang (강동한)
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민 by Hyunjik Bae
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
Hyunjik Bae4.1K views
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19) by Jongwon Han
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
Jongwon Han581 views

More from Hyunjik Bae

웹서버와 ProudNet 서버간 상호작용 가이드 by
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드Hyunjik Bae
2.8K views24 slides
Unity에서 회전하는 cube 만드는 법 by
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Hyunjik Bae
2.9K views8 slides
웹서버와 프라우드넷 서버간 상호작용 가이드 by
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드Hyunjik Bae
1.6K views24 slides
프라우드넷의 IL2CPP 적응 기록-정종채 by
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채Hyunjik Bae
4.3K views32 slides
ProudNet 1.7 소개 by
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개Hyunjik Bae
5K views21 slides
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직 by
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
32.7K views40 slides

More from Hyunjik Bae(6)

웹서버와 ProudNet 서버간 상호작용 가이드 by Hyunjik Bae
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드
Hyunjik Bae2.8K views
Unity에서 회전하는 cube 만드는 법 by Hyunjik Bae
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법
Hyunjik Bae2.9K views
웹서버와 프라우드넷 서버간 상호작용 가이드 by Hyunjik Bae
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드
Hyunjik Bae1.6K views
프라우드넷의 IL2CPP 적응 기록-정종채 by Hyunjik Bae
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채
Hyunjik Bae4.3K views
ProudNet 1.7 소개 by Hyunjik Bae
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개
Hyunjik Bae5K views
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직 by Hyunjik Bae
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
Hyunjik Bae32.7K views

스마트폰 온라인 게임에서 고려해야 할 것들

  • 1. 스마트폰 온라인 게임에서 고려해야 할 것들 넷텐션 배현직
  • 2. 대표적 이슈들 • 폰 하드웨어 • 무선 네트워크 • 멀티플랫폼 • 서버의 역할 • 클라우드 서버
  • 3. 모바일 • 게임 출시 경험이 몇차례 있는 모바일 게 임 업체들은, 생각보다 성능에 목숨거는 분위기 • 어머님,아버님은 폰 안바꿈 • 카톡만 되면 됨
  • 4. 처리 성능 • 10년전 데스크탑 성능 • 그러나 더 악조건
  • 5. • iPhone 4S의 전체 메모리는 512MB • 그 중에서 실제 사용가능한 프로세스 메 모리는? • iOS 7  50~200MB • iPhone 5S에서 iOS 8 업그레이드 후 잔여 공 간이 700에서 500MB로 하락! • 메모리 모자라면 PC는? 한편 모바일은?
  • 6. • 60Hz만 충족시킨다고 ok? 배터리는? • 하이엔드 경험을 위해 60Hz 강행 • 배터리 아끼기 위해 15Hz로 다운 • 멀티스레드 싫어함 & 소켓 버퍼 커야
  • 7. 네트워크의 고약한 점 • 긴 하위호환성의 문제 • 사람 피를 완전히 바꾸는 것만큼 어려움 • 유선 네트워크보다 무선 네트워크가 물리학상으로도 훨씬 더 불안정
  • 8. 3G • RTT 50~100ms • 위치 이동 안해도 20%까지 패킷로스 증가
  • 9. 3G • 에이…LTE 나온지가 벌써 3년 지났어요! 78.4 21.6 3G LTE 2013년 조사 결과
  • 10. Wifi 자체가 일으키는 패킷 드랍과 딜레 이
  • 11. UDP의 레이턴시 vs. TCP의 레이턴시
  • 12. TCP on packet drop • 무선 통신의 높은 레이턴시와 패킷 드 랍율 • TCP는 쉽게 retransmission 랙이 발생 함 • 결론: UDP 꼭 쓰세요 20~200ms 20% 20~200ms (80%) 520~720ms (20%)
  • 13. UDP only면 충분? • 기업 방화벽 • 일부 wifi AP • 일부 3G/LTE 기지국 • 결론: TCP를 꼭 혼용하세요 (프라우드넷은 옛날부터 이미 ㅋ)
  • 14. UDP vs. traffic conservation • 무선 통신량  패킷 드랍율 • 전파 혼잡  패킷 드랍율 • 결국 한번 보낼 때 적게 패킷 보내야 • 결론: UDP 패킷을 필요한 것들은 합쳐 보내세요 • 그렇다고 너무 합치면 합침 대기 간격 (coalesce interval) 자체가 랙이 됨 • RTO에 비례해서 잡아야 (아니면 프라우드넷을… ㅋㅋ)
  • 15. 모바일에서 P2P • 프라우드넷은 선 홀펀칭 후 릴레이 방식  게임 개발자는 그냥 항상 홀펀칭 된다는 가정하에 코딩 • 홀펀칭 대기 시간이 없어 개발은 편하지만, 안타깝게도 양쪽 다 LTE인 경우 홀펀칭 안됨  • 하나 이상이 wifi이면 85(국외)~95%(국내)지만
  • 16. • 3G/LTE vs. Wifi • 게임 하다가 wifi존에서 나간 경우 • 게임 하다가 wifi존에 도착한 경우 • 게임 플레이하다 전화가 온 경우
  • 17. MPTCP가 뜰까? • 연결 유지 기능을 TCP stack에! • 거의 모든 라우터에서 TCP 타입 IP 패킷을 투과시킨다는 점을 착안 • TCP option field hacking! 페이로드 손 안댐! 님좀짱! • Proof of Concept (POC) Wifi MPTCP-aware Server 3G
  • 18. • MPTCP in iOS7 • Siri (검증중?) • 후퇴 가능한 프로토콜 • 올리버 논문의 변경 없이 안착한다면? • 그렇지 않다면?
  • 19. • SCTP, DCCP 혹은 기타는 안나오나? • 나온지 10년이 넘었는데도 안착 못하는 이유
  • 20. • 프라우드넷에서는? • P2P, C/S 모두 연결유지 기능 프로토타입 구현된 상태 • 리눅스 포팅 끝나면 마무리 예정 (현재 일부 업체 임상실험(…)중) • 기존 사용중 업체들에게는 무료로 업데이트될거임
  • 22. 현재 지원중 언어 네트워크 클라이언트 생성 C++ CNetClient* a=Proud::CNetClient::Create(); C# NetClient a=new Nettention.Proud.NetClient(); UnrealScript a = class'NetClient'.static.Create(); Java NetClient a=new com.nettention.proud.NetClient(); 플랫폼 네트워크 클라이언트 라이브러리 Windows ProudNetClient.lib iOS libProudNetClient.a Android, NDK ProudNetClient.jar libProudNetClient.a Unreal Engine 3 UnrealEngine3/Development/src/ProudNet/*.* Unity Engine ProudNetClient.dll (Android, iOS도 동일)
  • 24. • 짜증나더라도, epoll, kqueue, simple poll은 • reactor 모듈로, iocp는 proactor 모듈로 이원화 후 • 제각각 케이스를 만들어야 성능에 유리 • syscall과 1:1 대응하기 때문. 모바일에서 성능에 중요한 요소임 언어 비동기 I/O API 이벤트 대기 함수 Windows IOCP GetQueuedCompletionStatus Android epoll epoll_wait iOS kqueue kevent Marmalade simple poll select
  • 25. • Win32 API 쓰던 부분들 다 뜯어냄 • #if 떡칠  최대한 모아놓고 거기서만 #if 떡칠 • 제일 까다로왔던 부분은 의외로… string 부분임 -0-; VC++, Marmalade Android, iOS char Multibyte (3개 국어 소화 불가능) UTF-8 wchar_t UTF-16 UTF-32 (메모리 너무 차지)
  • 26. • Mono ≠ .Net Framework • iPhone3GS, iPhone 4에서 일으키는 문제 • Mono Socket.Connect 함수의 버그
  • 29. Web Application Server aka. WAS • 클라이언트와 서버간 HTTP로 통신 • php, asp.net, node.js, java, …
  • 30. 클라 LB php php php MySQL redis redis redis 클라우드 서버 • 로드밸런서 • 웹서버 • 서버간 메모리 동기화 & 캐시 • 백엔드 디비
  • 31. 장점 • 빠른 개발 • 손쉬운 클라우드 서버 인스턴싱 • No down-time • 간편하게 scale out 가능 • 연결 유지 불필요
  • 32. 단점 • 랙 • 스토리지 과부하 TCP syn relay write/ack
  • 33. • 해킹된 클라 해킹된 판 정 결과
  • 34. • 많은 계층 • HAL-VM-Linux-Apache-PHP-… • 서버간 통신량 • TIME_WAIT
  • 36. • 몇 단점에도 불구하고 장점이 매우 큼 • 낮은 반응 속도 < 높은 안정성 • 비동기 멀티플레이 게임에서는 만족
  • 37. decision making tree 비동기 멀티플레이 동기 멀티플레이 TCP, UDP 클라에서 플레이 판정 (빠른 반응성, 서버 유지비 절감) 서버에서 플레이 판정 (해킹 방어, 잠수함 패치 용이) HTTP
  • 38. 웹서버+프라우드넷 • 이렇게 개발하는 경우 • 처음에 웹서버로 개발하다가 중 도에 필요해지는 경우 • 멀티플레이, 서버사이드 게임판정 • 어떻게 같이 사용하는지 • DB를 매개채로 데이터 공유 • 플러그인을 통해 서버간 통신
  • 39. 논리적 단일 서버 • 우리의 DB cache 시스템으로 논리적 단일 서버를 이렇게 구축 게임 DB 유저계 정 DB 매핑DB DB cache server 게임 DB 유저계 정 DB DB cache server 게임 DB 유저계 정 DB DB cache server 게임 DB 유저계 정 DB DB cache server 게임서버 게임서버 게임서버 매핑DB 매핑DB 클라
  • 41. 클라우드 서버 50000 40000 30000 20000 10000 0 3 6 9 12 18 24 CCU 리얼 서버 클라우드 서버 TCO 12 TCO 5.8
  • 42. 클라우드 서버에서 • 점검 없이 서버 증감 • 클라우드 서버에서 매핑 DB • 인스턴수 줄이면 마이그레이션 어쩔… • 매핑 DB=SPOF?  미러링하세요
  • 43. 실시간 멀티플레이는? Hypervisor VM CPU 100% VM CPU 20% 랙 유발
  • 44. 클라우드에서 프라우드넷의 성능 • 모바일 게임 Fish Riots 라이 브 서버 • A???? US West • 7GB RAM, 4 CPU • Windows Server 2012 • 화면에 최대 50개의 타 플레이 어가 보여짐 (일반적인 MMORPG보다 2배정도 부하 를 줌) • 스트레스 테스트 클라이언트 를 사용 • No P2P
  • 45. • 동시접속자 1112명에서 CPU 8~12% 사용 • System process는 약 6% 를 사용 (서버 반 클라 반) • 일반적인 서버의 한계 수 위가 CPU 80%인 점을 감 안하면, 최대 동시접속자 7000명 처리 가능
  • 46. 리얼 머신에서 처리 성능 CPU Intel® Core™ i7-2600 CPU @ 3.40GHz (4코어&하이퍼스레딩) 메모리 16.0GB 운영체제 Window 8.1 Pro K 시스템 종류 64비트 운영체제, x64 기반 프로세서 1000개 + 더미 클라이언트 즉, 80% 기준으로 동시 접속자 20000명 처리
  • 47. 채팅 서버 머신당 동시접속자 6만 그것도 라이브 서비스에서
  • 48. 지금 프라우드넷은… • 온라인 게임 플레이에서는 자신있는데, • 실시간 멀티플레이 • 서버에서의 게임플레이 판정 • 문제는 대부분의 모바일 게임이 오프라 인이라는…  • 아무튼, 방망이는 계속 깎습니다 (새로운 종류의 방망이도 만드는 중)
  • 49. 유니티 관련 세미나인데 유니티에 대한 얘기가 없네요?
  • 50. 프라우드넷 on 유니티 13 Unity-powered 5 unkown 4 other engines