はじめに
エンジニアならみんな大好きFactorioの初正式版が、昨年8月にリリースされたのは記憶に新しいですが、2021年1月26日に次の安定版1.1.19がリリースされました。
今回、これを機にメンバーをFactorio沼にハメてやろうと思い、EC2にマルチプレイ用のサーバを立てたので、その手順をメモしておきます。
前提
- Factorioを購入済み
- 当たり前といえば当たり前ですが、プレイする人全員購入する必要があります。
- Factorioアカウントを作成済み
- 公式ページから無料でできます。Steamアカウントでも代用可能っぽいです(未確認)。
- EC2構築済み
- 気分でt2.mediumで構築しました。が、microでも動くんじゃないかなー。
- EC2にEIPを割り当て
- 毎回接続設定変えるのがめんどくさいので、、、
- Mac環境
- すみません、Mac環境のみ対象です。Windowsの場合は適宜読み替えればできると思います。
1. EC2の穴空け作業
セキュリティグループのインバウンドに以下を設定
- SSH(マイIPにしてね)
- UDP(ソースは任意)今回はカスタムポート番号を使うので、ポート:34198で設定
※Factorioサーバのデフォルトポートは34197番です。
2. EC2にソースを配置
今回はSSHできる環境なはずなので、SCPでアップロードする手順にします。サーバ上でファイルを直接取り込んでも問題ないです。
公式サイトから最新安定版を入手
https://factorio.com/get-download/1.1.19/headless/linux64
上記をローカルにダウンロードする。(2021/01/27現在の最新安定版)
公式サイトから選んでダウンロードでもOKです。
その場合、ダウンロードファイルはlinux64を選択してください。
最新安定版を落とす理由ですが、Steam等でプレイするFactorioクライアントとバージョンを合わせるためです。
クライアントとサーバのバージョンが一致していないとプレイできません…
scpでEC2にソースを配置
scp -i PEMの場所.pem ~/Downloads/factorio_headless_x64_1.0.0.tar.xz ec2-user@IPアドレス:~
解凍
xz -dv factorio_headless_x64_1.1.19.tar.xz
tar xfv factorio_headless_x64_1.1.19.tar
factorioディレクトリに移動
上記手順でfactorioディレクトリが作成されているはずなので、移動します。
以降はfactorioディレクトリ配下で実行します。
cd factorio
3. 初回起動と動作確認
セーブデータ作成
./bin/x64/factorio --create ./saves/my-save.zip
34198番ポートで起動
./bin/x64/factorio --start-server ./saves/my-save.zip --port 34198
動作確認
コンソール画面は閉じないように気をつけてください。
Factorioのクライアントを起動→マルチプレイ→アドレスに接続
ここでFactorioアカウントを求められると思うので入力。
パブリックIP:34198
の形式でアドレスを入力し、接続!
無事にマップが表示されたら成功です。
そのままゲームを続けても良いですが、好きなマップにしたいのと、コンソール閉じても大丈夫なように、以降の手順で設定します。
一旦、終了
クライアント側Factorioを終了し、コンソールで起動しているサーバ側FactorioをCTR+C
で終了します。
4. 好きなマップ作成と設定変更
Factorioはなんといっても、好きな条件でマップを厳選するのが醍醐味!
マルチプレイ向きの過酷な設定にしてもよし、初心者向け設定にしてもよし!
クライアント側Factorioで好きなマップのセーブデータを作成
まず、クライアント側Factorioを起動し、ニューゲームで好きなマップを作成してください。
余談ですが、気に入ったシード値を保存しておくと、いろんなマップを比較できます。
ゲームスタート後、好きな名前でセーブして、ゲームを終了してください。
セーブデータをサーバに配置
- Macの場合、以下の場所にセーブデータがあるので移動します。
- lsコマンドで目的のセーブデータのzipファイルがあることを確認してください。
- 最後に、scpしやすいようにDownloadsディレクトリにセーブデータをコピーします。
- scpで、サーバ上の
~/factorio/saves
配下にzipファイルをアップロードします。
cd ~/Library/Application\ Support/factorio/saves
ls →さっきつけた名前のセーブデータを探す
cp favorite-map.zip ~/Downloads
scp -i PEMの場所.pem ~/Downloads/favorite-map.zip ec2-user@IPアドレス:~/factorio/saves
config.iniを編集
上記手順3にて、一度でもサーバを起動していれば、~/factorio/config
配下にconfig.ini
ファイルがあると思います。
今回は、オートセーブの設定と起動ポートを変更します。
autosave-interval=15
autosave-slots=2
port=34198
5. サーバ永続化
コンソールを閉じてもFactorioを起動しっぱなしにして、24時間インできるようにします。
nohup ./bin/x64/factorio --start-server ./saves/favarite-map.zip > /dev/null 2> /dev/null &
終了
永続化時の終了は、Factorioのプロセスを探してキルしてください。
$ ps aux | grep factorio
$ kill [PID]
あとは遊ぶだけ
動作確認時と同じ方法でサーバに接続し、好きなマップでマルチプレイを楽しんでください!
6. アップデート
参考文献1を参照ください。
自分でもできたら記事更新します。(今のところやる必要がないため)