Google CloudにSatisfactoryのサーバーを置いた

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

時間ごとの課金プランが無いっぽく、短期のゲームサーバーには向かない。

ConoHa

Factorioのサーバーを立てて遊んだことがある。特に悪い点はない。Google Cloudにしたのは有名だからと、入っているDiscordで運用されているbotのホスト先がGoogle Cloudだったから。

Google Cloud

vCPUが少なくメモリが多めのカスタムインスタンスを作ることで割安にできると思っていたが、東京リージョンでは作成不能なようで騙された。無料トライアルが300$分もあり、今回はこれでタダになる。

サーバーのセットアップ

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が動くインスタンスに送る。