"AnyGameNow조"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(개발과제의 기대효과)
(설계)
 
(같은 사용자의 중간 판 7개는 보이지 않습니다)
98번째 줄: 98번째 줄:
 
===기술개발 일정 및 추진체계===
 
===기술개발 일정 및 추진체계===
 
====개발 일정====
 
====개발 일정====
내용
+
[[파일:file3.PNG]]
 
====구성원 및 추진체계====
 
====구성원 및 추진체계====
내용
+
◇ 김세연 - 팀장, 서버 프로그램 개발, 전체 프로그램 구조 설계
 +
 
 +
◇ 이동수 - 팀원, 클라이언트 프로그램 개발
  
 
==설계==
 
==설계==
===설계사양===
 
====제품의 요구사항====
 
내용
 
====설계 사양====
 
내용
 
  
 
===개념설계안===
 
===개념설계안===
내용
+
[[파일:file4.png]]
 +
 
 +
◇ Proxy Server와 Streaming Server는 하나의 VPN으로 이루어져 있다.
 +
 
 +
◇ User의 모든 요청은 Proxy Server로 전달되어 Proxy Server에서 idle한 Server를 찾아 User와 연결을 중계 해준다
 +
 
 +
◇ Storage에 User의 인증정보를 저장해두어 허가된 User만 이 서비스를 이용할 수 있게 한다.
 +
 
 +
◇ 하나의 Streaming Server는 하나의 게임만 실행 한다.
 +
 
 +
◇ Streaming Server와 User가 일단 연결되면 Proxy Server를 거치지 않고 직접 게임 스트리밍을 하게된다. 이때 Server은 Video와 Audio를 유저에게 스트리밍 하고 유저는 게임의 조작 정보를 서버로 전송한다.
  
===이론적 계산 시뮬레이션===
+
◇ 각 유저들의 게임 세이브 데이터등은 별도의 저장소(Strorage)에 두어 이후 다시 서비스를 받을 때 다른 Streaming Server에서 스트리밍을 받아도 이어서 게임을 할 수 있도록 한다.
내용
+
 
 +
◇ Storage에는 이 외에도 게임 이미지등을 Docker로 저장해놓고 Streaming Server에서 이를 가져와서 Docker로 실행한다.
 +
 
 +
 
 +
[[파일:file5.png]]
 +
 
 +
◇ 서버에서는 그래픽 카드에서 렌더링된 화면을 캡쳐하여 이를 H.264 혹은 HEVC로 인코딩하여 WebRTC를 이용하여 스트리밍 한다.
 +
 
 +
◇ 인코딩과 캡쳐는 최대한 그래픽 카드에서 지원하는 기능을 이용하며 이번 과제에서 서버에서 사용하는 그래픽 카드는 Nvidia의 그래픽 카드로 한정한다.
 +
 
 +
◇ 클라이언트는 전송받은 영상을 디코딩하여 화면에 다시 렌더링한다.
 +
 
 +
◇ 둘간의 통신에 webRTC를 사용하여 클라이언트는 웹브라우저상에서 게임스트리밍 서비스를 받게된다.
 +
 
 +
◇ 클라이언트에서 게임 조작 입력은 webRTC를 통해 서버로 전달된다.
 +
 
 +
◇ webRTC(Web RealTime Communication) - 웹 브라우저 간에 실시간으로, 플러그인이 필요 없이 영상 음성, 데이터 통신에 대한 공개 된 표준이며, 오픈소스이다. webRTC를 이용하여 P2P 연결을 만든다.
  
 
===상세설계 내용===
 
===상세설계 내용===
내용
+
 
 +
◇DB설계
 +
 
 +
[[파일:file6.png]]
 +
 
 +
[[파일:file7.png]]
 +
 
 +
[[파일:file8.png]]
 +
 
 +
[[파일:file9.png]]
 +
 
 +
[[파일:file10.png]]
  
 
==결과 및 평가==
 
==결과 및 평가==
 
===완료 작품의 소개===
 
===완료 작품의 소개===
 
====프로토타입 사진 혹은 작동 장면====
 
====프로토타입 사진 혹은 작동 장면====
내용
 
====포스터====
 
내용
 
  
===관련사업비 내역서===
+
[[파일:file11.png]]
내용
+
 
 +
