Think threshold

中の人のIYHにいたる顛末と購入レビュー。ときどき自宅システム構築備忘録。

マルチの工場建設が楽しすぎて止まらない。(SatisFactory Dedicated ServerのDocker版を立てたお話)

工場建設、中毒性が高すぎるぜ!

セールで買ったSatisfactory、マルチでやると楽しいので、独立サーバを立てて遊びました、というお話です。

 

最終納品物までのサーバの経過時間はこれくらい。(440時間ほど)
誰かが入ってるときのみ時間が動く設定で起動させていたのでワールド全体のプレイ時間、という感じですね。

 

●Satisfactoryとは?

有名な人には有名なヤギゲーこと「Goat Simulator」を作った「Coffee Stain Studios」が作った工場建設ゲームです。(パブリッシャーはCoffee Stein Publishing)

工場建設ゲームでは有名なFactorioの3D版とも表現されるゲームです。

satisfactory.unevi.net

 

敵は一応出てきますが、基本はソロプレイ用に設計されているゲームのため、Factorioのように集団で襲ってくることもなく、またリポップはしない仕様?のため、いちど拠点を開拓してしまえばあとはひたすら工場建設に集中することが可能。

 

また、設置した機器を解体すると設置時の素材が100%回収できるため、何度でも設置→解体→再設置が可能です。効率を追い求め、ひたすらラインを引く工場長プレイが可能です。

 

後半のティアで解禁されるホバーパックを背負えば、電力があるところなら空中浮遊も可能(Mincraftでいうところクリエイティブ飛行)のため、立体的な工場建設も可能です。

 

楽しい。こういうゲーム本当に大好きです。

 

マルチプレイの方法

マルチプレイは現在テスト実装なのですが、一応は動作します。

Dedicated Server(個別サーバ)に関してはさらに実験要素が強いです。

 

satisfactory.fandom.com

 

基本はホストとなるプレーヤーに接続するのですが、言い方を変えるとホストがプレイしないとマルチプレイができません。

効率的な工場開発のためには、メンバが各々のタイミングで工場開発をする必要があります。そこで今回はホストがプレイしなくても開発が行えるDedicated Serverを構築したので、備忘録的に残しておきます。

 

 

●サーバを立てる

英語のWikiには丁寧なstep-by-step Guideがあるので、基本的にはこれに従えばサーバの構築はできます。

satisfactory.fandom.com

なお、導入にはSatisfactoryのサーバのみだけでなく、SteamCMDの導入も併せて必要です。

developer.valvesoftware.com

 

先行して記事にしてくれている方もいるので、こちらも参考になります。

dareblo.com

 

●自分で環境を整えるのめんどくさいな?

テストでVMにSteamCMDとSatisfactory Dedicated Serverの構築はしましたが・・・

環境作成が面倒くさいのと、取り扱いを楽にするためにコンテナを利用することにしました。

幸い、Dockerhubには多くのSatisfactory Dedicated Serverのコンテナが公開されています。今回は下記のものを利用しました。

hub.docker.com

使い方はこっちのGitHub上に詳しく記載あり。

github.com

 

 

わが家の仮想基板上にUbuntu Serverを構築し、docker-ceをインストール、コンテナをpullして持ってきます。

docker pull wolveix/satisfactory-server

 

その後、セーブファイルの格納およびコンテナ実行時のファイルアクセスのため、

ユーザとグループを新規で作成します。(今回は仮でtestとしておきます)

また、ユーザが所属するグループIDをメモしておきます。(今回の環境では1001でした)

www.linuxmaster.jp

 

上記のユーザでコンテナがアクセスするディレクトリを作成します。

今回は「/home/test/satisfactory-docker-config/config/」ディレクトリを作成します。

 

その後、以下のようにコマンドで実行してやればOKです。

ポートはデフォルトの7777/15000/15777(全てUDP)です。

 

