[UE5]PixelStreamingのパラメータ設定方法
はじめに
PixelStreamingDemoをAWSに実装する記事を書いた後、1ヶ月程集中してPixel Streamingに向き合ってきて、Matchmakerやら起動オプションやらがなんとなくわかってきたので備忘録 + Advent Calenderに参加という一石二鳥の目的で記事にします。
全体構成図
PixelStreamingプラグインに含まれるMatchmakerを使用して、各ユーザーに個別のUEアプリ体験を提供する際の構成図例です。この例ではSignaling ServerとUEアプリを同じサーバーに配置しています。
Matchmakerの起動
Matchmakerのフォルダを見てみましょう。
公式ページをみると、Signaling Serverを起動する前にrun.bat
を実行してMatchmakerを起動せよとのこと。
ではrun.bat
の中を見てみましょう。
:: Copyright Epic Games, Inc. All Rights Reserved.
@echo off
pushd %~dp0
call setup.bat
title Matchmaker
::Run node server
node matchmaker %*
popd
pause
setup.bat
を実行した後にmatchmaker.js
を呼び出し、run.bat
実行時の引数をmatchmaker.js
に全て渡していますね。
また、matchmaker.js
の中で、config.json
を読み取る記述があります。
{
"HttpPort": 80,
"UseHTTPS": false,
"MatchmakerPort": 9999,
"LogToFile": true
}
config.json
の値を書き換えるか、run.bat
実行時に引数を指定することでconfig.json
の値を上書きすることができます。
run.bat --HttpPort 90 --LogToFile false
Signaling Serverの起動
前回書いた記事でも軽く触れているので参考に。
起動方法は公式ページにも記載してあるので省きます。
ここでもconfig.json
を見てみましょう。
{
"UseFrontend": false,
"UseMatchmaker": false,
"UseHTTPS": false,
"UseAuthentication": false,
"LogToFile": true,
"LogVerbose": true,
"HomepageFile": "/Public/player.html",
"AdditionalRoutes": {},
"EnableWebserver": true,
"MatchmakerAddress": "",
"MatchmakerPort": "9999",
"PublicIp": "localhost",
"HttpPort": 80,
"HttpsPort": 443,
"StreamerPort": 8888,
"SFUPort": 8889
}
ここでもStart_SignallingServer.ps1
実行時に引数を指定することでconfig.json
の値を上書きすることができます。
デフォルトでUseMatchmaker
はfalseになっているので、trueに直さなければなりません。
UseMatchmaker
をtrueにした場合、MatchmakerAddress
とMatchmakerPort
を指定する必要があります。
MatchmakerAddress
は127.0.0.1、MatchmakerPort
は9999がデフォルトです。
./Start_SignallingServer.ps1 --UseMatchmaker true --MatchmakerAddress 0.0.0.0 --MatchmakerPort 9999 --PublicIp 0.0.0.1 --HttpPort 88 --StreamerPort 8988 --SFUPort 8989
UEアプリの起動
公式のPixelStreamingリファレンスにある設定項目は、UEアプリ起動時に引数として渡すことで変更可能です。
ただ公式ページが更新されていないのか、書いてある通りに引数を指定しても変更されないことがあるので、プラグインの中身を見て正しい記述をしましょう。
設定項目はエンジンフォルダの
~\Engine\Plugins\Media\PixelStreaming\Source\PixelStreaming\Private
のSettings.cpp
に記述されています。
例として、PixelStreamingのfpsを変更してみましょう。
Settings.cpp
では次のように書かれています。
デフォルトでは60fpsですね。
プロジェクトによりますが、60fpsもいらない場合があります。アクション系のゲームでもない限り、30fpsで十分でしょう。その方がダウンロードするユーザーのデータ使用量にも、提供者側のお財布にも優しくなります。
~.exe -AudioMixer -PixelStreamingIP=0.0.0.1 -PixelStreamingPort=8888 -PixelStreamingWebRTCFps=30
引数の書き方としては、次の画像のように赤枠で囲った部分をそのまま引数として指定すれば良いみたいです。
ここで注意したいのは、値はスペースではなく=
で指定し、先頭のハイフンは1つです。
MatchmakerやSignalingServerとは違うので注意しましょう。
まとめ
書いてて気づいたが、SignalingなのかSignallingなのかわからなくなった。
調べたところどっちでも良いそうで、アメリカはSignaling、イギリスはSignallingを使う人が多いらしい。(Epicってアメリカの会社じゃなかったか?)
ともあれPixelStreamingに関しての調査は一旦終わりなのと、 UE Advent Calenderにも参加できたという自分的に節目のような感じなので、新年からはまた他の事をやってみますかね。
明日のカレンダー3は@daria_siebenさんの「ダメージ計算周りのパラメーターをGameplayEffectで設定していたのをDataAssetで設定するように移行した話」です。
Discussion