Satisfactoryマルチプレイをするのに自分のPCを点けっぱなしにしたくなかったのでGoogle Cloudを利用してサーバーを立ててみた。
サービスの選定
Wikiによれば、Satisfactoryの専用サーバーの推奨スペックはメモリ16GBと新しめのCPUで、コア数よりシングルコア性能が重要。
検討した主なサービスは以下の通り。
サービス | プラン | 月額(円換算) | 時間課金 | ゲームの設定 |
ConoHa | 16GB | 15730円 | ○ | × |
さくらインターネット | 16GB | 14117円 | × | × |
Google Cloud | e2-standard-4 | 17790円 | ○ | × |
G-Portal | 10Slot | 2755円 | × | ○ |
GTX Gaming | 10Slot 12GB | 3518円 | × | ○ |
上3つは汎用的な(仮想)サーバーを借りられるサービスで、下2つは特定のゲームタイトルに特化した設定済みのサーバーを借りられる。
最終的に、Google CloudのCompute Engine上でSatisfactoryを動かすことにした。
G-portal
V-Risingの公式サーバーを提供していることで知った。Valheimのサーバーを立てて遊んだことがある。ただしプレイヤーが集まった時だけラグがひどかった。サービス側が悪いのかゲームが悪いのかはイマイチ分からなかった。Slot(最大接続人数)で値段が決まる方式だが、サーバースペックが不透明。
GTX Gaming
Redditのコメントで名前が挙がっていた。Slotを指定するほか、オプションでメモリを多めにできる。24時間以内のキャンセルで返金されるポリシーだったので今回試したがうまくいかず、返金を申請したが対応が悪い。
さくらのVPS
時間ごとの課金プランが無いっぽく、短期のゲームサーバーには向かない。
サーバーのセットアップ
Wikiに詳細な手順が乗っているのでこれを辿ればよい。インスタンスを作ったりファイアウォールを設定するのはGoogle特有の設定があるが、ヘルプも充実していてここは詰まらなかった。
自動シャットダウンとDiscord botによるサーバー起動
今回は無料トライアルでなんとかなるので自己満足だが、Redditを参考に高いインスタンスをゲーム中以外止めて節約するようにした。
auto-shutdown.shを改変して最後をシャットダウンではなくSuspendに変えた。このコマンドを正常に動かすにはかなり苦労した。ブラウザからssh接続すると1時間の間は認証が通った状態になるのがミソで、スクリプトがその時間外でも認証をするには手順を踏む必要があった:
- サービスアカウントを新たに作り、権限を与える(参考)
- 新しいサービスアカウントをVMに紐付ける
- アクセスキーを生成してVMに渡す
- gcloud auth activate-service-account --key-file=アクセスキー を他のgcloudコマンドの前に実行する
DiscordのBotは、discord.jsを使って作った。Botのアカウントはかなり前に作ったものを流用できた。このBotは無料枠のe2-microで動いていて、特定のコマンドを受信するとResumeコマンドをSatisfactoryが動くインスタンスに送る。