[[파일:file12.png]]
 +
 
 +
[[파일:file13.png]]
 +
 
 +
[[파일:file14.png]]
 +
 
 +
[[파일:file15.png]]
 +
 
 +
[[파일:file16.png]]
 +
 
 +
  위 화면은 FFmpeg을 이용하여 데스크탑 PC의 화면을 노트북으로 스트리밍한 것이다. 영상 플레이어 좌측 하단의 플레이 시간을 보면 약 1초가량의 딜레이가 있음을 알 수 있다. 위 사진은 FFmpeg의 API를 이용한 것이 아닌 FFmpeg 프로그램을 이용한 것으로 API를 이용하여 직접 프로그램을 작성하면 딜레이가 더 낮아질 것으로 예상된다. 또한 위 환경은 동일한 네트워크 상에서 진행 된 것으로 실제 환경에서는 딜레이가 증가하고 패킷 손실 또한 커지게 될 것이다. 이는 Error Concealment 기법을 이용하여 해결할 계획이다.
 +
 
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
 
 +
[[파일:file17.png]]
  
 
===향후계획===
 
===향후계획===
내용
 
  
===특허 출원 내용===
+
1. 어려웠던 점
내용
+
 
 +
◇ 학교에서 배운 것은 기본적인 것들이라 이러한 프로젝트를 성공적으로 진행하려면 결국 외부 자료들을 많이 조사해야 하는데 어떠한 자료를 봐야하는지에 대한 어려움.
 +
 
 +
◇ 대부분의 자료가 영어라 어려움.
 +
 
 +
◇ 다른 수업 과제들과 병행 어려움.
 +
 
 +
◇ 다른 수업은 주기적인 과제들이 있어 이를 하다보면 결국 캡스톤 과제를 미루게 되어 마지막에 힘들게 된다.
 +
 
 +
 
 +
2. 차후 구현할 내용
 +
 
 +
◇ Kubernetes 와 Docker를 활용하여 클라우드 적재.
 +
 
 +
◇ 웹 환경에서 실행 가능하도록 변경.

2019년 6월 21일 (금) 00:13 기준 최신판

프로젝트 개요

기술개발 과제

국문 : 클라우드 게이밍 서비스 플랫폼

영문 : Cloud Gaming Service Platform

과제 팀명

AnyGameNow

지도교수

김진석 교수님

개발기간

2019년 3월 ~ 2019년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 2014920002 김세연(팀장)

서울시립대학교 컴퓨터과학부 2014920033 이동수(팀원)

서론

개발 과제의 개요

File1.png

본 개발 과제는 클라우드 게이밍 서비스를 쉽게 할수 있도록 도와주는 플랫폼을 개발하는 것을 목표로 한다. 클라우드 게이밍이란 클라우드 서비스의 일종으로 게임을 서버에 저장한채 게임 이용을 요구하는 단말기에 즉각적으로 스트리밍하는 서비스를 의미한다. 스트리밍 방식에 따라 ‘비디오 스트리밍’ 기반의 클라우드 게이밍과 ‘파일 스트리밍’기반의 클라우드 게임으로 나뉠 수 있는데 본 과제에서는 비디오 스트리밍기반의 클라우드 게이밍 서비스 플랫폼 개발을 목표로한다. 즉, 원격의 서버에서 게임이 구동되고 출력된 오디오/비디오는 게이머의 단말기로 전송되어 재생된다. 게이머의 단말기에 연결된 입력장치를 통해 게임조작 신호가 입력되고 이는 다시 서버에 전달된다. 따라서 게이머는 저사양의 단말기만을 가지고 고사양의 게임을 즐길 수 있게된다. 따라서 클라우드 게이밍 서비스 제공자는 본 플랫폼을 이용하여 자신이 라이선스를 가지고 있는 게임을 가지고 클라우드 게이밍 서비스를 제공할 수있다. 또는 게임 개발사들은 자신들의 개발한 게임을 본 플랫폼을 이용하여 클라우드 게이밍 형태로 게임을 제공할 수도 있을 것이다.


개발 과제의 배경 및 효과

