Game Streaming 서비스 비교

Game Streaming 서비스가 다양해 지고 있다. [1]에는 최근 Game Streaming 서비스를 비교하고 있다. 이러한 서비스는 스마트 폰과 같은 수신기기에서 서버로 부터 게임 화면을 스트리밍 받아서 지원하는 기술이다. 실재로 WebRTC와 보다 더 짧은 Latency 요구 사항이 요구 된다. 이러한 기술은 대부분 서비스 별로 다르기 때문에 상세 내용이 공개 되어 있지 않다. 하지만, Parsec이라는 기술은 이 상세 내용에 대해서 약간의 정보를 제공하고 있으므로 이를 살펴 보고 특징을 이해할 수 있다.

 

Parsec 개요

Parsec은 Free Game Software이다. 위에서 설명한 것과 같이 Streaming 방식으로 할 수있게 해준다. 지원이 종료되었지만, 삼성의 PlayGalaxy라는 서비스도 이를 활용한 것이다. [2]에는 Android 및 iOS SDK가 제공된다. Source Code는 제공되지 않는다.

 

Parsec 기술 설명

Parsec에서는 20ms으로는 아주 훌륭한 게임 경험을 할 수 있지만 40ms만 되어도 사용할 수 없다고 한다. 이는 WebRTC가 1초 미만의 수백 ms의 요구 사항이었다고 보면 이 요구 사항은 이 보다 한단계 더 낮은 Latency를 요구하는 서비스라고 생각할 수 있다.

[3]에서는 Parsec이 동작하는 방식을 설명하고 있다. 

 

  1. Capture raw desktop frames
  2. Encode the raw frames
  3. Send the encoded frames over the network
  4. Decode the frames
  5. Render the frames on the screen

1번에서는 Windows 8.1부터 빠른 캡춰를 가능하게 한다고 한다. 2의 경우는 nVidia와 같은 빠른 인코더를 사용해서 성능을 높이고 있다고 한다. 

 

Codec의 경우는 H.264의 60fps 설정이 저지연으로 동작한다고 한다. 또한 Codec의 인터페이스 사용을 직접하여 지연도 줄인다고 한다.

 

이렇게 처리된 데이터는 화면에 Rendering되게 되는데, 데이터를 GPU상에서 모두 처리하게 되면 지연이 준다고한다. Memory Copy와 Color coversion등이 효율화 항목 중 하나이다.

 

네트워크 성능도 중요한데, 아래 그림과 같이 Local에서 하는 것과 Cloud에서 하는것의 성능 차이가 상당히 있다. 5G Network의 Mobile Edge Computing(MEC)를 사용하는 것도 장점이 있을 것이다. 이러한 이유로 xCloud등이 모바일 사업자와 협력하는 것이 이유가 있다고 볼 수 있다.

 

Parsec 환경별 지연 수치[3]

 

아래 그림에서와 같이 nVidia와 AMD의 코덱 성능에는 차이가 상당히 있다. 그렇기 때문에 nVidia를 사용하는 것이 Game Streaming에 성능에 차이가 있을 수 있다. 그리고, Encoder쪽의 성능 차이가 중요한 부분일 수 있다고 생각된다.

 

제품별 인코더 성능 비교표[4]

 

성능 최적화

nVidia의 코덱을 사용하더라도 설정을 잘 못하면 성능의 차이가 나올 수 있다. [6]에서는 nVidia Codec의 목표에 따른 코덱 최적화 방법을 설명한다. 아래 표가 

 

Preset NVENC libx264
High Quality -c:v h264_nvenc -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -bf 3 -b_ref_mode 2 -temporal-aq 1 -rc-lookahead 20 -vsync 0 -c:v libx264 -preset medium -b:v BITRATE -bufsize BITRATE*2 -profile:v high -tune psnr -vsync 0 -threads 4
Low Latency Fast -c:v h264_nvenc -preset llhp -rc cbr_ld_hq -b:v BITRATE -bufsize BITRATE/FRATE -profile:v high -g 999999 -vsync 0 -c:v libx264 -preset fast -b:v BITRATE -bufsize BITRATE/FRATE -profile:v high -g 999999 -x264opts no-sliced-threads:nal-hrd=cbr -tune zerolatency -

 

상기 테이블의 내용 중 아래 옵션들은 관련된 주요 파라미터 설정에 대한 설명을 포함한다.

-bf set maximum number of B frames between Non B frames (default 0)

-rc-lookahead Number of frames to look ahead for frametype and ratecontrol

