STSS 공개 — 게임 스트리밍 전 네트워크 상태를 미리 확인하는 도구

STSS는 Apollo, Sunshine, Moonlight, Artemis 같은 게임 스트리밍을 시작하기 전에 Host PC와 Client 사이의 RTT, Packet Loss, 전송 성능을 측정해 권장 시작 비트레이트를 확인하는 네트워크 사전 진단 도구입니다.

STSS 공개 — 게임 스트리밍 전 네트워크 상태와 권장 비트레이트 미리 확인하기

Apollo나 Sunshine을 이용해서 외부에서 게임 스트리밍을 하다 보면 가장 먼저 궁금해지는 것이 있습니다.

내 인터넷 환경에서 과연 어느 정도까지 안정적으로 스트리밍할 수 있을까?

인터넷 속도 측정 사이트에서 100Mbps, 500Mbps 같은 숫자를 확인할 수는 있지만 실제 게임 스트리밍에서 중요한 것은 단순 최대 속도만은 아닙니다.

지연시간도 중요하고,

패킷 손실도 봐야 하고,

실제로 Host PC와 Client 사이에서 어느 정도의 데이터를 안정적으로 주고받을 수 있는지도 중요합니다.

저도 Apollo와 Artemis를 계속 사용하다 보니 이런 부분을 게임을 실행하기 전에 조금 더 쉽게 확인할 방법이 있으면 좋겠다는 생각이 들었습니다.

그래서 만들어본 것이 **STSS(Stream Test Server Stackon)**입니다.

현재 공개 버전은

STSS v0.01.002 Public Alpha

입니다.

아직 초기 공개 버전이지만 실제로 사용할 수 있는 단계까지는 왔다고 판단해서 공개해봅니다.

STSS는 무엇을 하는 프로그램인가?

STSS는 Apollo, Sunshine, Moonlight, Artemis 같은 게임 스트리밍 프로그램 자체가 아닙니다.

실제 게임 화면을 전송하는 프로그램도 아닙니다.

게임 스트리밍을 시작하기 전에

Host PC와 Client 사이의 네트워크 상태를 먼저 확인하는 사전 진단 도구

라고 생각하면 됩니다.

Host PC에 STSS를 설치하고,

외부에 있는 Client에서 웹페이지에 접속한 다음 테스트를 실행합니다.

테스트가 끝나면 현재 네트워크 환경에서 어느 정도의 비트레이트부터 시작하면 좋을지 참고할 수 있습니다.

권장 시작 비트레이트는 선샤인,아폴로/아르테미스,문라이트의 추천 값입니다.

어떤 것을 확인할 수 있나?

현재 STSS에서는 다음과 같은 항목을 확인합니다.

  • WebRTC Direct P2P 연결 가능 여부
  • RTT(지연시간)
  • Packet Loss
  • 단계별 데이터 전송 성능
  • 해상도/FPS 조건별 권장 시작 비트레이트
  • 측정 결과를 기반으로 계산한 네트워크 안정 상한

게임 스트리밍에서 단순 다운로드 속도보다 이런 값들이 중요한 이유는 이전에도 몇 번 경험했습니다.

인터넷 속도가 충분히 빨라도 지연이나 패킷 손실이 크면 실제 플레이에서는 끊김이나 입력 지연으로 느껴질 수 있습니다.

반대로 인터넷 상품의 최대 속도가 아주 높지 않더라도 안정적으로 일정한 데이터를 주고받을 수 있다면 1080p60 정도는 충분히 사용할 수도 있습니다.

제가 실제로 회사의 100Mbps 회선에서 집의 Odin2 Portal로 1080p60 게임 스트리밍을 1년 넘게 사용한 것도 이런 경우였습니다.

사용방법은 간단하게 만들었습니다

처음에는 테스트를 위한 프로그램이라 설정이 복잡해질 수도 있었는데, 가능하면 별다른 설정 없이 사용할 수 있는 방향으로 만들고 있습니다.

먼저 게임을 스트리밍할 Host PC에 STSS를 설치하고 실행합니다.

실행하면 백그라운드에서 동작하고 Windows 트레이에 STSS 아이콘이 나타납니다.

트레이 아이콘에서