현재 시중에 나와있는 고사양 게임을 즐기기 위해서는 먼저 고사양 컴퓨터가 필수이다. 이러한 고사양 컴퓨터를 구하기 위해선 초기에 적지않은 비용이 들어가게 된다. 따라서 이러한 고사양 컴퓨터를 구매할 여력이 안되는 유저들에게 고사양 게임을 저렴한 비용에 즐길 수 있는 방법을 생각하다 클라우드 게이밍을 생각하게 되었다. 현재 이러한 클라우드 게이밍을 제공하는 대표적인 서비스는 Playstation의 PS Now, Nvidia의 Geforce Now등이 있다. PS Now 같은 경우는 PS3, 4의 게임만 가능하고 Geforce Now 같은 경우에는 Nvidia 서버에서 보유하고 있는 게임만 플레이가 가능하다. 따라서 자신이 원하는 게임 제공자의 라이브러리에 있지 않는다면 플레이를 할 수 없게 된다. 따라서 누구나 자신이 가지고 있는 게임을 클라우드 서비스로 제공할 수 있으면 좋겠다고 생각하여 클라우드 게이밍 서비스 플랫폼을 주제로 선정하게 되었다. 클라우드 게이밍은 Saas(Software As A Service)의 한 형태로 이러한 게임 스트리밍 서비스를 통해 유저는 인터넷에 접속만 되어있다면 저사양의 기기만을 가지고 언제 어디서든 약간의 구독료만 내고 고사양 게임을 즐길 수 있게 될 것이다. 또한 게임 개발사 입장에서 자신이 개발한 게임을 클라우드 게이밍 형태로 제공하게 되면 무단 복제된 게임이 배포되는 것을 막을 수 있고 게임이 원격의 서버에서 돌아감으로 불법 핵프로그램을 막는 역할도 할 수 있을 것이다.


개발 과제의 목표 및 내용

◇ 여러 환경에서 쉽고 빠른 배포 Docker와 같은 컨테이너 기술을 사용하여 개발하여 개발된 어플리케이션을 쉽게 여러 서버환경에 배포 및 운영할 수 있게 한다.

◇ 유저수에 따른 쉬운 Scaling 확장성 Kubernetes와 같은 오케스트레이션 기능을 이용해서 클라우드 게이밍 서비스를 이용하는 유저 수에따라 쉽게 서버의 규모를 스케일 업 또운 다운하게 한다.

◇ Windows - Windows 간의 게임 스트리밍 이번 과제에서는 서버는 Windows 운영체제를 클라이언트는 Windows 운영체제로 한정하여 구동되도록 하는 것을 목표로한다.

◇ 낮은 지연시간 대부분의 고사양의 게임들은 인풋 렉이 크게되면 게임을 하는데 큰 지장을 갖게 된다. 본 과제의 게임 스트리밍 서비스는 인터넷을 통해 게임 조작이 전달 되므로 직접 PC앞에서 조작을 할 때보다 인풋 렉이 커질 수 밖에 없다. 따라서 게임 스트리밍 서비스를 이용하더라도 게임에 크게 지장이 가지 않도록 인풋 렉을 줄이는 것이 중요할 것이다. WiFi환경에서는 200ms, 유선 인터넷 환경에서는 150ms 이하의 지연시간을 목표로 한다.

◇ 720p이상의 해상도 게임 스트리밍은 서버에서 실행된 영상을 계속해서 클라이언트에 보내주는 것이 필요하다. 따라서 너무 큰 해상도의 영상을 보내게 되면 영상이 전송되는 속도가 느려 사용자 입장에서 영상이 매끄럽게 이어지지 못하면 게임을 하는데 큰 지장이 될 수있다. 그렇다고 영상의 해상도를 무작정 낮추게되면 사용자는 다시 몰입감이 떨어질 수 도 있다. 따라서 우리는 본 과제에서 최소한 720p(1280x720)이상의 서비스를 제공하도록 할 것이다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

  • 전 세계적인 기술현황