-b bitrate video bitrate (pelease use –b:v)

-bufsize set ratecontrol buffer size (in bits)

-g set the group of picture (GOP) size. 999999 is about 44h with 60fps

-maxrate Set maximum bitrate tolerance (in bits/s)

-tune zerolatency

 

특히, B frame의 사용 여부, bitrate할당 방법의 차이 그리고 GOP 크기등을 통해서 주요한 설정 방법에 대해서도 가늠해 볼 수 있다.

 

정리하며...

Game Streaming은 이야기 한데로, 표준이 아니면서도 극단적인 스트리밍 요구 사항이 포함되어 있어 매우 흥미롭지만 내용이 많은 내용이 공개 되어 있지 않은 문야이다. 점차 Client의 계산 능력으로는 충분하지 못하고 Cloud에서 힘을 빌려야 하는 응용이 늘어 날 수록 이 기술은 적용 범위가 확대 될 것이므로 기본적인 이해가 필요하다고 생각된다.

참고 자료

[1] Game Streaming 서비스 비교, https://www.clien.net/service/board/lecture/14562043

[2] Parsec SDK; https://github.com/parsec-cloud/parsec-sdk

[3] Parsec Description: https://blog.parsecgaming.com/description-of-parsec-technology-b2738dcc3842

[4] Parsec Introduction to Video Codec, https://blog.parsecgaming.com/an-introduction-to-video-compression-c5061a5d075e

[5] New Nvidia GPUs Outperform New AMD Cards On H.264 Compression Latency, https://blog.parsecgaming.com/new-nvidia-gpus-outperform-new-amd-cards-on-h-264-compression-latency-d32784464b94

[6] Turing H.264 Video Encoding Speed and Quality, https://devblogs.nvidia.com/turing-h264-video-encoding-speed-and-quality/

이 글은 오래전 Wowza에서 발간한 가이드 문서[1]를 살펴 보고 실시간 인터액티브 스트리밍의 구조 관련 내용을 정리하려고 한 것이다. 우선은 일반적인 실시간 연동이라고 하면, Live 방송을 해야 하고, 사용자에게 Interaction을 받아서 이를 처리하여야 한다. 그러므로, 일반적인 Pipeline을 설명하고, 관련된 비디오 스트리밍 프로토콜에 대해서 설명하려 한다.  사용자 인터액션에 대한 처리를 원할히 하기 위해서는 저지연, 즉 Low Latency까지 이야기 되어야 한다.

 

일반적인 Live Streaming 서비스 구조

우리가 YouTube 혹은 Facebook을 이용하여 라이브 방송하는 구조를 생각할 수 있다. 복잡한 장비를 사용하여 TV 방송 수준 품질의 방송을 하던, 아주 간단하게 휴대폰을 활용하던, 실재 Streaming을 위한 구조는 대동 소이하다.

 

Live Video Streaming의 경우는, 아래 그림과 같이 First Mile에서는 카메라에서 동영상을 비디오를 촬영하면 이를 전송 가능한 형태로 인코딩한다. 아직까지 일반적으로는 H.264를 많이 사용한다. 이를 처리하기 위한 서버로 전송하는데 아래 그림에서는 Processing 혹은 Ingestion이라고 한다. 이를 위해 전송하는 프로토콜은 RTMP, RTSP/RTP 혹은 SRT를 사용한다고 한다. 

Live Streaming 서비스 구조[2]

 

위에서 이야기 한데로 YouTube 혹은 Facebook이 Live 기능을 제공하기 시작하면서 개인 방성 기술에 대해서 여러 접근 법이 있었다. 그리고, 주로 많이 사용되는 것은 한번 상용화가 되기 시작하니 우후 죽순 처럼 RTMP[1] 기술이 주류처럼 나왔지만, 정말 오래된 기술 중 하나인 RTSP/RTP도 사용되고 있다.

 

처리된 콘텐츠들은 서비스 특징에 따라 전송 방법들을 달리한다. 위의 그림은 YouTube와 같이 많은 사용자들이 볼 수 있는 형태인 DASH 혹은 HLS로 변환하여 Content Delivery Network (CDN)을 통해 배포 하는 사례를 보여 준다.

 

지연 요구 사항에 따른 Streaming Protocols

아래 그림은 다양한 지연 요구 사항에 따른 Last Mile 처리 Protocol의 사례를 보여 준다. 

 

지연과 프로토콜 상관 관계[2]

