# この記事は
GCP で VM インスタンスを立てて、そこで Satisfactory サーバーを動かす方法を書いた手順書です。
# 方針
- とにかく手を抜く
# 最低限ワールドに入れるようになる所まで
## プロジェクトの作成まで
- GCP のコンソールから、新しいプロジェクトを作成する。
- プロジェクト名は Satisfactory にしておく。
## インスタンスの作成まで
- GCP のコンソールから VM インスタンスを有効化
- 「VM インスタンス」から「インスタンスを作成」
- 「名前」を「game-server」に変更
- 「リージョン」を「asia-northeast1(東京)」に変更
- 「マシンタイプ」を「e2-standard-4 (4 vCPU、 16 GB メモリ)」に変更
- 「ブートディスク」の「変更」をクリック
- 「ネットワークタグ」を「satisfactory」に変更
- 「作成」をクリック
## SSH ログインまで
## Satisfactory サーバーのインストールまで
- まずはパッケージ更新
sudo apt update sudo apt -y upgrade
- multiverse リポジトリを有効化
sudo add-apt-repository multiverse sudo dpkg --add-architecture i386 sudo apt update
- steamcmd を入れる
sudo apt install -y lib32gcc-s1 steamcmd
- steamcmd プロンプトに入る
steamcmd
- 匿名ユーザーでログイン
login anonymous
- Satisfactory サーバーをインストール
app_update 1690800 validate
- steamcmd プロンプトを抜ける
exit
## Satisfactory サーバーを起動するところまで
- tmux をインストール
sudo apt -y install tmux
- tmux セッションに入る
tmux
- Satisfactory サーバーを起動
Steam/steamapps/common/SatisfactoryDedicatedServer/FactoryServer.sh
## 必要なポートを開けるところまで
## 動作確認取るところまで
- CGP コンソールの「VM インスタンス」で「外部 IP」をコピー
- satisfactory を起動
- メインメニューで「サーバー管理」を選択
- 「サーバー追加」を選択
- さっきコピーした「外部 IP」を「アドレス」に入力して「確認」をクリック
# 終盤も快適にプレイできるように設定する所まで
## チューニング要る?
- 少なくとも、オートセーブだけは絶対にやったほうが良い
- オートセーブ中の移動や作業はロールバックされてしまう
- 高頻度のオートセーブ=高頻度の作業中断
- ウザくならない程度にオートセーブ頻度は下げたほうが良い
- 設定ファイルを書き換えてのチューニングは終盤までにはやりたい
- ゲーム終盤(100h~)までいくと、プレイに支障が出るレベルで重たい
## オートセーブの間隔を 30 分に変更
- インゲームのサーバー管理メニューから「コンソール」タブを開く
FG.AutosaveInterval 1800
を入力
## クライアントのネットワーク帯域制限を撤廃
- クライアント PC の
%localappdata%\FactoryGame\Saved\Config\WindowsNoEditor\
の各設定ファイルを書き換える - ※同名の変数が最初からある場合は上書き、ない場合は追記 - Engine.ini ``` [/Script/Engine.Player] ConfiguredInternetSpeed=104857600 ConfiguredLanSpeed=104857600
[/Script/OnlineSubsystemUtils.IpNetDriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
[/Script/SocketSubsystemEpic.EpicNetDriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
```
- Game.ini
```
[/Script/Engine.GameNetworkManager]
TotalNetBandwidth=104857600
MaxDynamicBandwidth=104857600
MinDynamicBandwidth=10485760
```
- Scalability.ini
```
[NetworkQuality@3]
TotalNetBandwidth=104857600
MaxDynamicBandwidth=104857600
MinDynamicBandwidth=10485760
```
- 書き換えた各ファイルを「読み取り専用」にする
## サーバーのチューニング
- サーバーインスタンスの
~/Steam/steamapps/common/SatisfactoryDedicatedServer/FactoryGame/Saved/Config/
の各設定ファイルを書き換える - ※同名の変数が最初からある場合は上書き、ない場合は追記 - Game.ini ``` [/script/engine.gamenetworkmanager] TotalNetBandwidth=104857600 MaxDynamicBandwidth=104857600 MinDynamicBandwidth=104857600 MAXPOSITIONERRORSQUARED=32.00f MoveRepSize=512.0f CLIENTADJUSTUPDATECOST=512.0f bMovementTimeDiscrepancyDetection=false bMovementTimeDiscrepancyResolution=false bMovementTimeDiscrepancyForceCorrectionsDuringResolution=false MAXCLIENTUPDATEINTERVAL=2.20f MaxMoveDeltaTime=0.700f MaxClientSmoothingDeltaTime=2.20f MaxClientForcedUpdateDuration=1.0f ClientNetSendMoveDeltaTime=0.0332 ClientNetSendMoveDeltaTimeStationary=0.0664 ClientNetSendMoveThrottleOverPlayerCount=99 ServerForcedUpdateHitchThreshold=2.800f
[/script/engine.gamesession]
MaxPlayers=10
```
- Engine.ini
```
[CrashReportClient]
bAgreeToCrashUpload=false
bImplicitSend=False
[Engine.ErrorHandling]
bPromptForRemoteDebugging=False
bPromptForRemoteDebugOnEnsure=False
[/script/onlinesubsystemutils.ipnetdriver]
MaxInternetClientRate=104857600
MinInternetClientRate=104857600
MaxClientRate=104857600
MinClientRate=104857600
LanServerMaxTickRate=15
NetServerMaxTickRate=15
ConnectionTimeout=100.0
InitialConnectTimeout=200.0
[SystemSettings]
t.MaxFPS=15
AllowAsyncRenderThreadUpdates=1
AllowAsyncRenderThreadUpdatesDuringGamethreadUpdates=1
net.UseRecvMulti=0
net.RecvMultiCapacity=8192
net.IpNetDriverUseReceiveThread=0
net.IpConnectionUseSendTasks=1
net.IpNetDriverReceiveThreadQueueMaxPackets=8192
net.MaxNetStringSize=67108864
net.MaxRPCPerNetUpdate=8
tick.AllowAsyncComponentTicks=1
tick.AllowConcurrentTickQueue=1
tick.AllowAsyncTickDispatch=1
tick.AllowAsyncTickCleanup=1
[/script/engine.player]
ConfiguredInternetSpeed=104857600
ConfiguredLanSpeed=104857600
[/script/socketsubsystemepic.epicnetdriver]
MaxClientRate=104857600
MaxInternetClientRate=104857600
[/script/engine.engine]
bSmoothFrameRate=true
bUseFixedFrameRate=false
SmoothedFrameRateRange=(LowerBound=(Type=Inclusive,Value=5.000000),UpperBound=(Type=Exclusive,Value=15.000000))
MinDesiredFrameRate=8.000000
FixedFrameRate=15.000000
NetClientTicksPerSecond=15
[/script/engine.garbagecollectionsettings]
gc.MaxObjectsNotConsideredByGC=476499
gc.SizeOfPermanentObjectPool=100378488
gc.ActorClusteringEnabled=True
gc.BlueprintClusteringEnabled=True
[/script/engine.streamingsettings]
s.EventDrivenLoaderEnabled=True
s.AsyncLoadingThreadEnabled=True
[Core.System]
+Suppress=Scriptwarning
+Suppress=Error
+Suppress=Scriptlog
+Suppress=Warning
[Core.Log]
LogPluginManager=all off
LogOnlineIdentity=all off
LogOnlineSession=all off
LogMemory=all off
LogPakFile=all off
LogTemp=all off
LogLinker=all off
LogOnline=all off
LogOnlineGame=all off
LogAnalytics=all off
LogConfig=all off
LogInteractiveProcess=all off
LogInput=all off
LogOnlineEntitlement=all off
LogOnlineEvents=all off
LogOnlineFriend=all off
LogOnlinePresence=all off
LogOnlineTitleFile=all off
LogOnlineUser=all off
Global=off
```
- 書き換えた各ファイルを「読み取り専用」にする
chmod -w Game.ini chmod -w Engine.ini