◇ Google Stadia 구글에서 개발한 클라우드 기반 게임 스트리밍(Cloud Gaming) 서비스이다. 2019년 3월 20일에 Google Developers Conference(GDC)에서 공개했으며 이전에 한차례 2018년 10월에 Assassin’s Creed Odyssey를 가지고 사용자 테스트를 한적이 있다. 정식 출시일은 아직 밝히지 않았으며 2019년 내로 미국/영국/캐나다/유럽에서 서비스를 시작하겠다고 밝혔다. 정식 출시때는 4K 60FPS로 게임을 즐길 수 있도록 만들겠다고 발표하여 충격을 주었다. 현재 3개의 게임을 지원할 계획이다. 전세계에 있는 구글 데이터 센터를 이용하여 서비스하며 7500개 이상의 노드를 이용하여 빠른 서비스를 제공할 수 있다고 한다. 또한 구글 데이터 센터에 게임 클라이언트와 게임 서버가 함께 있어 굉장히 많은 플레이어의 동시 접속도 수용할 수 있을 것이라고 한다. 즉, 보통 100명이서 진행하는 배틀로얄 게임 같은 경우 1000명 이상의 플레이도 가능할 것이 될 것 이라고 한다. 또한 스트리밍 서비스를 받는 사용자는 구글 크롬 브라우저를 통해 게임을 플레이 하게 되며 플레이어들은 유튜브 등을 통해 플레이 시점을 공유하고 링크를 통해 바로 같은 게임에 참여가 가능하게 될것이라고 한다. 크롬 브라우저를 통해 실행되므로 여러 플랫폼에서 사용이 가능하며 전용 콘트롤러를 통해 seamless하게 기기를 옮겨다니며 스트리밍 서비스를 받을 수 있다.

◇ Playstation PS Now Playstation에서 제공하는 클라우드 게임 스트리밍 서비스로 PS3, PS4 게임을 다운로드 받지 않고 스트리밍 서비스를 이용하여 플레이가 가능하다. 아직 국내 지원은 하지 않고 있으며 해상도는 720p 로 고정이다. 또한 컨트롤러는 무조건 소니의 듀얼쇼크 4만 사용 가능하고 PC, PS4에서만 사용이 가능하다는 단점이 있다.

◇ NVIDIA Geforce Now, Geforce experience Geforce Now는 Nvida에서 제공하는 클라우드 게임 스트리밍 서비스로 Nvidia Shield devices, macOS, Windows에서 지원한다. 1080p에 60fps를 지원하며 2016년 3월기준 80 이상의 게임을 제공했다. Geforce experience에서 지원하는 게임 스트리밍은 본인의 PC에서 게임을 돌리고 이를 인터넷을 통해 다른 장소에서 플레이하는 방식이다. Nvidia 그래픽 카드를 사용해야지만 된다는 단점이 있다.

  • 기술 로드맵

File2.PNG

Nvidia에서 발표한 클라우드 게이밍 로드맵이다. 클라우드 게이밍이을 통해 게이머는 더 이상 게임 다운로드가 필요없어지게 되므로 게임을 하기까지의 플레이 시간이 줄게 되고 하드웨어의 발달로 게임의 성능은 더욱 증가하게 된다.

시장상황에 대한 분석

  • 경쟁제품 조사 비교

◇ Google Stadia - 유튜브를 이용하여 게임 영상을 보는 도중 실시간으로 게임 참여 가능 - 플레이 도중 실시간으로 다른 기기에서 이어서 플레이 가능 - 전용 패드 뿐만 아니라 개인의 키보드와 마우스 사용 가능 - 자체 데이터센터를 이용하여 그래픽 처리 및 다수의 사용자 동시 접속 가능 - seamless 하게 스트리밍 기기 변경 가능 - 컨트롤러에서 바로 구글 어시스턴트를 통해 게임 공략 제공 - 해상도 720p ~ 4K, 60FPS 지원 - 2019년도 내에 유럽/북미 정식출시 예정 - 3개의 게임 서비스 예정

◇ Playstation PS Now - 현재 한국은 정식 서비스 안함 - PS3, 4 게임 플레이 가능 - PS4 및 PC에서만 사용 가능 - DualShock 컨트롤러만 사용가능 - 해상도 720p 고정

◇ Nvidia Geforce Now - Nvidia shield, MAC OS, WINDOWS PC에서 플레이 가능 - 해상도 1080p, 60FPS 지원, 몇몇 게임은 120FPS 지원 - 패치와 업데이트 자동으로 진행

기술개발 일정 및 추진체계

개발 일정

