LoginSignup
12
11

More than 5 years have passed since last update.

AWS EC2でFactorioのheadless サーバ構築関連メモ

Last updated at Posted at 2016-05-03

なんとなくやったらできちゃったので備忘録
まずはざっくりWIKIを参考をば・・・
英語版はこちら

※本記事は、ゲームがまだβ版(アーリーアクセス)の時点での記事になります。

What is Factorio?

マルチプレイ?

基本的にマルチプレイをやる際は、以下2通りで可能。

  • 部屋を建てる主のPCの34197番ポートをUDPで開放する
  • サーバにfactorioをインストールする(headless server)

前者は部屋主がFactorioを終了すればワールドも自動的に切断されてしまうが、
後者の場合は、サーバが主となるためいつでもワールドは開放されている状態となる。(誰もプレイしていない場合は、ゲームは一時停止となる模様)

本記事は後者になります。

EC2サーバ構築

  • Amazon Linux AMI 2016.03.0 (HVM), SSD Volume Type - ami-f80e0596 でEC2サーバ作成。ssh接続できるようにしておく。(詳細は省きます 

  • AWS管理コンソールからFactorioデフォルトポートである 34197 ポートをセキュリティグループのインバウンドから許可しておく(別ポートを使用したい場合はこちらも変更する必要あり)

Factorioのインストールと起動

cd /opt

wget --no-check-certificate https://www.factorio.com/get-download/0.12.29/headless/linux64

mv ./linux64 factorio_headless_x64_0.12.29.tar.gz

tar -zxvf factorio_headless_x64_0.12.29.tar.gz

cd factorio/bin/x64/

# hogehogeというセーブデータを作成
./factorio --create hogehoge

# hogehogeデータを起動(auto save間隔15分設定, ポート:34198 指定)
./factorio --start-server hogehoge --autosave-interval 15 --port 34198

# ctrl cで停止

※英語wikiのように、factorioユーザを作って実行させた方がいいかも(作らなくても実行できますが)

useradd factorio
chown -R factorio:factorio /opt/factorio

・ゲーム参加方法

→ ゲーム起動 → プレイ → マルチプレイ → サーバに接続 → 先ほど作成したEC2サーバのパブリックIPとポート(指定した場合)を入力

・configの場所て?

/opt/factorio/config/config.ini

・Mapデータを変えたい場合はどうするの?

→ CLIから作成できないっぽいので、クライアント側(自分のFactorio)でMAP設定、開始して保存したsaveファイルをscpコマンドか何かでサーバへ転送する。
(saveファイルの場所はページ下記を参照)

・factorio をバックグラウンドで起動できないの?

こちらのgithubのfactorio-init通り進め、service factorio help が実行できればほぼokです。

configは/opt/factorio-init/config.exampleを参考に書き換え、同ディレクトリにconfigという名前で保存します。

Saveデータとかの保存場所(クライアント側)

  • Windows (Steam): C:\Users<username>\AppData\Roaming\factorio\saves
  • OSX: ~/Library/"Application Support"/factorio/saves

Factorioのバージョンアップデート方法 - new!

こちらのpythonスクリプトが便利でした。
factorio-updater(github)

※既にサーバにpythonは入ってるとは思いますが、無ければpython要インストール。

使い方例(ver0.12.29 -> 0.12.30へのアップデート例)

ほぼページに書いてある例のまんま使えました

# cdでfactorio-updaterをwgetしたフォルダへ移動後に・・

# 自分のOSで使えるパッケージ確認
python update_factorio.py -l
Available packages:
        core-linux_headless64

# -pで上記パッケージ指定、-fで現バージョン指定、-xで外書き(たぶん)
python update_factorio.py -p core-linux_headless64 -f 0.12.29 -x
Wrote /tmp/core-linux_headless64-0.12.29-0.12.30-update.zip, apply with `factorio --apply-update /tmp/core-linux_headless64-0.12.29-0.12.30-update.zip`

# factorioの実行ファイルがあるフォルダへ移動
cd ~/opt/factorio/bin/x64

# factorio実行時にオプション指定で先ほどWroteされたファイルを指定する。
./factorio --apply-update /tmp/core-linux_headless64-0.12.29-0.12.30-update.zip
[...いろいろログ出力...]

# 無事アップデートし終わったら、アップデートファイルを削除
rm /tmp/core-linux_headless64-0.12.29-0.12.30-update.zip

備考

  • auto saveのintervalは2,3分だとみんなイライラすると思うので、10分以上推奨?(体感的に)
  • P2P設定はonにすると重い、off推奨?(未検証)
  • replay.datはセーブファイルから削除しておくと他の方がロード時軽くなる?(zipは一度展開して再度圧縮)
  • [ゲーム中]@キーでチャット入力可能
  • [ゲーム中]チャット状態で /players でonlineのプレイヤー確認(Luaコマンド許可のみ)
  • [ゲーム中]チャット状態で /c game.removeofflineplayer("username") でオフラインのプレイヤーを削除可能

その他

  • AWSは従量課金制ですので、ご利用は自己責任でお願いします..
  • Factorio楽しいですよ・・是非やりましょう・・(ゲス顔)
12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11