Host Code 보기

를 선택하면 현재 PC에서 사용할 Host Code를 확인할 수 있습니다.

이제 외부 Client 기기에서 브라우저를 열고 아래 주소로 접속합니다.

https://stss.stackon.kr

여기에 Host Code를 입력합니다.

연결되면 테스트할 해상도와 FPS 등을 선택하고 테스트를 시작하면 됩니다.

테스트가 끝나면 현재 측정 결과와 함께 권장 시작 비트레이트와 네트워크 상태를 확인할 수 있습니다.

Gateway가 테스트 데이터를 전부 중계하는 구조는 아닙니다

STSS를 만들면서 신경 쓴 부분 중 하나입니다.

외부에서 웹페이지를 사용한다고 하면 모든 테스트 데이터가 제 서버를 거쳐가는 것으로 생각할 수도 있습니다.

현재 STSS는 가능한 경우 WebRTC Direct P2P 연결을 사용합니다.

Gateway는 Host와 Client가 서로 연결될 수 있도록 필요한 정보를 전달하는 역할을 하고, 실제 고용량 테스트 데이터는 Direct 연결이 성립하면 Host PC와 Client 사이에서 직접 전송됩니다.

WebRTC에서 STUN은 두 Peer가 직접 연결할 수 있도록 외부 주소와 NAT 환경을 파악하는 데 사용되고, TURN은 직접 연결이 어려운 환경에서 서버가 트래픽을 대신 중계하는 방식입니다.

현재 STSS Public Alpha는 TURN Relay를 사용하지 않습니다.

그래서 일부 환경에서는 연결이 안 될 수도 있습니다

TURN을 사용하지 않는다는 것은 장점도 있지만 한계도 있습니다.

현재 STSS는

Direct P2P + STUN

연결을 기준으로 테스트합니다.

일반적인 가정용 인터넷 환경에서는 Direct 연결이 가능한 경우가 많지만,

회사 네트워크,

특수한 NAT 환경,

강한 방화벽 정책,

일부 통신사 네트워크

등에서는 Direct P2P 연결이 성립하지 않을 수도 있습니다.

TURN은 이런 상황에서 트래픽을 Relay 서버를 통해 전달하기 위한 방식입니다. WebRTC에서도 직접 연결이 불가능할 때 TURN Relay를 사용할 수 있습니다.

현재 Public Alpha에는 이 기능이 없기 때문에 Direct 연결이 되지 않는 환경에서는 테스트가 진행되지 않을 수 있습니다.

다만 여기서 한 가지 주의할 부분이 있습니다.

STSS에서 Direct P2P 연결이 실패했다고 해서 Apollo나 Sunshine 스트리밍 자체가 무조건 불가능하다는 의미는 아닙니다.

STSS가 사용하는 테스트 연결 방식과 실제 게임 스트리밍 프로그램의 네트워크 구성은 완전히 동일하지 않기 때문입니다.

STSS 결과는 어디까지나

현재 환경에서 STSS의 Direct P2P 테스트 경로가 성립하는지 확인한 결과

로 보는 것이 맞습니다.

실제 게임 스트리밍 속도를 보장하는 도구는 아닙니다

이 부분도 중요합니다.

STSS에서 좋은 결과가 나왔다고 해서 실제 게임에서도 반드시 같은 결과가 나온다는 의미는 아닙니다.

STSS가 확인하는 것은 주로 네트워크 상태입니다.

실제 게임 스트리밍에서는 여기에 더 많은 요소가 추가됩니다.

GPU의 영상 인코딩 성능,

H.264 / HEVC / AV1 같은 코덱,

Client 기기의 영상 디코딩 성능,

Wi-Fi 상태,

디스플레이 출력 지연,

게임 자체의 프레임 상태

등도 영향을 줍니다.

즉 STSS에서

1080p60 / 권장 시작 비트레이트 25Mbps

같은 결과가 나왔다고 해서 실제 게임에서도 반드시 25Mbps가 최적이라는 뜻은 아닙니다.

일단 그 정도에서 시작해보고 실제 Apollo/Sunshine과 Moonlight/Artemis 환경에서 조금씩 조절하는 용도입니다.

