UE5) 픽셀스트리밍 구성
아이피를 가려야 하는것이 맞지만, 사무실이 이전했으므로 저 아이피로 접속해봐야 아무것도 없다.
구성
- 클라이언트에게 화면을 스트리밍 해 주는 시그널링 서버
- 시그널링 서버에 클라이언트를 연결(분배)해 주는 매치메이커 서버
반드시 TURN서버를 같이 사용해야 합니다.
공개 TRUN서버를 이용하면 매우 불안정하기 때문에, TURN 서버를 실행시켜서 붙여줘야 합니다.
단계
- 매치메이커 서버를 실행시킴
- 각 포트정보와 함깨 설정된 시그널링 서버를 실행하여 매치메이커와 연결
- cmd로 시그널링 서버를 실행
- 파라미터로 전달해야 할 것
- HttpPort
- StreamerPort
- SFUPort
- 90번 포트는 매치메이커가 사용중입니다.
- 그 외 나머지 자유롭게 설정해주면 됩니다.
- 게임을 특정 시그널링 서버와 연결함
- 실행 파라미터로 다음을 전달함
- -PixelStreamingIP=localhost -PixelStreamingPort=8890
- 추가로 다음 파라미터를 전달해도 좋음
- -AudioMixer(이 옵션이 없으면 사운드 출력이 없습니다)
- -RenderOffScreen(드로우 자원을 아낍니다)
- 실행 파라미터로 다음을 전달함
- 웹으로 매치메이커에 접속하면 매치메이커가 비어있는 시그널링서버로 사용자를 할당함.
테스트
- 매치메이커를 실행
- 시그널링 실행
파라미터를 같이 전달해서 실행하고, 매치메이커에 정상적으로 접속되면 가장 아래와 같은 메시지가 출력됨. -
스트리밍할 게임 실행
파라미터로 시그널링서버의 포트번호를 전달하면 됨.
성공적으로 실행되면, 스트리머가 연결되었다고 시그널링에 출력됨.
추가로 매치메이커에서도 스트리머가 연결된 시그널링이 사용 가능하다 출력함. -
추가 스트리밍 실행
여러 클라이언트가 접속해도 문제가 되지 않는지 확인하기 위해서,
2~3번과정을 통해서 시그널링을 하나 더 매치메이커에 연결함. - 웹으로 매치메이커에 접속
매치메이커 주소와 포트번호 (여기서는 매치메이커 포트번호가 90번임)로 접속
클라이언트가 접속하면 매치메이커에서 알아서 다음 시그널링서버의 포트를 준비한다. - 결과
매치메이커로 접속해서 서로 다른 시그널링서버로 자동적으로 리다이렉트됨.
사설 TURN서버 연결하기
Start_SignallingServer.ps1을 메모장으로 열고,
$peerConnectionOptions = "{ \""iceServers\"": [{\""urls\"": [\""stun:" + $global:StunServer + "\""]}] }"
이 부분을
$peerConnectionOptions = "{ \""iceServers\"": [{\""urls\"": [\""stun:" + $global:StunServer + "\"",\""turn:서버아이피:포트번호\""], \""username\"":\""PixelStreamingUser\"", \""credential\"": \""AnotherTURNintheroad\""}] }"
turn 서버의 아이피와 포트번호를 직접 지정하도록 수정
파워쉘로 Start_SignallingServer를 실행할 때, 파라미터 전달은 cmd로 전달하는것과 같음.
기타
파워쉘로 실행시, “이 시스템에서 스크립트를 실행할 수 없으므로 ps1 파일을 로드할 수 없습니다.”
라는 오류가 출력되는 경우 실행권한을 변경해주어야 함
- 파워쉘을 관리자 권한으로 실행
- 다음 명령어 입력
Set-ExecutionPolicy RemoteSigned
- 예(Y) 입력