【ゲーム】FactorioをMacでHeadlessサーバーとして起動する方法 (Factrio Headless Server on Mac)

Other
スポンサーリンク

SpaceAge発売でみんなでプレイする機会が増えてきてるのではないでしょうか?
だけどMacでサーバーを建てる記事が見つけられなかったので自分でサーバを立てれたので記事にします。

モバイル開発者であれば家にMacMiniなどがありまして、今回はそれをFactrioをサーバーにしちゃいましょう!

これから説明する方法であれば、IPを固定したりポートを開けるといったことはしなくても大丈夫です! (Factorio側がリレーサーバーを用意しているっぽい)

サーバー設定で使うユーザー情報

まずはサーバーを立ち上げるために必要なFactrioの認証情報を手に入れます。
以下のパスに格納されています。

※事前にSteamでFactrioをインストールして1度でも起動していることが前提

Mac : /Users/userName/Library/Application Support/factorio/player-data.json

Windows : %appdata%\Factorio\player-data.json
Windows+R でフォルダ名を直接指定して開くツールが開くので、そこに「AppData」と入れればよい

player-data.json を任意のテキストエディタで開きます。
その中に 以下のデータを探してメモします。

  "service-username": "userName",
  "service-token": "xxxxxxxxxxxxxxx",

サーバーのバージョン固定

SteamのFactorioを右クリックしてプロパティを開き、ベータタブから任意のサーバーバージョンを選びます。(ここでHeadlessを選択する必要はありません)

サーバー起動用のファイルを作成

サーバーを起動するための実行ファイルと、サーバー設定用の設定ファイルの2つを準備していきます。

サーバ起動ファイル

以下のように引数付きでサーバーを起動するファイルを作成します。
ファイル名は start_server.sh のような名前にして、以下のコードを書き込みます。

※ userName の部分は適宜自分のフォルダ名に合わせて変更してください
※ –server-settings以降のパスはこれから作るサーバー設定ファイルのパスを指定してください

/Users/userName/Library/Application\ Support/Steam/steamapps/common/Factorio/factorio.app/Contents/MacOS/factorio --start-server /Users/userName/Library/Application\ Support/factorio/saves/Ff2.zip --server-settings /Users/userName/Desktop/server/server-settings.json

サーバー設定ファイル

公式のheadlessサーバーデータに入っている設定ファイルを元に作成していきます。
以下が例です。
重要なのが 「username」と「token」で、先ほど調べた player-data.json の設定を記入します。

他の設定は任意に変更してください。

{
  "name": "サーバー名",
  "description": "Welcome the Ff",
  "tags": [ "game", "tags" ],

  "_comment_max_players": "Maximum number of players allowed, admins can join even a full server. 0 means unlimited.",
  "max_players": 4,

  "_comment_visibility": [
    "Private server",
    "not stable IP"
  ],
  "visibility": {
    "public": true,
    "lan": true
  },

  "_comment_credentials": "Your factorio.com login credentials. Required for games with visibility public",
  "username": "player-data.jsonのuserNameを記入,
  "password": "",

  "_comment_token": "Authentication token. May be used instead of 'password' above.",
  "token": "player-data.jsonのservice-tokenを記入",

  "game_password": "サーバーパスワード",

  "_comment_require_user_verification": "When set to true, the server will only allow clients that have a valid Factorio.com account",
  "require_user_verification": true,

  "_comment_max_upload_in_kilobytes_per_second": "optional, default value is 0. 0 means unlimited.",
  "max_upload_in_kilobytes_per_second": 0,

  "_comment_max_upload_slots": "optional, default value is 5. 0 means unlimited.",
  "max_upload_slots": 5,

  "_comment_minimum_latency_in_ticks": "optional one tick is 16ms in default speed, default value is 0. 0 means no minimum.",
  "minimum_latency_in_ticks": 0,

  "_comment_max_heartbeats_per_second": "Network tick rate. Maximum rate game updates packets are sent at before bundling them together. Minimum value is 6, maximum value is 240.",
  "max_heartbeats_per_second": 60,

  "_comment_ignore_player_limit_for_returning_players": "Players that played on this map already can join even when the max player limit was reached.",
  "ignore_player_limit_for_returning_players": false,

  "_comment_allow_commands": "possible values are, true, false and admins-only",
  "allow_commands": "admins-only",

  "_comment_autosave_interval": "Autosave interval in minutes",
  "autosave_interval": 10,

  "_comment_autosave_slots": "server autosave slots, it is cycled through when the server autosaves.",
  "autosave_slots": 5,

  "_comment_afk_autokick_interval": "How many minutes until someone is kicked when doing nothing, 0 for never.",
  "afk_autokick_interval": 0,

  "_comment_auto_pause": "Whether should the server be paused when no players are present.",
  "auto_pause": true,

  "_comment_auto_pause_when_players_connect": "Whether should the server be paused when someone is connecting to the server.",
  "auto_pause_when_players_connect": false,

  "only_admins_can_pause_the_game": true,

  "_comment_autosave_only_on_server": "Whether autosaves should be saved only on server or also on all connected clients. Default is true.",
  "autosave_only_on_server": true,

  "_comment_non_blocking_saving": "Highly experimental feature, enable only at your own risk of losing your saves. On UNIX systems, server will fork itself to create an autosave. Autosaving on connected Windows clients will be disabled regardless of autosave_only_on_server option.",
  "non_blocking_saving": false,

  "_comment_segment_sizes": "Long network messages are split into segments that are sent over multiple ticks. Their size depends on the number of peers currently connected. Increasing the segment size will increase upload bandwidth requirement for the server and download bandwidth requirement for clients. This setting only affects server outbound messages. Changing these settings can have a negative impact on connection stability for some clients.",
  "minimum_segment_size": 25,
  "minimum_segment_size_peer_count": 20,
  "maximum_segment_size": 100,
  "maximum_segment_size_peer_count": 10
}

サーバー起動

最後に ターミナルなどから `./start_server.sh` を実行してあげるとFactrioがコマンドライン上だけで起動しheadlessサーバーの起動成功です!

起動時はSteamを立ち上げる必要はありません。
最新のMacMiniだと消費電力が低いので点けっぱなしでも消費電力が気にならなくて良いです!

それではよい工場ライフをお過ごしください。

スポンサーリンク
Otherその他
スポンサーリンク
シェアボタン ('ω')ノ
ゲーム開発技術ブログ スメラテ すめらて
タイトルとURLをコピーしました