Edited at

factorio headless server の準備

More than 3 years have passed since last update.


factorio について

factorio は 工場を作って、ひたすら自動化していくゲームです。

ゲームの紹介は割愛しますが、プログラマーならハマると思うのでおすすめです。

ゲームクライアント単体でも遊ぶことができますが、友人とオンラインでマルチプレイを楽しむためにサーバーを用意することができます。

このドキュメントでは CentOS7 での手順を記していますので、異なる環境の方は適宜読み替えてください。

また実行は factorio ユーザーを作成して実行するのが良いかと思います。


ポート開放

factorio はデフォルトで UDPプロトコル で 34197番ポート を利用します。

$ sudo firewall-cmd --add-port=34197/udp --permanent

$ sudo firewall-cmd --reload


ゲームの開始

公式サイトから headless server 版をダウンロードして実行します。

// factorio をダウンロード

$ cd ~/
$ wget https://www.factorio.com/get-download/0.12.35/headless/linux64
$ tar zxvf linux64

// ゲームを初期化
$ ~/factorio/bin/x64/factorio --create [ゲーム名]

// ゲームを起動
$ ~/factorio/bin/x64/factorio --start-server [ゲーム名]


ゲームの設定

一度 factorio を起動して終了すると、/config/config.ini というファイルが生成されます。

ポート番号の変更や、自動セーブの頻度などが指定できますので、適宜編集するのが良いでしょう。

// 設定例

autosave_interval=2 // 自動セーブの頻度
port=34197 // factorioのポート番号


バックグラウンド実行

手軽に行うならば以下の方法でバックグラウンド実行できます。

サーバーの再起動にも対応したい方はデーモン化するのが良いでしょう。

// 起動

$ nohup ~/factorio/bin/x64/factorio --start-server [ゲーム名] > /dev/null 2> /dev/null &

// 終了
$ ps aux // factorio を起動したコマンドの PID を探す
$ kill [上で見つけたPIDを入力]


アップデートする

factorio-updater を利用します。

// factorio ディレクトリへ移動

$ cd ~/factorio

// python系のアップデート
$ yum -y install epel-release
$ yum -y install python-pip
$ pip install --upgrade pip

// アップデーターをダウンロード
$ wget https://raw.githubusercontent.com/narc0tiq/factorio-updater/master/update_factorio.py

// 現在インストールされているバージョンを入力
$ python update_factorio.py -p core-linux_headless64 -f 0.12.35 -x

// 現在インストールされているバージョンから順番にアップデートを実行する
$ ~/factorio/bin/x64/factorio --apply-update ~/factorio/tmp/core-linux_headless64-0.12.35-0.12.36-update.zip


参考記事