본문 바로가기

remote-craft

RemoteCraft 08 - Worker

2021.07.19 - [remote-craft] - RemoteCraft 03 - 계획 01 + 비디오 파이프라인 이야기... (작성중)

 

RemoteCraft 03 - 계획 01 + 비디오 파이프라인 이야기... (작성중)

2021.07.13 - [projects.] - RemoteCraft 01 - 계획 00 RemoteCraft 01 - 계획 00 한번도 안해본 기술은 자료를 잘 모아야 계획 및 설계를 하기가 쉽다... 행복회로 돌리는 중.. N유저 N게임 인스턴스 지원 간편..

hellojai.tistory.com


Worker!

비디오 파이프라인에 이어 Worker가 작동하는 전체적인 구조에 대해 좀 더 자세히 그려보고 싶다.

워커는 다음과 같은 구성으로 설계되어 있다:

Worker전체 구조

  1. Lobby와 Websocket통신을 책임지는 LobbyClient
  2. Room : 게임 인스턴스 +  WebRTC세션을 관리 함
  3. Video, Audio Relay : 게임에서 출력되는 미디어 데이터(비디오, 오디오)를 인코딩하여 WebRTC세션으로 전달
  4. WebRTC 세션 : 유저로 부터 입력 데이터를 게임 인스턴스에 전달 + Video, Audio Relay에서 나오는 미디어 데이터를  유저에게 스트리밍
  5. LibretroCore: cgo바인딩을 통해 띄운 LibretroCore. libretroAPI 를 통해 Go코드와 통신한다.

Video Relay 구조

Video Relay 구조


Audio Relay 구조

Audio Relay 구조

 


참고 및 출처:

Opus 인코더 Go 바인딩 : https://github.com/hraban/opus

H.264 인코더  Go 바인딩 : https://github.com/gen2brain/x264-go

H.264 인코딩 관련 정보 : https://trac.ffmpeg.org/wiki/Encode/H.264

VP8 인코더 Go 바인딩 : https://github.com/poi5305/go-yuv2webRTC

yuv 컬러 인코더  Go 바인딩 : https://github.com/poi5305/go-yuv2webRTC