처음 이야기 한 것과 같이 HLS, DASH는 일반적으로 많이 사용되고 있다. 많은 비디오 스트리밍 구성들이 캡춰에서 재생까지 30초 이상의 지연(Latency)을 가진다. 쉽게 말하면, YouTube에서 라이브로 보고 있는 내용들인 대부분 30초 전에 일어난 일이라는 것이다.

 

저지연이면서도 많은 사람들에게 전송하기 위한 Protocol Tuning을 하기 위해서 최적화 작업을 하는 업체들이 많다. 위에 그림에서 볼 수 있듯이 그렇다 하더라도 5초 이상의 지연을 가지게 된다.

 

이러한 노력에 추가하여, 프로토콜 표준상 최적화를 위해서 Low Latency HLS와 CMAF를 채용한 DASH가 제안되기도 했다. 기본 개념은 HLS/DASH에서 수신하는 작은 조각 (Fragment 혹은 Chunk)라고 불리는 것들을 작게 만들어 수 초대의 지연으로 만들어 일반 방송과 유사한 수준까지 만드는 것이다.

 

그렇다면, 이보다 낮은 방법은 없는 것인가? Wowza에서는 WebRTC를 제안하고 있다. 하지만, 이는 Peer-To-Peer 방식으로 콘텐트 소비자의 가까운 곳에 Computing Resource를 할당 하는 등 HLS/DASH 기반의 다른 방식에 비해서 비용이 높을 수 있다.

 

정리

위의 그림 하나로 모두 정리 된다고 볼 수 있지만, 사용자 인터렉션의 요구 사항이 높아지는 가운데, Low Latency HLS 혹은 CMAF를 이용한 DASH까지 가고 있지만, 실재로 서비스의 구성을 잘 고려하지 않으면 원하는 품질을 확보하기 어렵다. 이를 위해서는 실재 컨텐츠의 해상도 품질과 지연 요구 사항을 잘 고려하여 서비스를 고민해야 한다.

 

참고 문서

[1] Wowza media systems, "Real-Tme Interactive Apps: A Best Practices Guide With The Wowza Streaming Cloud Service", (링크 깨짐) https://www.wowza.com/uploads/images/Real-Time-Interactive-Apps-WSC-2019.pdf

다른 링크

[2] Streaming Protocols: Everything You Need to Know, www.wowza.com/blog/streaming-protocols

[3] 2019 Video Streaming Latency Report, https://www.wowza.com/blog/2019-video-streaming-latency-report

 

개요

이 책[1]은 오래 전에 읽었던 것이다. 아래 내용들은 읽으면서 기억하고 싶은 내용들을 메모한 것이다 아메리컨 풋볼 코치로서 리더십에 관련된 내용을 정리한 것인데, 팀을 운영하는 사람으로서는 참고할 만한 내용이 많다. 

 

책 내용 요약

I. 리더가 될 준비를 하라

 

Ch1. 열정을 품고 시작하라.

내꿈은 고등학고 풋볼팀 감독이 되는 것이었다. 

 

Ch2. 돈보다 참된 스승을 쫓아라

. 블랑그린 주립대학 로이튼 페리, 노스웨서던 대학 애리 파사지언, 오하이오 주립대 우디 페이스

. 나의 스승들은 누구인가?

 

Ch3. 적당한 때를 기다려라.

. 지식을 최고의 코치가 되는데 사용했다.

 좋은 기회가 오기를 기다려라, 그리고 나머지는 모두 거절하라. 그러면, 상황은 완전히 달라질 것이다.

 

II. 주도권을 확보하라

Ch4. 첫날 부터 기준을 확립하라

리더가 되기 위한 준비! -> 이것이 역사를 바꾼다.

 

Ch5. 몸 담고 있는 곳의 역사를 존중하라

. 사람들에게 모든 것이 달라질 것이라는 찬물을 끼언어야 한다. 하지만, 단체나 조직에게 똑같은 행동을 하면 안된다.

 

Ch6. 정직하라

. 회사 스캔들 "저는 몰랐습니다."

  나중에 알게되도, 그것에 맞게 해야 한다.

. 정직하라

 

Ch7. 기대치를 명확히 제시하라

. 용건이 없는 회의는 소집하지 마라

1. 다른 사람을 존경하라

2. 정직하라

3. 자신의 성적에 책임을 져라

4. 외부인을 들이지 말라

5. 살아도 팀, 죽어도 팀, 팀만이 전부다

 

Ch8. 리더가 되려면 목표를 세워야 한다.

