今回は友人とFactorioを一緒にプレイするのにKagoyaのUbuntuのレンタルサーバー(VPS)にFactorioサーバーを建ててみました。
専用サーバーのメリット
今回は専用サーバーを建てることとしたのですが、別に専用サーバーを建てなくても一緒にプレイする友達の誰かがホストとなれば一緒にプレイすることができるのですが、そのホストが必ずプレイしていないと同じマップをプレイすることができません。
(セーブデータだけを共有するという方法もありますが、面倒くさいです。)
そこで今回は専用サーバーを建てることで、友達がいつでも好きな時に入って工場建設できるようにするようにしてみました。
専用サーバーを建てるにあたって、やることはポート開放とサーバーソフトのインストール・起動です。
ポート開放
まずUDPの34197番ポートをiptableを使って解放します。
sudo iptables -A INPUT -p udp --dport 34197 -j ACCEPT
以下のコマンドで変更を確認します。
sudo iptables -L
UFWであれば
まずUDPの34197番ポートをiptableを使って解放します。
sudo ufw allow proto udp from any to any port 34197
以下のコマンドで変更を確認します。
sudo ufw status
サーバーソフトインストール
問題なければFactorioのソフトをインストールしていきます。
サーバーソフトダウンロード
まずサーバーソフトをダウンロードしてきます。
(SteamCMDでもインストールできるようですが、サーバー専用版ではなく容量が大きいので専用ソフトを今回は使用します。)
以下のサイトから専用サーバー用のソフトをダウンロードします。
ダウンロードしたファイルはtar.xzの圧縮ファイルになります。
次にダウンロードした圧縮ファイルをサーバーに移動してインストールしたい場所で解凍します。
今回私はWinSCPでSFTP経由で移動しました。
(直接サーバー上からコマンドでダウンロードしても構いません。)
圧縮ファイルのある場所で以下のコマンドで解凍します。
tar -Jxfv factorio_headless_x64_1.1.70.tar.xz
解凍してしまったら元の圧縮ファイルは削除しても問題ありません。
rm factorio_headless_x64_1.1.69.tar.xz
ゲーム起動・設定
解凍したフォルダの中に実行ファイルがあるので、ゲームを設定・起動していきます。
実行ファイルのパスは以下の場所です。
この実行ファイルに対して操作をしていきます。
なのでこのディレクトリまで移動しましょう。
まずはマップを作成します。
実行ファイルに以下のコマンドでマップを作成することができます。
./factorio --create map_114514 --map-gen-seed 114514
ここでmap_114514は保存するマップ名
114514はマップのシード番号になります。
--map-gen-seedで指定しなければランダムなシード番号でマップが生成されます。
作成されたマップが同ディレクトリにZIPファイルで生成されていることが確認できると思います。
次にサーバーのセッティングをしていきます。
ベースの設定ファイルはfactorio/data/のパスにあります。
設定ファイル例の名前はserver-settings.example.jsonです。
コピーしてserver-settings.jsonという名前にしました。
このjsonファイルを直接書き換えることでサーバーの設定をすることができます。
私の場合はサーバーに入るためのパスワードを追加したかっただけなので先ほどのJSONファイルのgame_passwprdの行を以下のように変更しました。
"game_password": "PASSWORD",
ここでPASSWORDは実際にこのゲームサーバー(ルーム)に入るためのパスワードとなります。
設定を保存したら最後にゲームを起動します。
次に先ほど作成したマップでサーバーソフトを起動していきます。
./factorio --start-server map_114514.zip --server-settings ../../data/server-settings.json
これでサーバーが起動するのでゲームからこのIPアドレス指定で入れることを確認してください。
nohup等を使ってバックグラウンドで動くようにすればSSH接続を切っても問題ありません。
以上で、Factorioのサーバー建設終了です。早速工場を作っていきましょう。