yukpiz です。最近コロナの影響で外出を控えるようになり、やむを得ずMinecraftやらARKをプレイして引きこもっています。
今回はARK面白いのでマルチ鯖構築してみんなで遊びましょうという事で、LightsailのUbuntu18.04にマルチサーバーを構築してみます。
ARK: Survival Evolved
ちなみに自宅のゲーム用PCなどを使って、ASM(ARK Server Manager)やHamachiを使った個人サーバーの公開方法もあるようですが、ここでは触れません。
今回用意したサーバーは以下です。同サーバー内でMinecraftが稼働していることと、ARKシングルプレイを事前に試したところ、かなりのリソースを利用したことから、少しだけスペックを向上させています。
環境構築
$ sudo dpkg --add-architecture i386
$ sudo apt-get update
$ sudo apt-get install lib32gcc1
steamcmdを導入
$ sudo apt-get install steamcmd
実行すると規約同意の画面が出たりするので、同意してください。
システム設定を追加
$ sudo vim /etc/sysctl.conf
+ fs.file-max=100000$ sudo sysctl -p /etc/sysctl.conf
fs.file-max = 100000$ sudo vim /etc/security/limits.conf
+ * soft nofile 1000000
+ * hard nofile 1000000$ sudo vim /etc/pam.d/common-session
+ session required pam_limits.so
この辺り、本当に必要なのかわかっていませんが、ARKの予期しない動作によってCPU負荷率が向上するらしく、念の為設定しておきます。
以下は各設定値に関して調べた時の資料です。
・https://docs.oracle.com/cd/E35617_01/doc.11116/b66436/perf002.htm
・ https://open-groove.net/linux/memo-etcsecuritylimits-conf/
ARKサーバーをインストール
$ mkdir arkserver
$ cd arkserver
$ steamcmd +login anonymous +force_install_dir . +app_update 376030 +quit... 省略Loading Steam API...Failed to init SDL priority manager: SDL not found
Failed to set thread priority: per-thread setup failed
Failed to set thread priority: per-thread setup failed... 省略Success! App '376030' fully installed.
なんかいくつかのAPI呼び出しが失敗してるように見えますが、関係なさそうなので一旦放置します。
app_updateにはかなりの時間がかかりますので気長に待ちましょう。
問題がなければ上記のように『Success! App ‘376030’ fully installed.
』と出力されます。
ARKサーバーの起動設定
$ sudo vim /lib/systemd/system/ark.service
[Unit]
Description=ARK Server
Wants=network-online.target
After=syslog.target network.target nss-lookup.target network-online.target[Service]
Type=simple
Restart=on-failure
RestartSec=5
StartLimitInterval=60s
StartLimitBurst=3
User=ubuntu
Group=ubuntu
ExecStartPre=/home/ubuntu/steamcmd +login anonymous +force_install_dir /home/ubuntu/arkserver +app_update 376030 +quit
ExecStart=/home/ubuntu/arkserver/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen?Session
Name=example-server -server -logWorkingDirectory=/home/ubuntu/arkserver/ShooterGame/Binaries/Linux LimitNOFILE=100000 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s INT $MAINPID[Install]
WantedBy=multi-user.target
ログインユーザー名が埋め込まれている為、適宜変更してください。
(Lightsailのデフォルトであるubuntuを利用しています。)
上記の設定ファイルが用意できたら、以下を実行します。
# サービスから呼び出されるsteamcmdのシンボリックリンクを用意しておきます
$ ln -s /usr/games/steamcmd ${HOME}/steamcmd
$ sudo systemctl daemon-reload
$ sudo systemctl enable ark.service
Created symlink /etc/systemd/system/multi-user.target.wants/ark.service → /lib/systemd/system/ark.service.$ sudo systemctl start ark
ARKサーバーの起動ログは以下で確認ができます。
$ journalctl -u ark.service
ポート開放を行う
ufwなどのコマンドを利用しても大丈夫ですが、LightsailはWebコンソールからポート開放ができるため、それを利用します。
UDPの7777、27015を開放します。
25565は関係ないポートですので無視してください。
Steamクライアントから接続する
Steamクライアントを起動して、お気に入りのサーバー一覧から新しくサーバーを追加します。
サーバーのIPアドレスを入力して追加すると、起動しているARKマルチサーバーが表示されます。
(表示されない場合、起動に失敗している可能性があるので、サーバーログを確認してください)
サーバーがお気に入りに追加されたら、接続ができるようになります。
接続するとARKが起動し、新しいサバイバーの追加が始まります。
良いARKライフを
Originally published at https://note.com on March 11, 2020.