SlideShare una empresa de Scribd logo
1 de 50
스마트폰 온라인 게임에서 
고려해야 할 것들 
넷텐션 
배현직
대표적 이슈들 
• 폰 하드웨어 
• 무선 네트워크 
• 멀티플랫폼 
• 서버의 역할 
• 클라우드 서버
모바일 
• 게임 출시 경험이 몇차례 있는 모바일 게 
임 업체들은, 생각보다 성능에 목숨거는 
분위기 
• 어머님,아버님은 폰 안바꿈 
• 카톡만 되면 됨
처리 성능 
• 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

Más contenido relacionado

La actualidad más candente

[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버Heungsub Lee
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀승명 양
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)_ce
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceXionglong Jin
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가Seungmo Koo
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3Heungsub Lee
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조Hyunjik Bae
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략YEONG-CHEON YOU
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기iFunFactory Inc.
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱Seungmo Koo
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례if kakao
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉iFunFactory Inc.
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해Seungmo Koo
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템QooJuice
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)Heungsub Lee
 

La actualidad más candente (20)

[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
[야생의 땅: 듀랑고] 서버 아키텍처 - SPOF 없는 분산 MMORPG 서버
 
NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀NDC 11 자이언트 서버의 비밀
NDC 11 자이언트 서버의 비밀
 
서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)서비스중인 게임 DB 설계 (쿠키런 편)
서비스중인 게임 DB 설계 (쿠키런 편)
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 
게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가게임서버프로그래밍 #8 - 성능 평가
게임서버프로그래밍 #8 - 성능 평가
 
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
〈야생의 땅: 듀랑고〉 서버 아키텍처 Vol. 3
 
게임 분산 서버 구조
게임 분산 서버 구조게임 분산 서버 구조
게임 분산 서버 구조
 
실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략실시간 게임 서버 최적화 전략
실시간 게임 서버 최적화 전략
 
게임 서버 성능 분석하기
게임 서버 성능 분석하기게임 서버 성능 분석하기
게임 서버 성능 분석하기
 
게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱게임제작개론 : #4 게임 밸런싱
게임제작개론 : #4 게임 밸런싱
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해게임제작개론: #1 게임 구성 요소의 이해
게임제작개론: #1 게임 구성 요소의 이해
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 

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

2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가Hyun-jik Bae
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Jinuk Kim
 
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가NAVER D2
 
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...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...hoondong kim
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기Jinuk Kim
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012devCAT Studio, NEXON
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기YEONG-CHEON YOU
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?흥배 최
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선NAVER D2
 
cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)CDIT-HCI
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론Hyunjik Bae
 
Game Server Middleware 'ProudNet'
Game Server Middleware 'ProudNet'Game Server Middleware 'ProudNet'
Game Server Middleware 'ProudNet'Nettention
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server정현 윤
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기YEONG-CHEON YOU
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드Jeongsang Baek
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스Dan Kang (강동한)
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)Ubuntu Korea Community
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민Hyunjik Bae
 
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)Jongwon Han
 
091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)Taegil Heo
 

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

2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
2013년 7월 현재 트렌드에서의 프라우드넷은 어떻게 적응하고 있는가
 
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
Gametech 2014: 모바일 게임용 PaaS/BaaS 구현 사례와 디자인 트레이드오프
 
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
[2A1]Line은 어떻게 글로벌 메신저 플랫폼이 되었는가
 
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...
Auto Scalable 한 Deep Learning Production 을 위한 AI Serving Infra 구성 및 AI DevOps...
 
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
NDC14 모바일 게임서비스를 위한 사설 클라우드 구축/운영 분투기
 
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
양승명, 다음 세대 크로스플랫폼 MMORPG 아키텍처, NDC2012
 
Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기Azure로 MMO게임 서비스하기
Azure로 MMO게임 서비스하기
 
What is Game Server ?
What is Game Server ?What is Game Server ?
What is Game Server ?
 
Quic을 이용한 네트워크 성능 개선
 Quic을 이용한 네트워크 성능 개선 Quic을 이용한 네트워크 성능 개선
Quic을 이용한 네트워크 성능 개선
 
cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)cdit hci zerto '소통하는 세미나' 소개자료(201705)
cdit hci zerto '소통하는 세미나' 소개자료(201705)
 
KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론KGC 2014: 분산 게임 서버 구조론
KGC 2014: 분산 게임 서버 구조론
 
Game Server Middleware 'ProudNet'
Game Server Middleware 'ProudNet'Game Server Middleware 'ProudNet'
Game Server Middleware 'ProudNet'
 
build a linux webhosting server
build a linux webhosting serverbuild a linux webhosting server
build a linux webhosting server
 
서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기서버와 클라이언트 같은 엔진 사용하기
서버와 클라이언트 같은 엔진 사용하기
 
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
스마트폰 앱 백-엔드 솔루션 개발을 위한 Node.js 실전 가이드
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
최민호 - 국내 포털에서의 우분투 (2012Y03M31D)
 
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
프라우드넷의 연결 유지 기능과 홀펀칭-윤현민
 
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
DV 환경에서 PG 연동하기 ('우리 안의 소리', 2015-11-19)
 
091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)
 

Más de Hyunjik Bae

웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드Hyunjik Bae
 
Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Hyunjik Bae
 
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드Hyunjik Bae
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성Hyunjik Bae
 
프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채Hyunjik Bae
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개Hyunjik Bae
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직Hyunjik Bae
 

Más de Hyunjik Bae (7)

웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드
 
Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법Unity에서 회전하는 cube 만드는 법
Unity에서 회전하는 cube 만드는 법
 
웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드웹서버와 프라우드넷 서버간 상호작용 가이드
웹서버와 프라우드넷 서버간 상호작용 가이드
 
라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성라이브 서비스를 위한 게임 서버 구성
라이브 서비스를 위한 게임 서버 구성
 
프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채프라우드넷의 IL2CPP 적응 기록-정종채
프라우드넷의 IL2CPP 적응 기록-정종채
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개
 
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
KGC 2014: 클라이언트 개발자를 위한 컴퓨터 네트워크 기초 배현직
 

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

  • 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도 동일)
  • 23.
  • 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