. 위에서 아래가 아니라, 목표를 달성할 책임이 있는 사람에게서 목표가 나와야 한다.

. 리더는 팀원들이 목표에 도달할 수 있도록 도와 주고, 목표가 무엇인지, 그 꿈을 이루기 위해서 무엇을 어떻게 해야할지 "매일" 일깨워야 한다.

. 일년에 한번 리더가 정한 목표를 보여주는 것은 의미가 없다.

. 팀의 목표는 팀원들이 정하며, 그것이 뼈에 사무쳐야 한다.

  팀원들에게 중차대한 책임감을 안겨줘야 한다.

  직원들에게 리더가 될 기회를 주는 것. 그것이 리더가 할일이다.

 

III 내 팀을 만들어라

Ch9. 나를 위해 일하겠다는 사람을 채용하라

. 미시건대에서 데리고 있던 36명의 코치들은 11명이 다른 곳의 감독이 되었다. 새로운 사람을 뽑으려고 하면,나는 그들에게 전화해서 마땅한 사람이 없는지 물어 본다.

. 현재하고 있는 일을 그만 두고 싶어 안달이 난 사람을 채용하는 일은 하면 안된다.

. 다른 곳에서 선수를 스카우트 하는 일보다는 코치를 면밀히 분석하는데 더 많은 시간을 투자해라

 가족들을 만나는 것도 중요하다. 배우자는 내조할 강건함이 있어야 한다.

 

Ch10. 참모진을 최대한 활용하라

. 참모진 만큼은 내 의사대로 끌고 갈 생각이 없다. 스태프 미팅에 참석하면, 너 나할 것없이 고함을 지르고 주먹을 내리치는 광경. 코치 한명을 일부러 골탕 먹일 때도 있다. 가장 좋은 것을 추려내기 위함이다.

. 우리는 우리가 무엇을 할 것인가, 그리고 그것을 어떻게 할 것인가에 대한 의견 일치 없이는 맹세코 단 한번도 필드에 나간 적이 없다는 사실

. 잠시 짬을 내서 주변에 벌어지는 일들을 되는데로 골라 이야기 나누면 인간적인 관계를 맺을 수 있다.

. 일단 책임자가 되면, 나는 채찍, 부관들은 당근이다. 일단 감독이 되면, 코치처럼 행동하면 안된다. 더 이상 보조가 아니다.

. 리더는 보좌진을 불리한 입장에 두게 하면 안된다.

 

Ch 11. 품성으로 사람을 뽑아라

. 재능이 중요하지만, 품성을 보고 선수를 뽑아야 두다리 뻣고 편히 잘 수 있다.

. 가장방문으로 잃는 선수보다 우리를 잃는 유망주가 2배 더 많다.

 

Ch 12 아랫사람을 리더로 키워라

. 그러히 않으면 혼자 모두 떠 맡아야 한다.

. 경찰관이자, 인생의 안내자가 되게 해야 한다.

. 선수들을 차별대우 했다는 점은 굳이 부인하지 않겠다.

 

Ch 13 스타 시스템을 폐지하라

. 사람을 다루는 법

  스타플레이어는 분수를 지키게. 중간 실력은 동기 부여, 실력이 처지는 친구는 성공에 기여하도록

. 당분간 나를 떠날 생각이 없는 선수라면, 최대한 능력을 발휘하게 한다.

 

Ch 14 중간 계층의 사기를 복돋워라

 

Ch 15 누구에게나 기회를 줘라

. 누군가 받아들이기 어려운 결정을 내려야 한다면, 그런 결정을 내릴 수 밖에 없는 이유를 설명해 주어야 한다. 당사자가 달가와 하지않겠지만, 이해해줄 것이고, 설명을 들은데에 대해서 고마운 마음을 품을 것이다. 방법은 간단하다. 진실을 이야기 해주는 것이다.

. 팀이 가진 능력을 최대한 이끌어 내려면, 별 능력이 없어 보이는 사람이라도 무엇인가 보여줄 수 있는 기회를 주어야 한다.

 

Ch 16 각자의 역할을 주고 가치를 인정하라

. 우리가 모든 선수들에게 준것은 시간과 관심.

 

Ch 17 불가피한 해고를 하려면 재빨리 단행하라.

. 단 한시간도 1분도 허투루 다루면 안된다.

 어떤 직업도 수련 과정이 필요하다. 그렇기 때문에 리더의 궁극적인 책임은 아랫 사람을 훈련시키는 것이다.

. 훈련을 계획 할 때, 최종 결과물을 생각해야 한다.

 