File3.PNG

구성원 및 추진체계

◇ 김세연 - 팀장, 서버 프로그램 개발, 전체 프로그램 구조 설계

◇ 이동수 - 팀원, 클라이언트 프로그램 개발

설계

개념설계안

File4.png

◇ Proxy Server와 Streaming Server는 하나의 VPN으로 이루어져 있다.

◇ User의 모든 요청은 Proxy Server로 전달되어 Proxy Server에서 idle한 Server를 찾아 User와 연결을 중계 해준다

◇ Storage에 User의 인증정보를 저장해두어 허가된 User만 이 서비스를 이용할 수 있게 한다.

◇ 하나의 Streaming Server는 하나의 게임만 실행 한다.

◇ Streaming Server와 User가 일단 연결되면 Proxy Server를 거치지 않고 직접 게임 스트리밍을 하게된다. 이때 Server은 Video와 Audio를 유저에게 스트리밍 하고 유저는 게임의 조작 정보를 서버로 전송한다.

◇ 각 유저들의 게임 세이브 데이터등은 별도의 저장소(Strorage)에 두어 이후 다시 서비스를 받을 때 다른 Streaming Server에서 스트리밍을 받아도 이어서 게임을 할 수 있도록 한다.

◇ Storage에는 이 외에도 게임 이미지등을 Docker로 저장해놓고 Streaming Server에서 이를 가져와서 Docker로 실행한다.


File5.png

◇ 서버에서는 그래픽 카드에서 렌더링된 화면을 캡쳐하여 이를 H.264 혹은 HEVC로 인코딩하여 WebRTC를 이용하여 스트리밍 한다.

◇ 인코딩과 캡쳐는 최대한 그래픽 카드에서 지원하는 기능을 이용하며 이번 과제에서 서버에서 사용하는 그래픽 카드는 Nvidia의 그래픽 카드로 한정한다.

◇ 클라이언트는 전송받은 영상을 디코딩하여 화면에 다시 렌더링한다.

◇ 둘간의 통신에 webRTC를 사용하여 클라이언트는 웹브라우저상에서 게임스트리밍 서비스를 받게된다.

◇ 클라이언트에서 게임 조작 입력은 webRTC를 통해 서버로 전달된다.

◇ webRTC(Web RealTime Communication) - 웹 브라우저 간에 실시간으로, 플러그인이 필요 없이 영상 및 음성, 데이터 통신에 대한 공개 된 표준이며, 오픈소스이다. webRTC를 이용하여 P2P 연결을 만든다.

상세설계 내용

◇DB설계

File6.png

File7.png

File8.png

File9.png

File10.png

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면

File11.png

File12.png

File13.png

File14.png

File15.png

File16.png

 위 화면은 FFmpeg을 이용하여 데스크탑 PC의 화면을 노트북으로 스트리밍한 것이다. 영상 플레이어 좌측 하단의 플레이 시간을 보면 약 1초가량의 딜레이가 있음을 알 수 있다. 위 사진은 FFmpeg의 API를 이용한 것이 아닌 FFmpeg 프로그램을 이용한 것으로 API를 이용하여 직접 프로그램을 작성하면 딜레이가 더 낮아질 것으로 예상된다. 또한 위 환경은 동일한 네트워크 상에서 진행 된 것으로 실제 환경에서는 딜레이가 증가하고 패킷 손실 또한 커지게 될 것이다. 이는 Error Concealment 기법을 이용하여 해결할 계획이다.


완료작품의 평가

File17.png

향후계획

1. 어려웠던 점

◇ 학교에서 배운 것은 기본적인 것들이라 이러한 프로젝트를 성공적으로 진행하려면 결국 외부 자료들을 많이 조사해야 하는데 어떠한 자료를 봐야하는지에 대한 어려움.

◇ 대부분의 자료가 영어라 어려움.

◇ 다른 수업 과제들과 병행 어려움.

◇ 다른 수업은 주기적인 과제들이 있어 이를 하다보면 결국 캡스톤 과제를 미루게 되어 마지막에 힘들게 된다.


2. 차후 구현할 내용

◇ Kubernetes 와 Docker를 활용하여 클라우드 적재.

◇ 웹 환경에서 실행 가능하도록 변경.