이전에 작성한 게임 스트리밍 비트레이트 글에서도 이야기했지만 비트레이트는 높은 값이 항상 좋은 것도 아닙니다.

네트워크가 안정적으로 감당할 수 있는 범위 안에서 화질과 지연 사이의 적당한 값을 찾는 것이 중요합니다.

개인정보와 네트워크 정보는?

외부 서버를 이용하는 프로그램인 만큼 이 부분도 공개할 필요가 있다고 생각했습니다.

STSS Gateway에는 Host와 Client를 연결하고 테스트를 진행하기 위해 일부 정보가 전달될 수 있습니다.

대표적으로

Host Code,

STSS 버전,

WebRTC 연결을 위한 SDP/ICE 정보,

선택한 해상도와 FPS,

RTT와 Packet Loss 등의 진단 정보

등입니다.

반대로 현재 구조에서 Gateway로 전달되지 않는 정보는 다음과 같습니다.

  • 실제 게임 화면
  • 영상 및 음성
  • 사용자 파일
  • Direct P2P로 전송되는 고용량 네트워크 테스트 데이터
  • 브라우저에 저장한 실사용 확인 기록

그리고 Host PC에 생성되는

Host Code와 인증 정보는 같은 개념이 아니기 때문에 stss_identity.json 자체를 공유할 필요는 없습니다.

Public Alpha입니다

현재 공개 버전은

STSS v0.01.002 Public Alpha

입니다.

기본적인 연결부터 테스트 완료, 결과 확인까지는 실제 외부 환경에서 테스트해봤지만 아직 처음 공개하는 버전입니다.

사용자의 공유기,

통신사,

회사 네트워크,

방화벽,

브라우저 환경에 따라 제가 테스트하지 못한 문제가 생길 가능성도 있습니다.

특히 현재는 TURN Relay가 없는 Direct P2P 중심 구조라 네트워크 환경에 따라 아예 연결되지 않는 경우도 있을 수 있습니다.

이 부분은 앞으로 실제 사용 결과를 보면서 필요성을 판단해보려고 합니다.

처음부터 모든 기능을 넣기보다는 제가 실제로 필요했던 기능부터 하나씩 추가하고 있습니다.

결국 궁금했던 것은 이것이었습니다

STSS를 만들게 된 이유는 사실 단순합니다.

게임 스트리밍을 설정할 때마다

“이 네트워크에서 비트레이트를 얼마나 줘야 하지?”

“현재 네트워크는 얼마까지 가능하고 안정적인가?”

라는 생각을 했기 때문입니다.

속도 측정 사이트의 결과만 보고 결정하기도 애매하고,

게임을 켜고 비트레이트를 하나씩 바꿔가며 확인하는 것도 번거로웠습니다.

그래서 실제 Host PC와 Client 사이를 테스트해서 시작점을 하나 알려주는 도구가 있으면 편할 것 같았습니다.

STSS가 모든 게임 스트리밍 문제를 해결해주는 프로그램은 아닙니다.

하지만 Apollo나 Sunshine을 처음 설정하거나,

외부에서 Moonlight나 Artemis를 사용하려고 할 때

“일단 내 네트워크 상태가 어느 정도인지”

확인하는 용도로는 꽤 유용하게 사용할 수 있지 않을까 생각합니다.

아무튼 이제 Public Alpha입니다.

실제 여러 네트워크 환경에서 사용되기 시작하면 예상하지 못했던 문제도 많이 나올 것 같습니다.

그런 부분도 하나씩 확인하면서 계속 수정해볼 생각입니다.

*클라이언트 접속 웹페이지

https://stss.stackon.kr

*호스트pc용 프로그램 다운로드

https://drive.google.com/file/d/1t92KvhPs9akcgwPCJlSPp06A-pU1tVdA/view?usp=sharing

*관련글

게임 스트리밍 비트레이트, 높으면 무조건 좋을까?

100Mbps 인터넷으로 1080p 60fps 게임 스트리밍 해보니

Sunshine + Moonlight에서 Apollo + Artemis로 바꾸고 1년 넘게 사용해보니

STSS로 Host PC와 Client 사이의 게임 스트리밍 네트워크 상태와 권장 비트레이트를 테스트하는 모습

댓글 남기기