sudo docker run -d --name=satisfactory-server -h satisfactory-server -e MAXPLAYERS=4 -e PGID=1001 -e PUID=1001 -e STEAMBETA=false -v /home/test/satisfactory-docker-config/config:/config -p 7777:7777/udp -p 15000:15000/udp -p 15777:15777/udp wolveix/satisfactory-server:latest

 

なお自動セーブは今回のコンテナの場合、デフォルト値が5分ごと3回となっており、

後述の問題が発生したときに15分ごと4回へと変更しています。

変更後のdockerコマンドは以下のとおり。

sudo docker run -d --name=satisfactory-server -h satisfactory-server -e MAXPLAYERS=4 -e AUTOSAVENUM=4 -e AUTOSAVEINTERVAL=900 -e PGID=1001 -e PUID=1001 -e STEAMBETA=false -v /home/test/satisfactory-docker-config/config:/config -p 7777:7777/udp -p 15000:15000/udp -p 15777:15777/udp wolveix/satisfactory-server:latest

 

あとはサーバ自体にアクセス権の設定と、DNSベースでアクセスするための設定とルータのポート開放をやってやればOKです。

 

なお、サーバが起動した際に自動でコンテナを起動する場合、追加で以下のオプションを入れておけばOKです。設定はお好みで。

qiita.com

 

●コンテナのアップデート

この記事を書いている途中でまさかのUpdate6のリリース。

対応したDedicated Serverも数日でリリースされたため、サーバコンテナの更新を行います。

www.youtube.com

アップデートに関しては再度pullコマンドで最新版のコンテナを引っ張ってきてやればOKです。SteamCMDも含めてコンテナ化されているので、非常に楽です。コンテナ様々。あとはlatestオプションを付けて起動してやるだけ。

 

●現時点での最終ティアまで終わってしまったので

上記の設定で4人プレイ、400時間超プレイしてきましたが、

・オブジェクト40000弱

・コンベア109km

・パイプライン25km

・鉄道網19km

ほど発展しましたが、概ね問題なく動作しています。

問題点は後述。

 

●おまけ:まぁExperimentalなので。

・ローカルのセーブデータ保存先

セーブデータをサーバへアップロードする際は、ローカルのクライアントから(ゲームのメニュー上から)アップロードするため、ローカル側のセーブデータの保存場所へセーブファイルを置く必要がありますが、パスは以下の通り。

%appdata%\..\Local\FactoryGame\Saved\SaveGames

shockbyte.com

 

・遭遇する問題1:瞬間的なタイムリープ(ロールバック)が発生する

おそらく同期の問題かと思いますが、ハイパーチューブを出た直後に一瞬巻き戻る現象が頻繁に発生。

VMへのCPU割当を2vCPUから4vCPUにすると大幅に低減したので、おそらくCPU資源が足りないのかな、と思っています(Ryzen5 Pro 3400GE搭載のESXiです)

 

・遭遇する問題2:鉄道に乗った状態で落ちるとどうにもならなくなる

プレイ中に1度、鉄道に乗っている状態でUnityがクラッシュした際、

「列車の中に人が乗っている判定になり、乗車も解体もできなくなる」事象が発生しました。

通常のプレイではどうしようもなくなったため、以下のサイトを使ってセーブデータを直接弄って列車を削除して対応しました。

今のところセーブデータを強制的に書き換えたものの、その後問題は発生していません。

satisfactory-calculator.com

 

・遭遇する問題3:資源鉱脈の岩が何故か復活したり壊せなかったりする

何故か鉱脈を塞いでいる岩(爆薬で破壊が必要な岩)が壊せなかったり、破壊後採掘機を設置しているにも関わらず復活する(そして壊せない)現象が出ています。

 

上記の事象が発生した場合、サーバからセーブファイルをダウンロード→一旦シングルプレイで破壊→再度サーバへセーブデータをアップロード、という方法で運用中。

 

●おまけ2:SatisFactoryはセールで購入できます!君も沼の工場長生活にデビューしよう!

ダイマ

store.steampowered.com

https://store.epicgames.com/ja/p/satisfactory