Ch 18 철저한 준비 태세를 갖추어라

.Staff, 선수, 연습, 모니터링, 연습 경기

  -> 25초라는 시간. 경기당 100, 1년에 총 12경기

  -> 미리 조직화 하고 연습시키고 완전히 체득케 하는 일이다.

  -> 훈련은 최대한 실전에 가깝게 설계해야 한다. 일어나지 않을 것 같은 상황도 준비하고 훈련한다.

 

IV 문제는 신속하게 해결하라

 

Ch 19 남의 말을 경청하라

. 남의 말을 경청하지 않는 사람은 리더가 될 수 없다.

.내게 말하는 사람에게 귀를 기울이지 않는 것은 그 사람에게 나는 당신이 필요 없다라는 메시지를 전달하는 것이다.

 

Ch 20 아랫사람을 철저히 파악하라

.두려움을 버리고 선수들의 라커룸, 직원들의 현장속으로 걸어들어가야 한다.

.아랫사람을 파악

  - 어디 출신인지, 어떤 목표를 지향하는지?

  - 그들의 장점, 약점은 무엇인지? 

  - 하다 못해 그들이 입는 옷의 단추가 어떻게 생겼는지?

 

Ch 21 밤새 고민하지도 앙심을 품지도 말라

. 인사 문제를 오래 끌지 마라. 잘못되었다며 나중에 사과하면 된다.

 

V 중대한 고비를 정면으로 맞서라.

 

Ch 22 철저히 무너뜨리고 다시 일으켜 세워라

. 풀이 죽어 있을 때 아무 소리 하지 않는다

 기분이 고조 되어 있을 때, 찬물을 끼얹는다.

 약팀도 부풀렸다. 약체일수록 더 부플렸다.

 

Ch 23 혁신보다 제대로 된 실천을 강조하라

. 모든 것은 실천으로 귀결된다. 훌륭한 아이디어 보다도...

. 기본기가 잡혀 있지 않으면 구급기술도 할 수 없다.

  -> 지열대에 물건이 가지런히 놓여 있는지?

  -> 잘 팔리는 물건은 떨어지지 않게.

  -> 인사를 잘한다.

 

Ch 24 연설 대본은 찢어 버려라

. 연설을 잘하고 싶다면, 열정을 품고 있는 주제를 말해야 한다.

. 대본은 찢어 버려라. 마음에서 우러난 이야기를 하는 편이 백배 낫다.

 

Ch 25 현실에 기반을 두고 작전을 변경하라

. 같은 일을 고집하면 매번 같은 결과를 얻을 뿐이다. 다른 결과를 원한다면 다른 일을 해야 한다. 함게 일하는 보좌진의 말을 경청하고 기존의 작전을 변경하는 것은 절대 나약함의 상징이 아니다. 실패하는 작전을 고수하는 것이야 말로 나약함의 상징이다.

 

Ch 26 위기를 기회로 바꿔라

. "Sudden Change" 공이 상대에게 넘어 갔을 때, 좌절하지 않고 상대의 피를 말릴 수 있는 기회로 여겼다.

 

Ch 27 포화 속에서도 중심을 잃지 마라

.선수들의 눈과 귀가 열려 있을 대 최대한 활용해야 한다.

 실재 고객과 마주할 때 한참 중압감에 시달릴 때 몇미리는(??) 직원이 사회 생활을 하는 내내 중요한 지침이 되어 줄 것이다.

. 손수 모범을 보이는 일 또한 중요하다.

 

Ch 28 기본을 다시 세워라

. 감독을 오래 하다 보면, 한번쯤 실망스러운 해를 겪어야 하는 때도 온다.

. 문제의 핵심을 파고 들어 고쳐야 한다.

. 과거에 정립했던 기본 원칙에 맞춰 조직의 잘못된 면을 고쳐가면 간단하다.

 

Ch 29 세간의 비평은 무시하라

. 중요한 것은 조직원들의 생각이다.

 

돌아 보며...

이 책에는 인생 경험이 녹아있다. 아마도 인간적이며, 카리스마 넘치는 리더가 있다. 다분히 개인 특징이 있을 수도 있다고 생각한다. 내가 나로서 받아 들일 수 있는 부분에 대해서 좀 더 고민해 봄직하다.

 

참고문헌

[1] 보 스켐베클러, 존 U. "베이컨, 전설의 리더, 보", 서돌, 2008년 (원제 : Bo's lasting lessons)

+ Recent posts